From 4d10376f3d171a4525917b1968d387182dcbc8fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Dunand?= <aurelien.dunand@smartjog.com> Date: Tue, 2 Aug 2011 10:06:27 +0200 Subject: [PATCH] Add copy command Signed-off-by: Seblu <sebastien.luttringer@smartjog.com> --- bin/is | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/bin/is b/bin/is index 30a9b61..6234f04 100755 --- a/bin/is +++ b/bin/is @@ -238,6 +238,36 @@ def c_clean(parser, args): ''' raise NotImplementedError("Not yet implemented") +def c_copy(parser, args): + ''' + Copy an image from a repository to another one + ''' + args.repo_filter = args.repo_src + repoman = load_repositories(args) + if len(repoman) == 0: + raise Exception("No repository selected") + elif len(repoman) > 1: + raise Exception("Please select only one repository") + repo_src = repoman[0] + args.repo_filter = args.repo_dst + repoman = load_repositories(args) + if len(repoman) == 0: + raise Exception("No repository selected") + elif len(repoman) > 1: + raise Exception("Please select only one repository") + repo_dst = repoman[0] + if args.image_version is None: + args.image_version = repo_src.last(args.image) + if args.image_version == -1: + raise Exception("Unable to find last version of %s" % args.image) + arrow("Copying %s v%s from %s to %s" % (args.image, args.image_version, + repo_src.config.name, repo_dst.config.name)) + arrowlevel(1) + pkg = repo_src.get(args.image, args.image_version) + repo_dst.add(pkg) + arrowlevel(-1) + arrow("Done") + def c_help(parser, args): ''' Show help @@ -366,6 +396,14 @@ p_get.set_defaults(func=c_get) p_clean = subparsers.add_parser("clean", help=c_clean.__doc__.lower()) p_clean.set_defaults(func=c_clean) +# copy command parser +p_copy = subparsers.add_parser("copy", help=c_copy.__doc__.lower()) +p_copy.add_argument("repo_src", help="name of source repository") +p_copy.add_argument("repo_dst", help="name of destination repository") +p_copy.add_argument("image", help="image name") +p_copy.add_argument("image_version", nargs="?", help="image version") +p_copy.set_defaults(func=c_copy) + # help command parser p_help = subparsers.add_parser("help", help=c_help.__doc__.lower()) p_help.add_argument("command", choices=subparsers.choices, nargs="?", -- GitLab