[eit.*] split ArgumentParser object creation from parsing code

This commit is contained in:
Fabio Erculiani
2011-10-17 15:36:49 +02:00
parent 69a0bb87e0
commit 86fdfbaba0
33 changed files with 208 additions and 51 deletions

View File

@@ -27,7 +27,7 @@ class EitAdd(EitCommit):
NAME = "add"
ALIASES = []
def parse(self):
def _get_parser(self):
""" Overridden from EitCommit """
descriptor = EitCommandDescriptor.obtain_descriptor(
EitAdd.NAME)
@@ -44,7 +44,11 @@ class EitAdd(EitCommit):
parser.add_argument("--quick", action="store_true",
default=not self._ask,
help=_("no stupid questions"))
return parser
def parse(self):
""" Overridden from EitCommit """
parser = self._get_parser()
try:
nsargs = parser.parse_args(self._args)
except IOError as err:

View File

@@ -14,7 +14,7 @@ import sys
import argparse
from entropy.i18n import _
from entropy.output import bold, purple, darkgreen, blue, brown, teal
from entropy.output import bold, purple, darkgreen, blue
import entropy.tools
@@ -38,7 +38,8 @@ class EitBranch(EitCommand):
self._repository_id = None
self._ask = True
def parse(self):
def _get_parser(self):
""" Overridden from EitCommand """
descriptor = EitCommandDescriptor.obtain_descriptor(
EitBranch.NAME)
parser = argparse.ArgumentParser(
@@ -58,7 +59,11 @@ class EitBranch(EitCommand):
parser.add_argument("--from", metavar="<branch>",
help=_("from branch"),
dest="frombranch", default=None)
return parser
def parse(self):
""" Overridden from EitCommand """
parser = self._get_parser()
try:
nsargs = parser.parse_args(self._args)
except IOError:

View File

@@ -10,7 +10,6 @@
"""
import sys
import os
import argparse
from entropy.output import darkgreen, blue
@@ -28,7 +27,11 @@ class EitBump(EitCommand):
NAME = "bump"
ALIASES = []
def parse(self):
def __init__(self, args):
EitCommand.__init__(self, args)
self._sync = False
def _get_parser(self):
""" Overridden from EitCommand """
descriptor = EitCommandDescriptor.obtain_descriptor(
EitBump.NAME)
@@ -40,12 +43,17 @@ class EitBump(EitCommand):
parser.add_argument("repo", nargs='?', default=None,
metavar="<repo>", help=_("repository"))
parser.add_argument("--sync", action="store_true",
default=False,
default=self._sync,
help=_("sync with remote repository"))
return parser
def parse(self):
""" Overridden from EitCommand """
parser = self._get_parser()
try:
nsargs = parser.parse_args(self._args)
except IOError as err:
sys.stderr.write("%s\n" % (err,))
return parser.print_help, []
self._sync = nsargs.sync

View File

@@ -28,7 +28,7 @@ class EitCheckout(EitCommand):
NAME = "checkout"
ALIASES = ["ci"]
def parse(self):
def _get_parser(self):
""" Overridden from EitCommand """
descriptor = EitCommandDescriptor.obtain_descriptor(
EitCheckout.NAME)
@@ -39,7 +39,11 @@ class EitCheckout(EitCommand):
parser.add_argument("repo", metavar="<repo>",
help=_("repository"))
return parser
def parse(self):
""" Overridden from EitCommand """
parser = self._get_parser()
try:
nsargs = parser.parse_args(self._args)
except IOError as err:

View File

@@ -28,7 +28,7 @@ class EitCleanup(EitCommand):
NAME = "cleanup"
ALIASES = ["cn", "clean"]
def parse(self):
def _get_parser(self):
""" Overridden from EitCommand """
descriptor = EitCommandDescriptor.obtain_descriptor(
EitCleanup.NAME)
@@ -42,7 +42,11 @@ class EitCleanup(EitCommand):
parser.add_argument("--quick", action="store_true",
default=False,
help=_("no stupid questions"))
return parser
def parse(self):
""" Overridden from EitCommand """
parser = self._get_parser()
try:
nsargs = parser.parse_args(self._args)
except IOError as err:

View File

@@ -37,6 +37,13 @@ class EitCommand(object):
def __init__(self, args):
self._args = args
def _get_parser(self):
"""
This is the argparse parser setup method, it shall return
the ArgumentParser object that will be used by parse().
"""
raise NotImplementedError()
def parse(self):
"""
Parse the actual arguments and return

View File

@@ -42,7 +42,7 @@ class EitCommit(EitCommand):
# execute actions only for given atoms, if any
self._packages = []
def parse(self):
def _get_parser(self):
descriptor = EitCommandDescriptor.obtain_descriptor(
EitCommit.NAME)
parser = argparse.ArgumentParser(
@@ -59,6 +59,10 @@ class EitCommit(EitCommand):
default=not self._ask,
help=_("no stupid questions"))
return parser
def parse(self):
parser = self._get_parser()
try:
nsargs = parser.parse_args(self._args)
except IOError as err:

View File

@@ -36,7 +36,7 @@ class EitCp(EitCommand):
self._packages = []
self._copy = True
def parse(self):
def _get_parser(self):
""" Overridden from EitCp """
descriptor = EitCommandDescriptor.obtain_descriptor(
EitCp.NAME)
@@ -56,7 +56,11 @@ class EitCp(EitCommand):
help=_("include dependencies"))
parser.add_argument("package", nargs='+', metavar="<package>",
help=_("package dependency"))
return parser
def parse(self):
""" Overridden from EitCp """
parser = self._get_parser()
try:
nsargs = parser.parse_args(self._args)
except IOError as err:

