]> git.ipfire.org Git - pakfire.git/blobdiff - pakfire/cli.py
cli: Fix/implement install/localinstall command.
[pakfire.git] / pakfire / cli.py
index ca78a9b7b411823c3040e0ad279322018f9d27b3..e554b174f3953610abb5b7561619457d9e232211 100644 (file)
@@ -46,6 +46,7 @@ class Cli(object):
                self.sub_commands = self.parser.add_subparsers()
 
                self.parse_command_install()
+               self.parse_command_localinstall()
                self.parse_command_info()
                self.parse_command_search()
                self.parse_command_update()
@@ -61,10 +62,11 @@ class Cli(object):
                )
 
                self.action2func = {
-                       "install" : self.handle_install,
-                       "update"  : self.handle_update,
-                       "info"    : self.handle_info,
-                       "search"  : self.handle_search,
+                       "install"      : self.handle_install,
+                       "localinstall" : self.handle_localinstall,
+                       "update"       : self.handle_update,
+                       "info"         : self.handle_info,
+                       "search"       : self.handle_search,
                }
 
        def parse_common_arguments(self):
@@ -85,6 +87,14 @@ class Cli(object):
                        help=_("Give name of at least one package to install."))
                sub_install.add_argument("action", action="store_const", const="install")
 
+       def parse_command_localinstall(self):
+               # Implement the "localinstall" command.
+               sub_install = self.sub_commands.add_parser("localinstall",
+                       help=_("Install one or more packages from the filesystem."))
+               sub_install.add_argument("package", nargs="+",
+                       help=_("Give filename of at least one package."))
+               sub_install.add_argument("action", action="store_const", const="localinstall")
+
        def parse_command_update(self):
                # Implement the "update" command.
                sub_update = self.sub_commands.add_parser("update",
@@ -142,6 +152,22 @@ class Cli(object):
        def handle_update(self):
                pass
 
+       def handle_install(self, local=False):
+               if local:
+                       repo = repository.FileSystemRepository(self.pakfire)
+
+               pkgs = []
+               for pkg in self.args.package:
+                       if local and os.path.exists(pkg):
+                               pkg = packages.BinaryPackage(self.pakfire, repo, pkg)
+
+                       pkgs.append(pkg)
+
+               self.pakfire.install(pkgs)
+
+       def handle_localinstall(self):
+               return self.handle_install(local=True)
+
 
 class CliBuilder(Cli):
        def __init__(self):