diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 00000000..a525e7fe --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,24 @@ +name: Docs + +on: + create: + tags: + - "*" + +jobs: + bump-version-in-docs: + runs-on: ubuntu-latest + steps: + + - uses: actions/checkout@v2 + name: checkout repo + with: + ref: "refs/heads/master" + + - run: sed -i "s|^\\(git clone.*--branch \\).*$|\\1v$(cat version.txt)|" docs/core-manage-asdf.md + name: replace version in docs + + - uses: stefanzweifel/git-auto-commit-action@v4 + name: commit docs version update + with: + commit_message: "docs: update version in install instructions" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..eb27f600 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,16 @@ +name: Release + +on: + push: + branches: + - master + +jobs: + release: + runs-on: ubuntu-latest + steps: + - uses: GoogleCloudPlatform/release-please-action@v2 + name: create release + with: + release-type: simple + bump-minor-pre-major: true # remove this to enable breaking changes causing 1.0.0 tag diff --git a/.github/workflows/semantic-pr.yml b/.github/workflows/semantic-pr.yml new file mode 100644 index 00000000..53861418 --- /dev/null +++ b/.github/workflows/semantic-pr.yml @@ -0,0 +1,18 @@ +name: Lint PR + +on: + pull_request_target: + types: + - opened + - edited + - synchronize + +jobs: + semantic-pr: + runs-on: ubuntu-latest + steps: + - uses: amannn/action-semantic-pull-request@v3.4.0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + validateSingleCommit: true diff --git a/VERSION b/VERSION deleted file mode 100644 index 85f7059b..00000000 --- a/VERSION +++ /dev/null @@ -1 +0,0 @@ -v0.8.1 diff --git a/docs/core-manage-asdf.md b/docs/core-manage-asdf.md index d55e1607..27fa93e4 100644 --- a/docs/core-manage-asdf.md +++ b/docs/core-manage-asdf.md @@ -67,8 +67,7 @@ Alternately, you can clone the whole repo and checkout the latest branch: ```shell git clone https://github.com/asdf-vm/asdf.git ~/.asdf -cd ~/.asdf -git checkout "$(git describe --abbrev=0 --tags)" +git -C ~/.asdf checkout "$(git -C ~/.asdf describe --abbrev=0 --tags)" ``` ### --Homebrew-- diff --git a/lib/utils.bash b/lib/utils.bash index 8b2f1ad3..c4eb0e86 100644 --- a/lib/utils.bash +++ b/lib/utils.bash @@ -10,7 +10,7 @@ ASDF_DATA_DIR=${ASDF_DATA_DIR:-''} asdf_version() { local version git_rev - version="$(cat "$(asdf_dir)/VERSION")" + version="v$(cat "$(asdf_dir)/version.txt")" if [ -d "$(asdf_dir)/.git" ]; then git_rev="$(git --git-dir "$(asdf_dir)/.git" rev-parse --short HEAD)" printf "%s-%s\\n" "$version" "$git_rev" diff --git a/release/README.md b/release/README.md deleted file mode 100644 index deade2cd..00000000 --- a/release/README.md +++ /dev/null @@ -1,29 +0,0 @@ -# Release README - -If you are a user you can ignore everything in this directory. This directory -contains documentation and scripts for preparing and tagging new versions of -asdf and is only used by asdf maintainers. - -## Tagging Release Candidates - -To tag release candidates - -1. Update the CHANGELOG. Make sure it contains an entry for the version you are - tagging as well as a dev version things that come after the tag (e.g. a heading - with the format `-dev`). -2. Run the tests, linter and format check - `bats test`, `./scripts/shellcheck.bash` and `./scripts/shfmt.bash`. -3. Run the release script. The new version must be in the format `0.0.0-rc0`. - For example: `release/tag.sh 0.0.0-rc0`. -4. If the release script succeeds, push to GitHub. Make sure to use the correct - remote to push to the official repository - -## Tagging Releases - -1. Update the CHANGELOG. Make sure it contains an entry for the version you are - tagging as well as a dev version things that come after the tag (e.g. a heading - with the format `-dev`). -2. Run the tests, linter and format check - `bats test`, `./scripts/shellcheck.bash` and `./scripts/shfmt.bash`. -3. Run the release script. The new version must be in the format `0.0.0`. For - example: `release/tag.sh 0.0.0`. -4. If the release script succeeds, push to GitHub. Make sure to use the correct - remote to push to the official repository diff --git a/release/tag.sh b/release/tag.sh deleted file mode 100755 index 8da7d1b3..00000000 --- a/release/tag.sh +++ /dev/null @@ -1,130 +0,0 @@ -#!/usr/bin/env bash - -# Unoffical Bash "strict mode" -# http://redsymbol.net/articles/unofficial-bash-strict-mode/ -set -euo pipefail -#ORIGINAL_IFS=$IFS -IFS=$'\t\n' # Stricter IFS settings - -# shellcheck disable=SC2006 -usage() { - cat <&2 "ERROR: semantic version should not start with a letter" - error_exit -fi - -# Make sure the version the user provided hasn't already been tagged -if git tag | grep "^$new_tag_name$" >/dev/null; then - echo >&2 "ERROR: git tag with that version already exists" - exit 1 -fi - -# If not a release candidate version -if ! (echo "$new_version" | grep -i "rc"); then - # Make sure an RC already exists when tagging a major or minor version - new_major_and_minor=$(echo "$new_version" | cut -d. -f1,2) - if ! git tag | grep "^v$new_major_and_minor.[0-9]*$" >/dev/null; then - # If the major and minor versions don't already exist, make sure this release - # is preceded by an RC release - if ! git tag | grep "^v$new_major_and_minor.[0-9]*-rc[0-9]*$" >/dev/null; then - echo >&2 "ERROR: New major and minor versions must be preceded by an RC version" - exit 1 - fi - fi -fi - -# Make sure the changelog already contains details on the new version -if ! grep "$new_version$" CHANGELOG.md; then - echo >&2 "ERROR: changelog entry for this version is missing" - exit 1 -fi - -# Make sure the changelog doesn't contain duplicate issue numbers -nonunique_issue_numbers=$(grep -o -P '#[\d]+' CHANGELOG.md | sort) -unique_issue_numbers=$(grep -o -P '#[\d]+' CHANGELOG.md | sort -u) -if [ "$nonunique_issue_numbers" != "$unique_issue_numbers" ]; then - echo >&2 "ERROR: Duplicate issue numbers in changelog." - exit 1 -fi - -echo "INFO: Checking that all changes are commited and pushed" -git pull - -# Disallow unstaged changes in the working tree -if ! git diff-files --check --exit-code --ignore-submodules -- >&2; then - echo >&2 "ERROR: You have unstaged changes." - exit 1 -fi - -# Disallow uncommitted changes in the index -if ! git diff-index --cached --exit-code -r --ignore-submodules HEAD -- >&2; then - echo >&2 "ERROR: Your index contains uncommitted changes." - exit 1 -fi - -# Update version in docs/core-manage-asdf.md -sed -i.bak "s|^\\(git clone.*--branch \\).*$|\\1$new_tag_name|" docs/core-manage-asdf.md -rm docs/core-manage-asdf.md.bak - -# Update version in the VERSION file -echo "$new_tag_name" >VERSION - -echo "INFO: Committing and tagging new version" - -# Commit the changed files before tagging the new release -git add README.md -git add docs/core-manage-asdf.md -git add VERSION -git commit -m "Update version to $new_version" - -git tag -a "$new_tag_name" -m "Version ${new_version}" - -echo "INFO: done." -echo "INFO: Now you can push this local branch to the GitHub repository: \`git push master $new_tag_name\`" diff --git a/scripts/shellcheck.bash b/scripts/shellcheck.bash index f42e00c0..4d03917e 100755 --- a/scripts/shellcheck.bash +++ b/scripts/shellcheck.bash @@ -7,7 +7,6 @@ exec shellcheck -s bash -x \ bin/private/asdf-exec \ lib/utils.bash \ lib/commands/*.bash \ - release/tag.sh \ scripts/*.bash \ test/test_helpers.bash \ test/fixtures/dummy_plugin/bin/* diff --git a/version.txt b/version.txt new file mode 100644 index 00000000..6f4eebdf --- /dev/null +++ b/version.txt @@ -0,0 +1 @@ +0.8.1