View File

@@ -32,7 +32,7 @@ class EitDeps(EitCommand):
EitCommand.__init__(self, args)
self._packages = []
def parse(self):
def _get_parser(self):
descriptor = EitCommandDescriptor.obtain_descriptor(
EitDeps.NAME)
parser = argparse.ArgumentParser(
@@ -46,6 +46,10 @@ class EitDeps(EitCommand):
help=_("inject into given repository"),
dest="inrepo", default=None)
return parser
def parse(self):
parser = self._get_parser()
try:
nsargs = parser.parse_args(self._args)
except IOError:

View File

@@ -33,7 +33,7 @@ class EitFiles(EitCommand):
self._quiet = False
self._packages = []
def parse(self):
def _get_parser(self):
descriptor = EitCommandDescriptor.obtain_descriptor(
EitFiles.NAME)
parser = argparse.ArgumentParser(
@@ -48,6 +48,10 @@ class EitFiles(EitCommand):
default=self._quiet,
help=_('quiet output, for scripting purposes'))
return parser
def parse(self):
parser = self._get_parser()
try:
nsargs = parser.parse_args(self._args)
except IOError:

View File

@@ -38,7 +38,7 @@ class EitGraph(EitCommand):
self._quiet = False
self._repository_id = None
def parse(self):
def _get_parser(self):
descriptor = EitCommandDescriptor.obtain_descriptor(
EitGraph.NAME)
parser = argparse.ArgumentParser(
@@ -58,6 +58,10 @@ class EitGraph(EitCommand):
default=self._quiet,
help=_('quiet output, for scripting purposes'))
return parser
def parse(self):
parser = self._get_parser()
try:
nsargs = parser.parse_args(self._args)
except IOError:

View File

@@ -28,7 +28,7 @@ class EitInit(EitCommand):
NAME = "init"
ALIASES = []
def parse(self):
def _get_parser(self):
""" Overridden from EitInit """
descriptor = EitCommandDescriptor.obtain_descriptor(
EitInit.NAME)
@@ -43,6 +43,11 @@ class EitInit(EitCommand):
default=False,
help=_("no stupid questions"))
return parser
def parse(self):
""" Overridden from EitInit """
parser = self._get_parser()
try:
nsargs = parser.parse_args(self._args)
except IOError as err:

View File

@@ -32,7 +32,7 @@ class EitInject(EitCommand):
EitCommand.__init__(self, args)
self._packages = []
def parse(self):
def _get_parser(self):
descriptor = EitCommandDescriptor.obtain_descriptor(
EitInject.NAME)
parser = argparse.ArgumentParser(
@@ -46,6 +46,10 @@ class EitInject(EitCommand):
help=_("inject into given repository"),
default=None)
return parser
def parse(self):
parser = self._get_parser()
try:
nsargs = parser.parse_args(self._args)
except IOError:

View File

@@ -10,12 +10,11 @@
"""
import sys
import os
import argparse
from entropy.output import blue, purple, darkgreen, bold, brown, teal, \
darkred
from entropy.const import const_convert_to_rawstring, etpConst
from entropy.const import const_convert_to_rawstring
from entropy.i18n import _
from entropy.security import Repository
from entropy.tools import convert_unix_time_to_human_time
@@ -37,7 +36,7 @@ class EitKey(EitCommand):
self._nsargs = None
self._gpg_msg_shown = False
def parse(self):
def _get_parser(self):
""" Overridden from EitCommand """
descriptor = EitCommandDescriptor.obtain_descriptor(
EitKey.NAME)
@@ -104,6 +103,11 @@ class EitKey(EitCommand):
help=_("private key path"))
export_priv_parser.set_defaults(func=self._export_priv)
return parser
def parse(self):
""" Overridden from EitCommand """
parser = self._get_parser()
try:
nsargs = parser.parse_args(self._args)
except IOError as err:
@@ -411,8 +415,6 @@ class EitKey(EitCommand):
entropy_server, repo_sec, True, entropy_server.repository(),
key_path)
return 0
def _export_priv(self, entropy_server):
"""
Actual Eit key export-private code.

