diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6f3a025..6f763a5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [2.0.3] - 2020-03-13
+### Added
+- bl_validate_changelog: Validate a changelog against keepachangelog.com format.
+
+### Changed
+- bl_in_git_repo now fails (return 1) rather than exiting 1
+- Github issues can now be created with a label
+
## [2.0.2] - 2020-03-10
### Added
- Retrieve latest version for gem from rubygems.org
diff --git a/README.md b/README.md
index b11b190..7c5c2bb 100644
--- a/README.md
+++ b/README.md
@@ -195,7 +195,7 @@ files within it's directory.
- | Ruby |
+ Ruby |
Helpers related to ruby infrastructure |
@@ -213,6 +213,7 @@ files within it's directory.
- bl_shellcheck_script: Execute shellcheck against a script, uses docker.
- bl_find_scripts: Find git tracked files with extension.
- bl_tap2junit: Convert a subset of TAP to JUnit XML. Retains logs for errors.
+ - bl_validate_changelog: Check CHANGELOG.md (or a specified file) complies with keepachangelog.com format.
|
diff --git a/git/lib b/git/lib
index e382cec..1c85ee9 100644
--- a/git/lib
+++ b/git/lib
@@ -9,7 +9,7 @@ function bl_git_available(){
function bl_in_git_repo(){
bl_git_available
- git status >/dev/null || bl_die "$(pwd) is not within a git repo."
+ git status >/dev/null || bl_fail "$(pwd) is not within a git repo."
}
function bl_github_owner_repo(){
diff --git a/run-tests b/run-tests
index 332de16..a68ca0e 100755
--- a/run-tests
+++ b/run-tests
@@ -6,10 +6,7 @@
. "$(dirname ${BASH_SOURCE[0]})/init"
bl_info "Checking the changelog complies with keepachangelog.com format"
-docker run \
- --rm \
- -v "${PWD}/CHANGELOG.md:/CHANGELOG.md" \
- cyberark/parse-a-changelog
+"${BASH_LIB_DIR}/tests-for-this-repo/validate-changelog"
bl_info "Running BATS Tests"
"${BASH_LIB_DIR}/tests-for-this-repo/run-bats-tests"
diff --git a/test-utils/lib b/test-utils/lib
index 1079374..e995dcb 100644
--- a/test-utils/lib
+++ b/test-utils/lib
@@ -48,3 +48,41 @@ function bl_tap2junit(){
# filters stdin to stdout
docker run --rm -i tap-junit -s "${suite}"
}
+
+# Checks a Changelog file against keepachangelog.com format.
+function bl_validate_changelog(){
+ local CHANGELOG=""
+
+ if [[ -z "${1:-}" ]]; then
+ # Changelog file not specified
+
+ # Look in the current directory
+ if [[ -r CHANGELOG.md ]]; then
+ CHANGELOG="CHANGELOG.md"
+ fi
+
+ # Look in the repo root
+ if [[ -z "${CHANGELOG}" ]] && bl_in_git_repo; then
+ guess="$(bl_repo_root)/CHANGELOG.md"
+ [[ -r "${guess}" ]] && CHANGELOG="${guess}"
+ fi
+
+ if [[ -z "${CHANGELOG}" ]]; then
+ bl_fail "CHANGELOG.md not found in current directory or root of git "\
+ "repo, please specify the path to the changelog. " \
+ "Usage: bl_validate_changelog /path/to/CHANGELOG.md"
+ fi
+ else
+ # Changelog specified as parameter, use that.
+ CHANGELOG="${1}"
+ [[ -r "${CHANGELOG}" ]] || bl_fail "Can't read changelog file: ${CHANGELOG}"
+ fi
+
+ # Docker volume paths need to be absolute
+ CHANGELOG="$(bl_abs_path "${CHANGELOG}")"
+
+ docker run \
+ --rm \
+ --volume "${CHANGELOG}:/CHANGELOG.md" \
+ cyberark/parse-a-changelog
+}
diff --git a/tests-for-this-repo/test-utils.bats b/tests-for-this-repo/test-utils.bats
index f0dcd3d..fdb4fde 100644
--- a/tests-for-this-repo/test-utils.bats
+++ b/tests-for-this-repo/test-utils.bats
@@ -76,3 +76,32 @@ bl_docker_safe_tmp(){
assert_equal "${stdout}" "$(cat ${fdir}/tap2junit.out)"
assert_equal "${rc}" "0"
}
+
+@test "bl_validate_changelog validates changelog specified as paremeter" {
+ run bl_validate_changelog "${BASH_LIB_DIR}"/CHANGELOG.md
+ assert_success
+}
+
+@test "bl_validate_changelog finds changelog in current directory" {
+ pushd "${BASH_LIB_DIR}"
+ run bl_validate_changelog
+ popd
+ assert_success
+}
+
+@test "bl_validate_changelog finds changelog in git root" {
+ pushd "${BASH_LIB_DIR}/tests-for-this-repo"
+ run bl_validate_changelog
+ popd
+ assert_success
+}
+
+@test "bl_validate_changelog fails with invalid changelog path" {
+ run bl_validate_changelog notavalidchangelog.md
+ assert_failure
+}
+
+@test "bl_validate_changelog fails with invalid changelog" {
+ run bl_validate_changelog README.md
+ assert_failure
+}
diff --git a/tests-for-this-repo/validate-changelog b/tests-for-this-repo/validate-changelog
new file mode 100755
index 0000000..6e5d97b
--- /dev/null
+++ b/tests-for-this-repo/validate-changelog
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+
+. "$(dirname "${BASH_SOURCE[0]}")/../init"
+
+bl_validate_changelog