diff --git a/mpcdf_common.py b/mpcdf_common.py index 45210ba4f4e95d7b0d22f4beab02485b0ddac2af..9d02a6ba171b3b44e3b918c6589d15dceb2f9707 100644 --- a/mpcdf_common.py +++ b/mpcdf_common.py @@ -358,9 +358,8 @@ def package_sort_key(string): return (name,) + tuple(map(int, version)) -def mpcdf_enable_repositories(api_url, project, package, verbose=False, ignore_repos=()): +def mpcdf_enable_repositories(api_url, project, package, verbose=False, dry_run=False, ignore_repos=()): from itertools import product - import sys pkg_meta = osc.core.show_package_meta(api_url, project, package) root = ElementTree.fromstringlist(pkg_meta) @@ -494,7 +493,12 @@ def mpcdf_enable_repositories(api_url, project, package, verbose=False, ignore_r new_pkg_meta = ElementTree.tostring(root, encoding=osc.core.ET_ENCODING) if pkg_meta != new_pkg_meta: print("Updating repositories for", package) - osc.core.edit_meta("pkg", (project, package), data=new_pkg_meta) + if dry_run: + print("osc meta pkg {0} {1} -F - <<EOF\n{2}\nEOF\n".format(project, package, new_pkg_meta)) + else: + osc.core.edit_meta("pkg", (project, package), data=new_pkg_meta) + elif dry_run: + print("Would not do anything, package meta would be unchanged") return True diff --git a/mpcdf_enable_repositories.py b/mpcdf_enable_repositories.py index 0a0ee3ea843a64ef22e7d37ad28c97a95b0c3b4d..3079e93697ae0e37351d9190e24615fd5ca7cf81 100644 --- a/mpcdf_enable_repositories.py +++ b/mpcdf_enable_repositories.py @@ -10,6 +10,8 @@ import osc.core import osc.cmdln +@osc.cmdln.option('-n', '--dry-run', action="store_true", + help="Do not actually perform any changes but print what would be stored") @osc.cmdln.option('--recreate', action="store_true", help="Re-create the set of enabled repositories from the stored attributes on the server") @osc.cmdln.option('--compiler-modules', nargs=1, @@ -89,8 +91,8 @@ def do_mpcdf_enable_repositories(self, subcmd, opts, *args): set_or_remove(opts.pgi_modules, "MPCDF:pgi_modules") if opts.recreate or opts.set or opts.disable: - mpcdf_common.mpcdf_enable_repositories(api_url, project, package, verbose=True) - if project == "software" and opts.set != "system": + mpcdf_common.mpcdf_enable_repositories(api_url, project, package, verbose=True, dry_run=opts.dry_run) + if project == "software" and opts.set != "system" and not opts.dry_run: mpcdf_common.sync_projects(api_url, package, verbose=True) elif (opts.compiler_modules or opts.mpi_modules or opts.cuda_modules):