View File

@@ -10,11 +10,10 @@
"""
import sys
import os
import argparse
from entropy.i18n import _
from entropy.output import brown, teal, purple, darkgreen, blue
from entropy.output import brown, teal, purple, darkgreen
import entropy.dep
@@ -38,7 +37,7 @@ class EitList(EitCommand):
self._verbose = False
self._injected = False
def parse(self):
def _get_parser(self):
descriptor = EitCommandDescriptor.obtain_descriptor(
EitList.NAME)
parser = argparse.ArgumentParser(
@@ -58,6 +57,10 @@ class EitList(EitCommand):
default=self._injected,
help=_('only list injected packages'))
return parser
def parse(self):
parser = self._get_parser()
try:
nsargs = parser.parse_args(self._args)
except IOError as err:

View File

@@ -13,7 +13,7 @@ import sys
import argparse
from entropy.i18n import _
from entropy.output import darkgreen, brown, teal, purple, blue, darkred
from entropy.output import darkgreen, brown, purple, blue, darkred
from entropy.transceivers import EntropyTransceiver
from eit.commands.descriptor import EitCommandDescriptor
@@ -37,7 +37,7 @@ class EitLock(EitCommand):
self._quiet = False
self._name = EitLock.NAME
def parse(self):
def _get_parser(self):
descriptor = EitCommandDescriptor.obtain_descriptor(
EitLock.NAME)
parser = argparse.ArgumentParser(
@@ -60,6 +60,10 @@ class EitLock(EitCommand):
default=self._quiet,
help=_('quiet output, for scripting purposes'))
return parser
def parse(self):
parser = self._get_parser()
try:
nsargs = parser.parse_args(self._args)
except IOError:

View File

@@ -29,7 +29,7 @@ class EitLog(EitCommand):
ALIASES = []
ALLOW_UNPRIVILEGED = True
def parse(self):
def _get_parser(self):
descriptor = EitCommandDescriptor.obtain_descriptor(
EitLog.NAME)
parser = argparse.ArgumentParser(
@@ -40,6 +40,10 @@ class EitLog(EitCommand):
parser.add_argument("repo", nargs='?', default=None,
metavar="<repo>", help=_("repository"))
return parser
def parse(self):
parser = self._get_parser()
try:
nsargs = parser.parse_args(self._args)
except IOError as err:

View File

@@ -36,7 +36,7 @@ class EitMatch(EitCommand):
from text_query import print_package_info
self._pprinter = print_package_info
def parse(self):
def _get_parser(self):
descriptor = EitCommandDescriptor.obtain_descriptor(
EitMatch.NAME)
parser = argparse.ArgumentParser(
@@ -51,6 +51,10 @@ class EitMatch(EitCommand):
default=self._quiet,
help=_('quiet output, for scripting purposes'))
return parser
def parse(self):
parser = self._get_parser()
try:
nsargs = parser.parse_args(self._args)
except IOError:

View File

@@ -32,7 +32,7 @@ class EitMerge(EitCommand):
self._merge_branch = None
self._ask = True
def parse(self):
def _get_parser(self):
""" Overridden from EitCommit """
descriptor = EitCommandDescriptor.obtain_descriptor(
EitMerge.NAME)
@@ -50,9 +50,15 @@ class EitMerge(EitCommand):
default=not self._ask,
help=_("no stupid questions"))
return parser
def parse(self):
""" Overridden from EitCommit """
parser = self._get_parser()
try:
nsargs = parser.parse_args(self._args)
except IOError as err:
sys.stderr.write("%s\n" % (err,))
return parser.print_help, []
self._ask = not nsargs.quick

View File

@@ -27,7 +27,7 @@ class EitMv(EitCp):
NAME = "mv"
ALIASES = []
def parse(self):
def _get_parser(self):
""" Overridden from EitMv """
descriptor = EitCommandDescriptor.obtain_descriptor(
EitMv.NAME)
@@ -47,6 +47,10 @@ class EitMv(EitCp):
help=_("package names (all if none)"),
default=None)
return parser
def parse(self):
parser = self._get_parser()
try:
nsargs = parser.parse_args(self._args)
except IOError as err:

View File

@@ -35,7 +35,7 @@ class EitNotice(EitCommand):
EitCommand.__init__(self, args)
self._repository_id = None
def parse(self):
def _get_parser(self):
""" Overridden from EitCommand """
descriptor = EitCommandDescriptor.obtain_descriptor(
EitNotice.NAME)
@@ -66,6 +66,10 @@ class EitNotice(EitCommand):
metavar="<repo>", help=_("repository"))
show_parser.set_defaults(func=self._show)
return parser
def parse(self):
parser = self._get_parser()
try:
nsargs = parser.parse_args(self._args)
except IOError:

View File

@@ -38,7 +38,7 @@ class EitOwn(EitCommand):
from text_query import search_belongs
self._query_func = search_belongs
def parse(self):
def _get_parser(self):
descriptor = EitCommandDescriptor.obtain_descriptor(
EitOwn.NAME)
parser = argparse.ArgumentParser(
@@ -56,6 +56,10 @@ class EitOwn(EitCommand):
help=_("search packages in given repository"),
dest="inrepo", default=None)
return parser
def parse(self):
parser = self._get_parser()
try:
nsargs = parser.parse_args(self._args)
except IOError:

View File

@@ -48,7 +48,7 @@ class EitPush(EitCommand):
self._cleanup_only = False
self._as_repository_id = None
def parse(self):
def _get_parser(self):
descriptor = EitCommandDescriptor.obtain_descriptor(
EitPush.NAME)
parser = argparse.ArgumentParser(
@@ -69,6 +69,10 @@ class EitPush(EitCommand):
group.add_argument("--as", metavar="<repo>", default=None,
help=_("push as fake repository"), dest="asrepo")
return parser
def parse(self):
parser = self._get_parser()
try:
nsargs = parser.parse_args(self._args)
except IOError as err:

View File

@@ -10,15 +10,11 @@
"""
import sys
import os
import argparse
from entropy.output import blue, purple, darkgreen, bold, brown, teal, \
darkred
from entropy.const import const_convert_to_rawstring, etpConst
from entropy.output import purple, darkgreen, bold, brown, teal
from entropy.const import etpConst
from entropy.i18n import _
from entropy.security import Repository
from entropy.tools import convert_unix_time_to_human_time
from eit.commands.descriptor import EitCommandDescriptor
from eit.commands.command import EitCommand
@@ -42,7 +38,7 @@ class EitQuery(EitCommand):
from text_query import print_package_info
self._pprint = print_package_info
def parse(self):
def _get_parser(self):
""" Overridden from EitCommand """
descriptor = EitCommandDescriptor.obtain_descriptor(
EitQuery.NAME)
@@ -130,6 +126,11 @@ class EitQuery(EitCommand):
help=_("package description"))
desc_parser.set_defaults(func=self._desc)
return parser
def parse(self):
""" Overridden from EitCommand """
parser = self._get_parser()
try:
nsargs = parser.parse_args(self._args)
except IOError as err:

