Skip to content
Snippets Groups Projects
Commit 8a110374 authored by Ashwin Kumar Karnad's avatar Ashwin Kumar Karnad
Browse files

Merge branch 'available-returns-released-versions' into 'main'

return available (i.e. released!) release versions

See merge request !110
parents 5a9659e9 3e8b3882
No related branches found
No related tags found
1 merge request!110return available (i.e. released!) release versions
Pipeline #375710 passed
......@@ -476,9 +476,10 @@ def get_available_package_sets(mpsd_release: str) -> List[str]:
"""
logging.debug(f"get_available_package_sets({mpsd_release=})")
logging.info(f"Retrieving available package_sets for release {mpsd_release}")
print_log = logging.getLogger("print")
logging.info(f"Retrieving available package_sets for release {mpsd_release}")
# create temporary directory
tmp_dir = tempfile.TemporaryDirectory(prefix="mpsd-software-available-")
tmp_dir_path = Path(tmp_dir.name)
......@@ -755,6 +756,28 @@ def clone_repo(
run(["git", "pull"], check=True, capture_output=capture_output)
def get_available_releases(print_result: bool = False) -> List[str]:
"""
Return available MPSD software release versions.
Example
-------
>>> get_available_releases()
["dev-23a"]
Notes
-----
This needs to be updated when a new version (such as 23b) is released.
"""
releases = ["dev-23a"]
print_log = logging.getLogger("print")
if print_result:
print_log.info("Available MPSD software releases:")
for release in releases:
print_log.info(f" {release}")
return releases
def get_release_info(mpsd_release: str, root_dir: Path) -> Tuple[str, str, List[str]]:
"""
Get information about the specified release.
......@@ -1303,13 +1326,22 @@ def main():
)
else:
# all commands except init need a release version
if cmd != "init":
# most commands except need a release version
if cmd in ["install", "prepare", "reinstall", "remove", "status"]:
subp.add_argument(
"release",
type=str,
help="Release version to prepare, install, reinstall or remove",
)
elif cmd in ["available"]:
# for some commands the release version is optional
subp.add_argument(
"release",
type=str,
nargs="?",
help="Release version to prepare, install, reinstall or remove",
)
if cmd in ["install", "reinstall", "remove"]:
# "install" command needs additional documentation
package_set_help = (
......@@ -1347,20 +1379,30 @@ def main():
initialise_environment(Path(os.getcwd()))
sys.exit(0)
# sanity check for common mistakes in command line arguments
if args.release.endswith("/"): # happens easily with autocompletion
args.release = args.release.removesuffix("/")
logging.warning(f"Removed trailing slash from release: {args.release}")
# if a release version is specified:
if args.release:
# sanity check for common mistakes in command line arguments
if args.release.endswith("/"): # happens easily with autocompletion
args.release = args.release.removesuffix("/")
logging.warning(f"Removed trailing slash from release: {args.release}")
# root_dir is the place where this MPSD software instance has its root
root_dir = get_root_dir()
# set up logging ( with file handler) for all actions (except init)
log_file = get_log_file_path(
args.release,
args.action,
root_dir,
)
# set up logging filename: we record activities that change the installation
if args.action in ["init", "install", "reinstall", "remove"]:
log_file = get_log_file_path(
args.release,
args.action,
root_dir,
)
# some commands do not write any log_files:
elif args.action in ["available", "status"]:
log_file = None
else:
# sanity check
raise NotImplementedError(f"Should never happen: unknown {args.action=}")
set_up_logging(
args.loglevel,
log_file,
......@@ -1380,7 +1422,11 @@ def main():
elif args.action == "prepare":
prepare_environment(args.release, root_dir)
elif args.action == "available":
get_available_package_sets(args.release)
if args.release:
get_available_package_sets(args.release)
else:
get_available_releases(print_result=True)
sys.exit(0)
else:
message = (
f"No known action found ({args.action=}). Should probably never happen."
......
......@@ -564,6 +564,14 @@ def test_get_root_dir(tmp_path):
assert root_dir == sub_dir
def test_get_available_releases():
res = mod.get_available_releases()
assert "dev-23a" in res
assert len(res) >= 1
for release in res:
assert isinstance(release, str)
def test_interface(tmp_path):
"""Test other things (not implemented yet)."""
pass
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment