mirror of
https://github.com/drewcassidy/yaclog.git
synced 2024-09-01 14:58:58 +00:00
Compare commits
3 Commits
76d2d55af8
...
7a8b3c7160
Author | SHA1 | Date | |
---|---|---|---|
7a8b3c7160 | |||
b0d6288ae8 | |||
bc6d0e1886 |
13
.github/workflows/python-publish.yml
vendored
13
.github/workflows/python-publish.yml
vendored
@ -77,10 +77,11 @@ jobs:
|
||||
password: ${{ secrets.PYPI_API_TOKEN }}
|
||||
|
||||
- name: Publish to Github
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
files: dist/*
|
||||
name: ${{ steps.yaclog-show.outputs.name }}
|
||||
body_path: ${{ steps.yaclog-show.outputs.body_file }}
|
||||
run: |
|
||||
gh release create ${{ github.ref_name }} \
|
||||
--notes-file "${{ steps.yaclog-show.outputs.body_file }}" \
|
||||
--title "${{ steps.yaclog-show.outputs.name }}"
|
||||
|
||||
gh release upload ${{ github.ref_name }} dist/*
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
GH_TOKEN: ${{ github.token }}
|
30
CHANGELOG.md
30
CHANGELOG.md
@ -2,31 +2,49 @@
|
||||
|
||||
All notable changes to this project will be documented in this file
|
||||
|
||||
## Version 1.4.1 - 2024-08-25
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed escape characters being included in github actions body file
|
||||
|
||||
### Added
|
||||
|
||||
- Added pypi tags for python 3.11 and 3.12
|
||||
|
||||
|
||||
## Version 1.4.0 - 2024-08-25
|
||||
|
||||
### Added
|
||||
|
||||
- Added a github action to the repository. The action can create new releases and fetch version information. For more information see the "Github Actions" page in the handbook
|
||||
|
||||
|
||||
## Version 1.3.0 - 2024-08-08
|
||||
|
||||
### Added
|
||||
|
||||
- added a `--version` option to `yaclog show` that prints just the version number
|
||||
- Added a `--version` option to `yaclog show` that prints just the version number
|
||||
|
||||
### Changed
|
||||
|
||||
- removed support for Click 7 as a dependency
|
||||
- Removed support for Click 7 as a dependency
|
||||
|
||||
|
||||
## Version 1.2.0 - 2024-04-16
|
||||
|
||||
### Added
|
||||
|
||||
- added the `-s` option to `yaclog release` to increment arbitrary version segments
|
||||
- added the `-n` option to `yaclog release` to create a new release instead of releasing a new one
|
||||
- added the `-y` option to `yaclog release` to answer "yes" to all confirmation dialogs. Use with caution!
|
||||
- Added the `-s` option to `yaclog release` to increment arbitrary version segments
|
||||
- Added the `-n` option to `yaclog release` to create a new release instead of releasing a new one
|
||||
- Added the `-y` option to `yaclog release` to answer "yes" to all confirmation dialogs. Use with caution!
|
||||
|
||||
|
||||
## Version 1.1.2 - 2022-12-29
|
||||
|
||||
### Changed
|
||||
|
||||
- yaclog now only tries to use git when invoked with a command that needs it, meaning most sub commands can now be used on systems without git
|
||||
- Yaclog now only tries to use git when invoked with a command that needs it, meaning most sub commands can now be used on systems without git
|
||||
|
||||
|
||||
## Version 1.1.1 - 2022-08-15
|
||||
|
21
action.yaml
21
action.yaml
@ -15,13 +15,7 @@ inputs:
|
||||
description: >
|
||||
Creates a new release and commits it if set. Directly passed to the arguments of `yaclog release`.
|
||||
Can be a version number or an increment tag like `--major`, `--minor`, or `--patch`.
|
||||
The resulting commit and tag will be pushed back to the repo, but the workflow must have write permissions.
|
||||
Add
|
||||
```yaml
|
||||
permissions:
|
||||
contents: write
|
||||
```
|
||||
to your workflow to allow this.
|
||||
The resulting commit and tag will NOT be pushed back to the repo. You must add a step to do this yourself
|
||||
|
||||
outputs:
|
||||
name:
|
||||
@ -68,15 +62,4 @@ runs:
|
||||
# header=Version 1.3.0 - 2024-08-08
|
||||
# version=1.3.0
|
||||
# body_file={path to file containing version body}
|
||||
# changelog={path to changelog}
|
||||
|
||||
- name: Push Changes
|
||||
if: ${{ inputs.release }}
|
||||
shell: bash
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
run: |
|
||||
git config --global user.name "github-actions"
|
||||
git config --global user.email "github-actions@github.com"
|
||||
git push
|
||||
git push --tags
|
||||
# changelog={path to changelog}
|
17
docs/conf.py
17
docs/conf.py
@ -4,7 +4,7 @@
|
||||
# list see the documentation:
|
||||
# https://www.sphinx-doc.org/en/master/usage/configuration.html
|
||||
|
||||
from pkg_resources import get_distribution
|
||||
from importlib.metadata import version
|
||||
|
||||
# -- Path setup --------------------------------------------------------------
|
||||
|
||||
@ -22,8 +22,9 @@ sys.path.insert(0, os.path.abspath('..'))
|
||||
project = 'Yaclog'
|
||||
copyright = '2021, Andrew Cassidy'
|
||||
author = 'Andrew Cassidy'
|
||||
release = get_distribution('yaclog').version
|
||||
release = version('yaclog')
|
||||
version = '.'.join(release.split('.')[:3])
|
||||
ref = version if len(release.split('.')) == 3 else 'main'
|
||||
|
||||
# -- General configuration ---------------------------------------------------
|
||||
|
||||
@ -36,9 +37,13 @@ extensions = [
|
||||
'sphinx_rtd_theme',
|
||||
'sphinx.ext.autodoc',
|
||||
'sphinx.ext.intersphinx',
|
||||
'sphinx_jinja'
|
||||
]
|
||||
|
||||
myst_heading_anchors = 2
|
||||
myst_enable_extensions = [
|
||||
"colon_fence"
|
||||
]
|
||||
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
templates_path = ['_templates']
|
||||
@ -76,6 +81,8 @@ autodoc_default_options = {
|
||||
'undoc-members': True,
|
||||
}
|
||||
|
||||
|
||||
|
||||
# -- Options for Intersphinx -------------------------------------------------
|
||||
|
||||
# This config value contains the locations and names of other projects that
|
||||
@ -85,3 +92,9 @@ intersphinx_mapping = {
|
||||
'python': ('https://docs.python.org/3', None),
|
||||
'packaging': ('https://packaging.pypa.io/en/latest/', None),
|
||||
}
|
||||
|
||||
jinja_globals = {
|
||||
'version': version,
|
||||
'release': release,
|
||||
'ref': ref,
|
||||
}
|
141
docs/handbook/github_actions.md
Normal file
141
docs/handbook/github_actions.md
Normal file
@ -0,0 +1,141 @@
|
||||
# Github Actions
|
||||
|
||||
Yaclog makes an action available for Github Actions and compatible CI systems.
|
||||
|
||||
## The Yaclog Action
|
||||
|
||||
To use the Yaclog action add the following to your workflow steps
|
||||
|
||||
````{jinja}
|
||||
```yaml
|
||||
- name: Get version info
|
||||
uses: drewcassidy/yaclog@{{ ref }}
|
||||
id: yaclog
|
||||
```
|
||||
````
|
||||
|
||||
### Inputs
|
||||
|
||||
```{confval} release
|
||||
:type: string
|
||||
|
||||
When set, creates a new release and commits it. Directly passed to the arguments of `yaclog release --yes --commit`.
|
||||
|
||||
Can be a version number or an increment tag like `--major`, `--minor`, or `--patch`.
|
||||
The resulting commit and tag will NOT be pushed back to the repo. You must add a step to do this yourself
|
||||
```
|
||||
|
||||
```{confval} markdown
|
||||
:type: boolean
|
||||
:default: true
|
||||
|
||||
If the output should be in markdown format or not. Equivalent to the `--markdown` flag
|
||||
```
|
||||
|
||||
### Outputs
|
||||
|
||||
```{confval} version
|
||||
The current version number, equivalent to the output of `yaclog show --version`. For example, `1.3.1`
|
||||
```
|
||||
|
||||
```{confval} name
|
||||
The most recent version name, equivalent to the output of `yaclog show --name`. For example, `Version 1.3.0`
|
||||
```
|
||||
|
||||
```{confval} header
|
||||
The entire header for the most recent version, equivalent to the output of `yaclog show --header`. For example, `Version 1.3.0 - 2024-08-08`
|
||||
```
|
||||
|
||||
```{confval} body_file
|
||||
The path to a temporary file containing the body of the most recent version. Contents equivalent to `yaclog show --body`
|
||||
```
|
||||
|
||||
```{confval} changelog
|
||||
The path to the changelog file. Usually `CHANGELOG.md` in the current directory.
|
||||
```
|
||||
|
||||
## Example Usage
|
||||
|
||||
### Get changelog information in your Build workflow
|
||||
|
||||
````{jinja}
|
||||
```yaml
|
||||
name: Build
|
||||
|
||||
on:
|
||||
push:
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Mod Repo
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- uses: drewcassidy/yaclog@{{ ref }}
|
||||
id: yaclog
|
||||
|
||||
# Your build and test actions go here
|
||||
|
||||
- name: Publish to Github
|
||||
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
|
||||
run: |
|
||||
gh release create {{ '${{ github.ref_name }}' }} \
|
||||
--notes-file "{{ '${{ steps.yaclog.outputs.body_file }}' }}" \
|
||||
--title "{{ '${{ steps.yaclog.outputs.name }}' }}"
|
||||
env:
|
||||
GH_TOKEN: {{ '${{ github.token }}' }}
|
||||
|
||||
```
|
||||
````
|
||||
|
||||
### Workflow to make a new release
|
||||
|
||||
If you want to be able to create a new release for your project directly from the Github UI, you can make a new workflow
|
||||
you can dispatch directly.
|
||||
|
||||
Please note that this workflow does NOT create any releases in Github or any package managers. Instead, your normal build workflow should do this when it detects a push to a tag.
|
||||
|
||||
````{jinja}
|
||||
```yaml
|
||||
name: Release
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
release:
|
||||
description: 'type of release to use'
|
||||
required: true
|
||||
default: 'patch'
|
||||
type: choice
|
||||
options:
|
||||
- major
|
||||
- minor
|
||||
- patch
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
jobs:
|
||||
yaclog-release:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Mod Repo
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Yaclog Release
|
||||
uses: drewcassidy/yaclog@{{ ref }}
|
||||
with:
|
||||
release: '--{{ '${{ inputs.release }}' }}'
|
||||
|
||||
- name: Push Changes
|
||||
run: |
|
||||
git config --global user.name "github-actions"
|
||||
git config --global user.email "github-actions@github.com"
|
||||
git push
|
||||
git push --tags
|
||||
env:
|
||||
GH_TOKEN: {{ '${{ github.token }}' }}
|
||||
```
|
||||
````
|
@ -8,4 +8,5 @@ maxdepth: 3
|
||||
getting_started
|
||||
changelog_files
|
||||
commands
|
||||
github_actions
|
||||
```
|
@ -22,6 +22,8 @@ classifiers = [
|
||||
"Programming Language :: Python :: 3.8",
|
||||
"Programming Language :: Python :: 3.9",
|
||||
"Programming Language :: Python :: 3.10",
|
||||
"Programming Language :: Python :: 3.11",
|
||||
"Programming Language :: Python :: 3.12",
|
||||
"Topic :: Text Processing :: Markup :: Markdown",
|
||||
"Topic :: Software Development :: Version Control :: Git",
|
||||
"Topic :: Utilities"
|
||||
@ -43,6 +45,7 @@ docs = [
|
||||
"sphinx-click >= 2.7",
|
||||
"sphinx-rtd-theme",
|
||||
"myst-parser >= 0.14",
|
||||
"sphinx-jinja >=1.2.1",
|
||||
]
|
||||
|
||||
[project.scripts]
|
||||
|
@ -16,6 +16,7 @@
|
||||
|
||||
import datetime
|
||||
import os.path
|
||||
from sys import stdout
|
||||
|
||||
import click
|
||||
|
||||
@ -91,7 +92,7 @@ def show(obj: Changelog, all_versions, markdown, mode, version_names, gh_actions
|
||||
}
|
||||
|
||||
str_func = functions[mode]
|
||||
kwargs = {'md': markdown, 'color': True}
|
||||
kwargs = {'md': markdown, 'color': stdout.isatty()}
|
||||
|
||||
try:
|
||||
if all_versions:
|
||||
@ -115,6 +116,7 @@ def show(obj: Changelog, all_versions, markdown, mode, version_names, gh_actions
|
||||
if gh_actions:
|
||||
import tempfile
|
||||
|
||||
kwargs['color'] = False
|
||||
all_modes = [ 'name', 'header', 'version' ]
|
||||
outputs = [f'{mode}={sep.join([functions[mode](v, kwargs) for v in versions])}' for mode in all_modes]
|
||||
click.echo('\n'.join(outputs))
|
||||
|
Loading…
Reference in New Issue
Block a user