summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xlibexec/container/version71
-rw-r--r--python3/compute_tools/container/__init__.py2
-rw-r--r--python3/compute_tools/container/version/__init__.py21
-rw-r--r--python3/compute_tools/container/version/functions.py28
-rw-r--r--python3/compute_tools/container/version/variables.py21
5 files changed, 111 insertions, 32 deletions
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 <daniel.baumann@open-infrastructure.net>
+# Open Infrastructure: compute-tools
+
+# Copyright (C) 2014-2023 Daniel Baumann <daniel.baumann@open-infrastructure.net>
#
# 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 <https://www.gnu.org/licenses/>.
-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 <https://www.gnu.org/licenses/>.
+
+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 <daniel.baumann@open-infrastructure.net>
+#
+# 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 <https://www.gnu.org/licenses/>.
+
+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 <daniel.baumann@open-infrastructure.net>
+#
+# 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 <https://www.gnu.org/licenses/>.
+
+from .variables import *
+
+def print_version():
+ print('Open Infrastructure: compute-tools' + ' ' + version)
+ print('Copyright (C) 2014-2023 Daniel Baumann <daniel.baumann@open-infrastructure.net>')
+ print('')
+ print('License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>')
+ 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 <daniel.baumann@open-infrastructure.net>
+#
+# 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 <https://www.gnu.org/licenses/>.
+
+with open('/usr/share/compute-tools/VERSION.txt', 'r') as f:
+ version = f.readline().strip()