Compare commits

..

4 commits

Author SHA1 Message Date
827700d343
🦊 BREAKING: Use new XDG Base specification for state (#5)
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Switched the history from using the XDG_CACHE_HOME directory by default
to use XDG_STATE_HOME by default.

This makes sense since cache can (and should be prepared to) be wiped at
any moment and the program functionality should not be hindered by this.
Since we need to retain history through such wipes the newly introduced
state directory is the perfect match for keeping the history file in.

This does constitute a breaking change for existing histories which need
to be moved to the new directory if they made use of the old cache
directory.

Concurrent with this we are renaming `XDG_CACHE_LOCATION` environment
variable to `XDG_HISTORY_LOCATION` so this is a second breaking change
for those using a custom location for their histories.

This change attempts to make the naming scheme coherent and remove some
left-over naming cruft from the old location being the cache directory.

This provides one of the larger changes to the program so far.

Fixes #5.
2022-11-10 16:30:26 +01:00
4209b90669
📖 Bump version
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2022-11-10 16:12:15 +01:00
7f5c3772e2
🦊 Change download option to work multiple times (#16)
Changed `-D` option to always download the lists supplied, regardless of
the database directory being empty or not.

This means you can download additional lists after the first program
run, or re-download lists later on. It *will* overwrite your custom
changes however if your files are called the same as the default list
names.

Additionally removed dependency on GNU version of cut and added some
simple tests for the download functionality.

Fixes #16.
2022-11-10 16:05:23 +01:00
dc68887091
Add automated tagged releases
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
Using woodpecker ci most of the release process is now automated.
That means as soon as a new version tag (e.g. `v0.2.3`) is pushed the
release process is started and will (if versions have been bumped
correctly) set up a new release on Gitea and Github simultaneously.

The release process will fail if changelog and program versions
mismatch, or the version has not been bumped in general.

The release contains the executable and some documentation, including
the README as a manpage-formatted gzip file which can be included in the
correct directory to enable a simple manpage for the program.
2022-11-10 14:58:16 +01:00
3 changed files with 89 additions and 8 deletions

View file

@ -3,3 +3,76 @@ pipeline:
image: bats/bats image: bats/bats
commands: commands:
- /opt/bats/bin/bats test - /opt/bats/bin/bats test
release-prep: # prepare changelog and version information for release candidate
when:
event: tag
tag: v*
image: alpine
commands:
- sed -ne 's/bm_version=\(.*\)/\1/p' bemoji > NEWEST_VERSION.txt
- awk '/^## \[\d/{p++} p==2{print; exit} p>=1' CHANGELOG.md | head -n -1 | tail -n+3 > NEWEST_CHANGES.txt
versioncompare: # ensure we correctly bumped versions
when:
event: tag
tag: v*
image: alpine
secrets: [ github_release_token, github_repo ]
commands:
- apk add jq curl
- "lastversion=$(curl -X GET -H \"Accept: application/vnd.github.v3+json\" -H \"Authorization: Bearer $GITHUB_RELEASE_TOKEN\" https://api.github.com/repos/$GITHUB_REPO/releases/latest | jq -r '.name')"
- "programversion=$(cat NEWEST_VERSION.txt)"
- changelogversion=$(sed -ne 's/^## \[\([0-9].*\)\].*$/\1/p' CHANGELOG.md | head -n1)
- echo "Last version - $lastversion"
- echo "New version - $programversion"
- echo "Changelog version - $changelogversion"
- "if [ \"$changelogversion\" != \"$programversion\" ]; then { echo \"VERSION MISMATCH: Changelog - $changelogversion, Program - $programversion\" && exit 1; }; fi"
- "if [ \"$lastversion\" = \"$programversion\" ]; then { echo \"RELEASE DUPLICATE: Last release already had version - $programversion\" && exit 1; }; fi"
build:
when:
event: tag
tag: v*
image: savant/md2man
commands:
- apk update && apk add zip
- BM_VERSION=$(cat NEWEST_VERSION.txt)
- mkdir -p build/doc dist
- cp bemoji build
- md2man -in README.md -out bemoji.1 && gzip bemoji.1
- cp LICENSE README.md bemoji.1.gz build/doc
- tar -czvf bemoji-$BM_VERSION.tar.gz build/*
- zip -r bemoji-$BM_VERSION.zip build/*
- mv bemoji-$BM_VERSION.tar.gz bemoji-$BM_VERSION.zip dist
release-gitea:
group: release
when:
event: tag
tag: v*
image: plugins/gitea-release
settings:
api_key:
from_secret: gitea_release_token
base_url: https://git.martyoeh.me
files: dist/*
title: NEWEST_VERSION.txt
note: NEWEST_CHANGES.txt
release-github:
when:
event: tag
tag: v*
image: alpine
secrets: [ github_release_token, github_repo ]
commands:
- apk add file jq curl
- BM_VERSION=$(cat NEWEST_VERSION.txt)
- BM_CHANGED=$(sed -e 's|#||g' -e 's|^.*$|\0 <br />|' NEWEST_CHANGES.txt) # display newlines workaround
- echo "{\"tag_name\":\"$BM_VERSION\",\"target_commitish\":\"main\",\"name\":\"$BM_VERSION\",\"body\":\"$BM_CHANGED\",\"draft\":false,\"prerelease\":false,\"generate_release_notes\":false}" > data.json
- "response=$(curl -X POST -H \"Accept:\\ application/vnd.github+json\" -H \"Authorization:\\ Bearer $GITHUB_RELEASE_TOKEN\" https://api.github.com/repos/$GITHUB_REPO/releases -d \"@data.json\")"
- "uploadurl=$(echo $response | jq -r '.upload_url' | cut -d'{' -f1)"
- "[ $uploadurl = null ] && { echo $response; exit 1; }"
- "curl -X POST -H \"Accept:\\ application/vnd.github.v3+json\" -H \"Authorization:\\ Bearer $GITHUB_RELEASE_TOKEN\" -H \"Content-Type:\\ $(file -b --mime-type dist/bemoji-$BM_VERSION.zip)\" -H \"Content-Length:\\ $(wc -c <dist/bemoji-$BM_VERSION.zip | xargs)\" -T dist/bemoji-$BM_VERSION.zip \"$uploadurl?name=bemoji-$BM_VERSION.zip\""
- "curl -X POST -H \"Accept:\\ application/vnd.github.v3+json\" -H \"Authorization:\\ Bearer $GITHUB_RELEASE_TOKEN\" -H \"Content-Type:\\ $(file -b --mime-type dist/bemoji-$BM_VERSION.tar.gz)\" -H \"Content-Length:\\ $(wc -c <dist/bemoji-$BM_VERSION.tar.gz | xargs)\" -T dist/bemoji-$BM_VERSION.tar.gz \"$uploadurl?name=bemoji-$BM_VERSION.tar.gz\""

View file

@ -7,6 +7,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased] ## [Unreleased]
<!-- ### Added -->
<!-- ### Changed -->
<!-- ### Deprecated -->
<!-- ### Removed -->
<!-- ### Fixed -->
<!-- ### Security -->
## [0.3.0] - 2022-11-10
### Added ### Added
- Add new option `-n` which suppresses printing the final newline character in output - Add new option `-n` which suppresses printing the final newline character in output
@ -14,25 +28,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed ### Changed
- Multiple command options can be combined - Multiple command options can be combined
- Allow downloading emoji sets at any time after initial run with `-D <choice>`
- (!) History uses `XDG_STATE_HOME` directory by default: - (!) History uses `XDG_STATE_HOME` directory by default:
This constitutes a break in behavior if you relied a lot on your pick history in the default This constitutes a break in behavior if you relied a lot on your pick history in the default
location. To retain your old history file, simply move it from the old cache directory location. To retain your old history file, simply move it from the old cache directory
(`~/.cache/bemoji-history.txt` by default) to the new one (`~/.local/state/bemoji-history.txt` (`~/.cache/bemoji-history.txt` by default) to the new one (`~/.local/state/bemoji-history.txt`
by default). by default).
- (!) `XDG_CACHE_LOCATION` renamed to `XDG_HISTORY_LOCATION` to better signify its purpose - (!) `XDG_CACHE_LOCATION` renamed to `XDG_HISTORY_LOCATION` to better signify its purpose
- Allow downloading emoji sets at any time after initial run with `-D <choice>`
<!-- ### Deprecated -->
<!-- ### Removed -->
### Fixed ### Fixed
- Custom default command is only executed when no command option given - Custom default command is only executed when no command option given
- Results are matched case insensitively when using rofi picker to match other pickers - Results are matched case insensitively when using rofi picker to match other pickers
<!-- ### Security -->
## [0.2.0] - 2022-06-29 ## [0.2.0] - 2022-06-29
### Added ### Added

2
bemoji
View file

@ -1,6 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
bm_version=0.2.0 bm_version=0.3.0
# Emoji default database location # Emoji default database location
bm_db_location=${BEMOJI_DB_LOCATION:-"${XDG_DATA_HOME:-$HOME/.local/share}/bemoji"} bm_db_location=${BEMOJI_DB_LOCATION:-"${XDG_DATA_HOME:-$HOME/.local/share}/bemoji"}
# Setting custom emoji list file location: # Setting custom emoji list file location: