From 261b513d6805cd28473fc2a4f9f758d317039363 Mon Sep 17 00:00:00 2001 From: David Boreham Date: Tue, 10 Jan 2023 14:09:38 -0700 Subject: [PATCH 1/4] Initial implementation --- app/data/version.txt | 2 ++ app/version.py | 30 +++++++++++++++++++ cli.py | 2 ++ scripts/build-shiv-package.sh | 3 ++ .../first_time_setup.sh | 0 scripts/update-version-file.sh | 3 ++ 6 files changed, 40 insertions(+) create mode 100644 app/data/version.txt create mode 100644 app/version.py create mode 100755 scripts/build-shiv-package.sh rename first_time_setup.sh => scripts/first_time_setup.sh (100%) create mode 100755 scripts/update-version-file.sh diff --git a/app/data/version.txt b/app/data/version.txt new file mode 100644 index 00000000..81447904 --- /dev/null +++ b/app/data/version.txt @@ -0,0 +1,2 @@ +# This file should be re-generated running: scripts/update-version-file.sh script +v1.0.6-alpha 9278d09 diff --git a/app/version.py b/app/version.py new file mode 100644 index 00000000..0547f0ea --- /dev/null +++ b/app/version.py @@ -0,0 +1,30 @@ +# Copyright © 2023 Cerc + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +import click +import importlib + +@click.command() +@click.pass_context +def command(ctx): + '''print tool version''' + + # See: https://stackoverflow.com/a/20885799/1701505 + from . import data + with importlib.resources.open_text(data, "version.txt") as version_file: + # TODO: code better version that skips comment lines + version_string = version_file.read().splitlines()[1] + + print(f"Version: {version_string}") diff --git a/cli.py b/cli.py index 1703a422..e2e94ab2 100644 --- a/cli.py +++ b/cli.py @@ -19,6 +19,7 @@ from app import setup_repositories from app import build_containers from app import build_npms from app import deploy_system +from app import version CONTEXT_SETTINGS = dict(help_option_names=['-h', '--help']) @@ -49,3 +50,4 @@ cli.add_command(setup_repositories.command, "setup-repositories") cli.add_command(build_containers.command, "build-containers") cli.add_command(build_npms.command, "build-npms") cli.add_command(deploy_system.command, "deploy-system") +cli.add_command(version.command, "version") diff --git a/scripts/build-shiv-package.sh b/scripts/build-shiv-package.sh new file mode 100755 index 00000000..98f49f4f --- /dev/null +++ b/scripts/build-shiv-package.sh @@ -0,0 +1,3 @@ +# Builds the shiv "package" for distribution +./scripts/update_version_file.sh +shiv -c laconic-so -o package/laconic-so . diff --git a/first_time_setup.sh b/scripts/first_time_setup.sh similarity index 100% rename from first_time_setup.sh rename to scripts/first_time_setup.sh diff --git a/scripts/update-version-file.sh b/scripts/update-version-file.sh new file mode 100755 index 00000000..fdcdac32 --- /dev/null +++ b/scripts/update-version-file.sh @@ -0,0 +1,3 @@ +version_file_name=./app/data/version.txt +echo "# This file should be re-generated running: scripts/update-version-file.sh script" > $version_file_name +echo $( git describe --tags --abbrev=0 ; git rev-parse --short HEAD ) >> $version_file_name From ae7a17cecd6210ecd5847155f69a148247abeb6f Mon Sep 17 00:00:00 2001 From: David Boreham Date: Tue, 10 Jan 2023 14:10:22 -0700 Subject: [PATCH 2/4] Make script file names consistent --- scripts/{build-shiv-package.sh => build_shiv_package.sh} | 0 scripts/{update-version-file.sh => update_version_file.sh} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename scripts/{build-shiv-package.sh => build_shiv_package.sh} (100%) rename scripts/{update-version-file.sh => update_version_file.sh} (100%) diff --git a/scripts/build-shiv-package.sh b/scripts/build_shiv_package.sh similarity index 100% rename from scripts/build-shiv-package.sh rename to scripts/build_shiv_package.sh diff --git a/scripts/update-version-file.sh b/scripts/update_version_file.sh similarity index 100% rename from scripts/update-version-file.sh rename to scripts/update_version_file.sh From d315941f210e6379eb377318224c1e3fc9614123 Mon Sep 17 00:00:00 2001 From: David Boreham Date: Tue, 10 Jan 2023 14:23:59 -0700 Subject: [PATCH 3/4] Version command implemented --- app/data/version.txt | 2 +- scripts/build_shiv_package.sh | 4 ++-- scripts/update_version_file.sh | 6 +++++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/data/version.txt b/app/data/version.txt index 81447904..0ee3baa4 100644 --- a/app/data/version.txt +++ b/app/data/version.txt @@ -1,2 +1,2 @@ # This file should be re-generated running: scripts/update-version-file.sh script -v1.0.6-alpha 9278d09 +v1.0.6-alpha-ae7a17c diff --git a/scripts/build_shiv_package.sh b/scripts/build_shiv_package.sh index 98f49f4f..2fbd68ad 100755 --- a/scripts/build_shiv_package.sh +++ b/scripts/build_shiv_package.sh @@ -1,3 +1,3 @@ # Builds the shiv "package" for distribution -./scripts/update_version_file.sh -shiv -c laconic-so -o package/laconic-so . +version_string=$( ./scripts/update_version_file.sh) +shiv -c laconic-so -o package/laconic-so-${version_string} . diff --git a/scripts/update_version_file.sh b/scripts/update_version_file.sh index fdcdac32..9880b21b 100755 --- a/scripts/update_version_file.sh +++ b/scripts/update_version_file.sh @@ -1,3 +1,7 @@ version_file_name=./app/data/version.txt echo "# This file should be re-generated running: scripts/update-version-file.sh script" > $version_file_name -echo $( git describe --tags --abbrev=0 ; git rev-parse --short HEAD ) >> $version_file_name +tag_string=$( git describe --tags --abbrev=0 ) +commit_string=$( git rev-parse --short HEAD ) +version_string=${tag_string}-${commit_string} +echo ${version_string} >> $version_file_name +echo ${version_string} From df469786ca650e19a6aaf29ea049d499a80ebd9a Mon Sep 17 00:00:00 2001 From: David Boreham Date: Tue, 10 Jan 2023 14:32:12 -0700 Subject: [PATCH 4/4] Add version to smoke test --- tests/smoke-test/run-smoke-test.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tests/smoke-test/run-smoke-test.sh b/tests/smoke-test/run-smoke-test.sh index ffdf8a06..4ee2fddc 100755 --- a/tests/smoke-test/run-smoke-test.sh +++ b/tests/smoke-test/run-smoke-test.sh @@ -1,9 +1,13 @@ # Basic simple test of stack-orchestrator functionality echo "Running stack-orchestrator smoke test" -TEST_TARGET_SO=package/laconic-so +# Bit of a hack, test the most recent package +TEST_TARGET_SO=$( ls -t1 ./package/laconic-so* | head -1 ) # Set a non-default repo dir export CERC_REPO_BASE_DIR=~/stack-orchestrator-test/repo-base-dir echo "Testing this package: $TEST_TARGET_SO" +echo "Test version command" +reported_version_string=$( $TEST_TARGET_SO version ) +echo "Version reported is: ${reported_version_string}" echo "Cloning repositories into: $CERC_REPO_BASE_DIR" rm -rf $CERC_REPO_BASE_DIR mkdir -p $CERC_REPO_BASE_DIR