View File

@@ -34,7 +34,7 @@ class EitRemove(EitCommand):
self._nodeps = False
self._ask = True
def parse(self):
def _get_parser(self):
descriptor = EitCommandDescriptor.obtain_descriptor(
EitRemove.NAME)
parser = argparse.ArgumentParser(
@@ -54,6 +54,10 @@ class EitRemove(EitCommand):
default=not self._ask,
help=_("no stupid questions"))
return parser
def parse(self):
parser = self._get_parser()
try:
nsargs = parser.parse_args(self._args)
except IOError:

View File

@@ -27,7 +27,7 @@ class EitRepack(EitCommit):
NAME = "repack"
ALIASES = ["rp"]
def parse(self):
def _get_parser(self):
""" Overridden from EitCommit """
descriptor = EitCommandDescriptor.obtain_descriptor(
EitRepack.NAME)
@@ -41,7 +41,11 @@ class EitRepack(EitCommit):
parser.add_argument("--in", metavar="<repository>",
help=_("repack to given repository"),
default=None, dest="into")
return parser
def parse(self):
""" Overridden from EitCommit """
parser = self._get_parser()
try:
nsargs = parser.parse_args(self._args)
except IOError as err:

View File

@@ -29,8 +29,23 @@ class EitRepo(EitCommand):
ALIASES = []
ALLOW_UNPRIVILEGED = True
def _get_parser(self):
""" Overridden from EitCommand """
descriptor = EitCommandDescriptor.obtain_descriptor(
EitRepo.NAME)
parser = argparse.ArgumentParser(
description=descriptor.get_description(),
formatter_class=argparse.RawDescriptionHelpFormatter,
prog="%s %s" % (sys.argv[0], EitRepo.NAME))
return parser
def parse(self):
""" Overridden from EitRepo """
""" Overridden from EitCommand """
parser = self._get_parser()
try:
nsargs = parser.parse_args(self._args)
except IOError as err:
return parser.print_help, []
return self._call_locked, [self._void, None]
def _void(self, entropy_server):

