From a57558d25e9df2a2e3173abb361f7d97b95d02c8 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Thu, 2 Feb 2023 14:33:59 +0100 Subject: Reworking container version command in python. Signed-off-by: Daniel Baumann --- libexec/container/version | 71 ++++++++++++---------- python3/compute_tools/container/__init__.py | 2 + .../compute_tools/container/version/__init__.py | 21 +++++++ .../compute_tools/container/version/functions.py | 28 +++++++++ .../compute_tools/container/version/variables.py | 21 +++++++ 5 files changed, 111 insertions(+), 32 deletions(-) create mode 100644 python3/compute_tools/container/version/__init__.py create mode 100644 python3/compute_tools/container/version/functions.py create mode 100644 python3/compute_tools/container/version/variables.py diff --git a/libexec/container/version b/libexec/container/version index e580688..e567f8f 100755 --- a/libexec/container/version +++ b/libexec/container/version @@ -1,6 +1,8 @@ -#!/bin/sh +#!/usr/bin/python3 -# Copyright (C) 2014-2022 Daniel Baumann +# Open Infrastructure: compute-tools + +# Copyright (C) 2014-2023 Daniel Baumann # # SPDX-License-Identifier: GPL-3.0+ # @@ -17,33 +19,38 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -set -e - -PROJECT="open-infrastructure" -SOFTWARE="compute-tools" -PROGRAM="container" -COMMAND="$(basename ${0})" - -HOOKS="/etc/${SOFTWARE}/hooks" -SHARE="/usr/share/${SOFTWARE}" - -# Pre hooks -for FILE in "${HOOKS}/pre-${COMMAND}".* "${HOOKS}/${NAME}.pre-${COMMAND}" -do - if [ -x "${FILE}" ] - then - "${FILE}" - fi -done - -# Run -cat "${SHARE}/VERSION.txt" - -# Post hooks -for FILE in "${HOOKS}/post-${COMMAND}".* "${HOOKS}/${NAME}.post-${COMMAND}" -do - if [ -x "${FILE}" ] - then - "${FILE}" - fi -done +from os import access, X_OK +from pathlib import Path +from subprocess import run +from sys import exit, stderr, stdout + +import compute_tools.container as container + +def main(): + # pre hooks + pre_hooks = Path('/etc/compute-tools/hooks').glob('pre-version.*') + + if pre_hooks: + # hooks exist + for hook in pre_hooks: + if access(hook, X_OK): + # hook is executable + run(str(hook), shell=True, stderr=stderr, stdout=stdout) + + # run + container.print_version() + + # post hooks + post_hooks = Path('/etc/compute-tools/hooks').glob('post-version.*') + + if post_hooks: + # hooks exist + for hook in post_hooks: + if access(hook, X_OK): + # hook is executable + run(str(hook), shell=True, stderr=stderr, stdout=stdout) + + exit(0) + +if __name__ == '__main__': + main() diff --git a/python3/compute_tools/container/__init__.py b/python3/compute_tools/container/__init__.py index 8090205..ca5248b 100644 --- a/python3/compute_tools/container/__init__.py +++ b/python3/compute_tools/container/__init__.py @@ -16,3 +16,5 @@ # # You should have received a copy of the GNU General Public License # along with this program. If not, see . + +from .version import * diff --git a/python3/compute_tools/container/version/__init__.py b/python3/compute_tools/container/version/__init__.py new file mode 100644 index 0000000..2250170 --- /dev/null +++ b/python3/compute_tools/container/version/__init__.py @@ -0,0 +1,21 @@ +# Open Infrastructure: compute-tools + +# Copyright (C) 2014-2023 Daniel Baumann +# +# SPDX-License-Identifier: GPL-3.0+ +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +from .functions import * +from .variables import * diff --git a/python3/compute_tools/container/version/functions.py b/python3/compute_tools/container/version/functions.py new file mode 100644 index 0000000..b31f974 --- /dev/null +++ b/python3/compute_tools/container/version/functions.py @@ -0,0 +1,28 @@ +# Open Infrastructure: compute-tools + +# Copyright (C) 2014-2023 Daniel Baumann +# +# SPDX-License-Identifier: GPL-3.0+ +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +from .variables import * + +def print_version(): + print('Open Infrastructure: compute-tools' + ' ' + version) + print('Copyright (C) 2014-2023 Daniel Baumann ') + print('') + print('License GPLv3+: GNU GPL version 3 or later ') + print('This is free software: you are free to change and redistribute it.') + print('There is NO WARRANTY, to the extent permitted by law.') diff --git a/python3/compute_tools/container/version/variables.py b/python3/compute_tools/container/version/variables.py new file mode 100644 index 0000000..ea86d6b --- /dev/null +++ b/python3/compute_tools/container/version/variables.py @@ -0,0 +1,21 @@ +# Open Infrastructure: compute-tools + +# Copyright (C) 2014-2023 Daniel Baumann +# +# SPDX-License-Identifier: GPL-3.0+ +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +with open('/usr/share/compute-tools/VERSION.txt', 'r') as f: + version = f.readline().strip() -- cgit v1.2.3