diff --git a/app/data/version.txt b/app/data/version.txt new file mode 100644 index 00000000..0ee3baa4 --- /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-ae7a17c 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..2fbd68ad --- /dev/null +++ b/scripts/build_shiv_package.sh @@ -0,0 +1,3 @@ +# Builds the shiv "package" for distribution +version_string=$( ./scripts/update_version_file.sh) +shiv -c laconic-so -o package/laconic-so-${version_string} . 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..9880b21b --- /dev/null +++ b/scripts/update_version_file.sh @@ -0,0 +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 +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} 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