View File

@@ -33,8 +33,8 @@ class EitReset(EitPush):
self._reset_repository_id = None
self._local = False
def parse(self):
""" Overridden from EitPush """
def _get_parser(self):
""" Overridden from EitCommand """
descriptor = EitCommandDescriptor.obtain_descriptor(
EitReset.NAME)
parser = argparse.ArgumentParser(
@@ -51,6 +51,11 @@ class EitReset(EitPush):
default=False,
help=_("do not pull the remote repository"))
return parser
def parse(self):
""" Overridden from EitPush """
parser = self._get_parser()
try:
nsargs = parser.parse_args(self._args)
except IOError as err:

View File

@@ -38,7 +38,8 @@ class EitRevgraph(EitCommand):
self._quiet = False
self._repository_id = None
def parse(self):
def _get_parser(self):
""" Overridden from EitCommand """
descriptor = EitCommandDescriptor.obtain_descriptor(
EitRevgraph.NAME)
parser = argparse.ArgumentParser(
@@ -58,6 +59,11 @@ class EitRevgraph(EitCommand):
default=self._quiet,
help=_('quiet output, for scripting purposes'))
return parser
def parse(self):
""" Overridden from EitCommand """
parser = self._get_parser()
try:
nsargs = parser.parse_args(self._args)
except IOError:

View File

@@ -37,7 +37,8 @@ class EitSearch(EitCommand):
self._pprinter = print_package_info
self._repository_id = None
def parse(self):
def _get_parser(self):
""" Overridden from EitCommand """
descriptor = EitCommandDescriptor.obtain_descriptor(
EitSearch.NAME)
parser = argparse.ArgumentParser(
@@ -55,6 +56,11 @@ class EitSearch(EitCommand):
default=self._quiet,
help=_('quiet output, for scripting purposes'))
return parser
def parse(self):
""" Overridden from EitCommand """
parser = self._get_parser()
try:
nsargs = parser.parse_args(self._args)
except IOError:

View File

@@ -33,7 +33,8 @@ class EitStatus(EitCommand):
ALIASES = ["st"]
ALLOW_UNPRIVILEGED = True
def parse(self):
def _get_parser(self):
""" Overridden from EitCommand """
descriptor = EitCommandDescriptor.obtain_descriptor(
EitStatus.NAME)
parser = argparse.ArgumentParser(
@@ -44,6 +45,11 @@ class EitStatus(EitCommand):
parser.add_argument("repo", nargs='?', default=None,
metavar="<repo>", help=_("repository"))
return parser
def parse(self):
""" Overridden from EitCommand """
parser = self._get_parser()
try:
nsargs = parser.parse_args(self._args)
except IOError as err:

View File

@@ -10,11 +10,10 @@
"""
import sys
import os
import argparse
from entropy.i18n import _
from entropy.output import darkgreen, teal, purple
from entropy.output import teal, purple
from entropy.server.interfaces import Server
from eit.commands.descriptor import EitCommandDescriptor
@@ -34,7 +33,7 @@ class EitTest(EitCommand):
self._nsargs = None
self._ask = False
def parse(self):
def _get_parser(self):
""" Overridden from EitCommand """
descriptor = EitCommandDescriptor.obtain_descriptor(
EitTest.NAME)
@@ -89,6 +88,11 @@ class EitTest(EitCommand):
help=_("no stupid questions"))
rempkgs_parser.set_defaults(func=self._rem_pkgtest)
return parser
def parse(self):
""" Overridden from EitCommand """
parser = self._get_parser()
try:
nsargs = parser.parse_args(self._args)
except IOError as err:

View File

@@ -35,7 +35,8 @@ class EitVacuum(EitCommand):
self._pretend = False
self._days = 0
def parse(self):
def _get_parser(self):
""" Overridden from EitCommand """
descriptor = EitCommandDescriptor.obtain_descriptor(
EitVacuum.NAME)
parser = argparse.ArgumentParser(
@@ -51,6 +52,11 @@ class EitVacuum(EitCommand):
parser.add_argument('--days', type=int, default=self._days,
help=_("expired since how many days, default: 0"))
return parser
def parse(self):
""" Overridden from EitCommand """
parser = self._get_parser()
try:
nsargs = parser.parse_args(self._args)
except IOError as err: