mirror of
https://github.com/drewcassidy/yaclog.git
synced 2024-09-01 14:58:58 +00:00
Compare commits
12 Commits
Author | SHA1 | Date | |
---|---|---|---|
5a6cb51d71 | |||
52fc36ab70 | |||
c696071b8f | |||
b0419dad80 | |||
2bfaa78053 | |||
524a1da4c6 | |||
acedf2b401 | |||
21b530c256 | |||
04a9c712f9 | |||
d35b7fee83 | |||
38560702f4 | |||
2d1cc4ede4 |
2
.github/workflows/python-publish.yml
vendored
2
.github/workflows/python-publish.yml
vendored
@ -64,7 +64,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Get version name and body
|
- name: Get version name and body
|
||||||
run: |
|
run: |
|
||||||
echo "VERSION_TILE=Version $(yaclog show -n)" >> $GITHUB_ENV
|
echo "VERSION_TILE=$(yaclog show -n)" >> $GITHUB_ENV
|
||||||
echo "$(yaclog show -mb)" >> RELEASE.md
|
echo "$(yaclog show -mb)" >> RELEASE.md
|
||||||
|
|
||||||
- name: Publish to PyPI
|
- name: Publish to PyPI
|
||||||
|
32
CHANGELOG.md
32
CHANGELOG.md
@ -2,7 +2,27 @@
|
|||||||
|
|
||||||
All notable changes to this project will be documented in this file
|
All notable changes to this project will be documented in this file
|
||||||
|
|
||||||
## 1.0.0 - 2021-05-07
|
## Version 1.0.2 - 2021-05-12
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Updated to support Click version 8
|
||||||
|
- Modified module documentation page titles to include a module role
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Fixed tag names with spaces in versions
|
||||||
|
|
||||||
|
|
||||||
|
## Version 1.0.1 - 2021-05-10
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Fixed broken header in new changelogs
|
||||||
|
- Improved consistency in command documentation metavars
|
||||||
|
|
||||||
|
|
||||||
|
## Version 1.0.0 - 2021-05-07
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
@ -25,7 +45,7 @@ All notable changes to this project will be documented in this file
|
|||||||
- Extra newlines are added between versions to improve readability of the raw markdown file.
|
- Extra newlines are added between versions to improve readability of the raw markdown file.
|
||||||
|
|
||||||
|
|
||||||
## 0.3.3 - 2021-04-27
|
## Version 0.3.3 - 2021-04-27
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
@ -40,7 +60,7 @@ All notable changes to this project will be documented in this file
|
|||||||
- `release` now works with logs that have only unreleased changes
|
- `release` now works with logs that have only unreleased changes
|
||||||
|
|
||||||
|
|
||||||
## 0.3.2 - 2021-04-24
|
## Version 0.3.2 - 2021-04-24
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
@ -56,7 +76,7 @@ All notable changes to this project will be documented in this file
|
|||||||
- `release` and `entry` commands now work using empty changelogs.
|
- `release` and `entry` commands now work using empty changelogs.
|
||||||
|
|
||||||
|
|
||||||
## 0.3.1 - 2021-04-24
|
## Version 0.3.1 - 2021-04-24
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
@ -69,7 +89,7 @@ All notable changes to this project will be documented in this file
|
|||||||
- `release` command for creating releases
|
- `release` command for creating releases
|
||||||
|
|
||||||
|
|
||||||
## 0.2.0 - 2021-04-19
|
## Version 0.2.0 - 2021-04-19
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
@ -83,7 +103,7 @@ All notable changes to this project will be documented in this file
|
|||||||
- Parser can now handle setext-style headers and H2s not conforming to the schema.
|
- Parser can now handle setext-style headers and H2s not conforming to the schema.
|
||||||
|
|
||||||
|
|
||||||
## 0.1.0 - 2021-04-16
|
## Version 0.1.0 - 2021-04-16
|
||||||
|
|
||||||
First release
|
First release
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
Changelog Module
|
:py:mod:`changelog` Module
|
||||||
================
|
==========================
|
||||||
|
|
||||||
.. automodule:: yaclog.changelog
|
.. automodule:: yaclog.changelog
|
||||||
:members:
|
:members:
|
@ -1,5 +1,5 @@
|
|||||||
Markdown Module
|
:py:mod:`markdown` Module
|
||||||
===============
|
=========================
|
||||||
|
|
||||||
.. automodule:: yaclog.markdown
|
.. automodule:: yaclog.markdown
|
||||||
:members:
|
:members:
|
@ -1,5 +1,5 @@
|
|||||||
Version Module
|
:py:mod:`version` Module
|
||||||
==============
|
========================
|
||||||
|
|
||||||
.. automodule:: yaclog.version
|
.. automodule:: yaclog.version
|
||||||
:members:
|
:members:
|
@ -29,7 +29,7 @@ project_urls =
|
|||||||
|
|
||||||
[options]
|
[options]
|
||||||
install_requires =
|
install_requires =
|
||||||
Click ~= 7.0
|
Click >= 7.0, < 9.0
|
||||||
GitPython >= 3
|
GitPython >= 3
|
||||||
packaging >= 20
|
packaging >= 20
|
||||||
python_requires = >= 3.8
|
python_requires = >= 3.8
|
||||||
|
@ -28,6 +28,12 @@ class TestCreation(unittest.TestCase):
|
|||||||
self.assertTrue(os.path.exists(os.path.abspath(location)), 'yaclog init did not create a file')
|
self.assertTrue(os.path.exists(os.path.abspath(location)), 'yaclog init did not create a file')
|
||||||
self.assertIn(location, result.output, "yaclog init did not echo the file's correct location")
|
self.assertIn(location, result.output, "yaclog init did not echo the file's correct location")
|
||||||
|
|
||||||
|
with open(location, 'r') as fp:
|
||||||
|
self.assertEqual('# Changelog\n', fp.readline())
|
||||||
|
self.assertEqual('\n', fp.readline())
|
||||||
|
self.assertEqual('All notable changes to this project will be documented in this file',
|
||||||
|
fp.readline().rstrip())
|
||||||
|
|
||||||
with open(location, 'w') as fp:
|
with open(location, 'w') as fp:
|
||||||
fp.write(err_str)
|
fp.write(err_str)
|
||||||
|
|
||||||
@ -204,7 +210,7 @@ class TestRelease(unittest.TestCase):
|
|||||||
runner.invoke(cli, ['init']) # create the changelog
|
runner.invoke(cli, ['init']) # create the changelog
|
||||||
runner.invoke(cli, ['entry', '-b', 'entry number 1'])
|
runner.invoke(cli, ['entry', '-b', 'entry number 1'])
|
||||||
|
|
||||||
result = runner.invoke(cli, ['release', '1.0.0', '-c'], input='y\n')
|
result = runner.invoke(cli, ['release', 'Version 1.0.0', '-c'], input='y\n')
|
||||||
check_result(self, result)
|
check_result(self, result)
|
||||||
self.assertIn('Created commit', result.output)
|
self.assertIn('Created commit', result.output)
|
||||||
self.assertIn('Created tag', result.output)
|
self.assertIn('Created tag', result.output)
|
||||||
|
@ -223,7 +223,7 @@ class Changelog:
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, path=None,
|
def __init__(self, path=None,
|
||||||
preamble: str = "Changelog\n\nAll notable changes to this project will be documented in this file"):
|
preamble: str = "# Changelog\n\nAll notable changes to this project will be documented in this file"):
|
||||||
"""
|
"""
|
||||||
Contents will be automatically read from disk if the file exists
|
Contents will be automatically read from disk if the file exists
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ from yaclog.changelog import Changelog
|
|||||||
|
|
||||||
|
|
||||||
@click.group()
|
@click.group()
|
||||||
@click.option('--path', envvar='YACLOG_PATH', default='CHANGELOG.md', show_default=True,
|
@click.option('--path', envvar='YACLOG_PATH', metavar='FILE', default='CHANGELOG.md', show_default=True,
|
||||||
type=click.Path(dir_okay=False, writable=True, readable=True),
|
type=click.Path(dir_okay=False, writable=True, readable=True),
|
||||||
help='Location of the changelog file.')
|
help='Location of the changelog file.')
|
||||||
@click.version_option()
|
@click.version_option()
|
||||||
@ -131,8 +131,8 @@ def tag(obj: Changelog, add, tag_name: str, version_name: str):
|
|||||||
|
|
||||||
|
|
||||||
@cli.command(short_help='Add entries to the changelog.')
|
@cli.command(short_help='Add entries to the changelog.')
|
||||||
@click.option('--bullet', '-b', 'bullets', metavar='text', multiple=True, type=str, help='Add a bullet point.')
|
@click.option('--bullet', '-b', 'bullets', metavar='TEXT', multiple=True, type=str, help='Add a bullet point.')
|
||||||
@click.option('--paragraph', '-p', 'paragraphs', metavar='text', multiple=True, type=str, help='Add a paragraph')
|
@click.option('--paragraph', '-p', 'paragraphs', metavar='TEXT', multiple=True, type=str, help='Add a paragraph')
|
||||||
@click.argument('section_name', metavar='SECTION', type=str, default='', required=False)
|
@click.argument('section_name', metavar='SECTION', type=str, default='', required=False)
|
||||||
@click.argument('version_name', metavar='VERSION', type=str, default=None, required=False)
|
@click.argument('version_name', metavar='VERSION', type=str, default=None, required=False)
|
||||||
@click.pass_obj
|
@click.pass_obj
|
||||||
@ -172,13 +172,20 @@ def entry(obj: Changelog, bullets, paragraphs, section_name, version_name):
|
|||||||
|
|
||||||
|
|
||||||
@cli.command(short_help='Release versions.')
|
@cli.command(short_help='Release versions.')
|
||||||
@click.option('-M', '--major', 'rel_seg', flag_value=0, default=None, help='Increment major version number.')
|
@click.option('-M', '--major', 'rel_seg', flag_value=0, type=int, default=None,
|
||||||
@click.option('-m', '--minor', 'rel_seg', flag_value=1, help='Increment minor version number.')
|
help='Increment major version number.')
|
||||||
@click.option('-p', '--patch', 'rel_seg', flag_value=2, help='Increment patch number.')
|
@click.option('-m', '--minor', 'rel_seg', flag_value=1, type=int,
|
||||||
@click.option('-a', '--alpha', 'pre_seg', flag_value='a', default=None, help='Increment alpha version number.')
|
help='Increment minor version number.')
|
||||||
@click.option('-b', '--beta', 'pre_seg', flag_value='b', help='Increment beta version number.')
|
@click.option('-p', '--patch', 'rel_seg', flag_value=2, type=int,
|
||||||
@click.option('-r', '--rc', 'pre_seg', flag_value='rc', help='Increment release candidate version number.')
|
help='Increment patch number.')
|
||||||
@click.option('-f', '--full', 'pre_seg', flag_value='', help='Clear the prerelease value creating a full release.')
|
@click.option('-a', '--alpha', 'pre_seg', flag_value='a', type=str, default=None,
|
||||||
|
help='Increment alpha version number.')
|
||||||
|
@click.option('-b', '--beta', 'pre_seg', flag_value='b', type=str,
|
||||||
|
help='Increment beta version number.')
|
||||||
|
@click.option('-r', '--rc', 'pre_seg', flag_value='rc', type=str,
|
||||||
|
help='Increment release candidate version number.')
|
||||||
|
@click.option('-f', '--full', 'pre_seg', flag_value='',
|
||||||
|
help='Clear the prerelease value creating a full release.')
|
||||||
@click.option('-c', '--commit', is_flag=True,
|
@click.option('-c', '--commit', is_flag=True,
|
||||||
help='Create a git commit tagged with the new version number. '
|
help='Create a git commit tagged with the new version number. '
|
||||||
'If there are no changes to commit, the current commit will be tagged instead.')
|
'If there are no changes to commit, the current commit will be tagged instead.')
|
||||||
@ -255,12 +262,16 @@ def release(obj: Changelog, version_name, rel_seg, pre_seg, commit):
|
|||||||
click.confirm(' '.join(message), abort=True)
|
click.confirm(' '.join(message), abort=True)
|
||||||
|
|
||||||
if tracked > 0:
|
if tracked > 0:
|
||||||
commit = repo.index.commit(f'Version {cur_version.name}\n\n{cur_version.body()}')
|
commit = repo.index.commit(f'Release {cur_version.name}\n\n{cur_version.body()}')
|
||||||
click.echo(f"Created commit {click.style(repo.head.commit.hexsha[0:7], fg='green')}")
|
click.echo(f"Created commit {click.style(repo.head.commit.hexsha[0:7], fg='green')}")
|
||||||
else:
|
else:
|
||||||
commit = repo.head.commit
|
commit = repo.head.commit
|
||||||
|
|
||||||
repo_tag = repo.create_tag(cur_version.name, ref=commit, message=cur_version.body(False))
|
short_version, *_ = yaclog.version.extract_version(cur_version.name)
|
||||||
|
if not short_version:
|
||||||
|
short_version = cur_version.name.replace(' ', '-')
|
||||||
|
|
||||||
|
repo_tag = repo.create_tag(short_version, ref=commit, message=cur_version.body(False))
|
||||||
click.echo(f"Created tag {click.style(repo_tag.name, fg='green')}.")
|
click.echo(f"Created tag {click.style(repo_tag.name, fg='green')}.")
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user