diff options
author | Hans Ulrich Niedermann <hun@n-dimensional.de> | 2008-07-26 11:26:15 +0200 |
---|---|---|
committer | Hans Ulrich Niedermann <hun@n-dimensional.de> | 2008-07-26 11:26:15 +0200 |
commit | 7a90533a806fd76e89795fff427473e7264662f7 (patch) | |
tree | 7bcf5c2f4455887a9786bdb60708126ef936329b /src/nbblib/nbbcommands.py | |
parent | 37ee99e8e72e2b8c50bec80f9b2bacc8dde04df7 (diff) | |
download | nbb-releases.tar.gz nbb-releases.tar.xz nbb-releases.zip |
nbb 0.2releases
* Switch to release tags including the package name
* Make automake's "nbb make" depend on configure etc.
Squashed commit of the following:
commit 9c4a035b71c7648b006b91a52e86edb2baea5138
Author: Hans Ulrich Niedermann <hun@n-dimensional.de>
Date: Sat Jul 26 10:36:31 2008 +0200
New version tag syntax: "make tag VER=1.2"
commit fefebc702664a683ceeafa800b0fe75178d63037
Author: Hans Ulrich Niedermann <hun@n-dimensional.de>
Date: Sat Jul 26 10:30:02 2008 +0200
Switch to release tags including the package name
This will reduce tag confusion when we fork into a
different project.
A tag like nbb-1.2 or foo-tools-1.2 is much more useful
than v1.2.
commit 330c382390ffbe3c361a763d5cee6febe1b30f5e
Author: Hans Ulrich Niedermann <hun@n-dimensional.de>
Date: Tue Jul 22 12:08:41 2008 +0200
Remove obsolete .htaccess file
commit b1d5fc06e235a45561bf53b4bfd07856cec4ea81
Author: Hans Ulrich Niedermann <hun@n-dimensional.de>
Date: Thu Jul 24 15:03:14 2008 +0200
Make automake's "make" command depend on configure
commit 958e81655ad143dfd54b099637db60db42f77fb0
Author: Hans Ulrich Niedermann <hun@n-dimensional.de>
Date: Thu Jul 24 15:00:33 2008 +0200
Adjust testcases for absolute builddirs
When configure is called as /path/to/configure instead of
../path/to/configure, the ".git/" test directories are reported
by "git init" using absolute pathnames, not must ".git/".
commit 72dac191283299c66356dc895eb6ba19982b16ab
Author: Hans Ulrich Niedermann <hun@n-dimensional.de>
Date: Thu Jul 24 14:59:19 2008 +0200
Fix typo in automake/distcheck test case
commit 7ca2e00188d8668b6b1f4116559ddae4e3cbb35c
Author: Hans Ulrich Niedermann <hun@n-dimensional.de>
Date: Thu Jul 24 13:32:49 2008 +0200
Open 0.1.x section in NEWS
commit e05a138e9e3099455fa23799550949512188b3c9
Author: Hans Ulrich Niedermann <hun@n-dimensional.de>
Date: Tue Jul 22 08:40:31 2008 +0200
Add license review to TODO
commit e2fd1f2e101486859899049147df7993c8042df7
Author: Hans Ulrich Niedermann <hun@n-dimensional.de>
Date: Sat Jul 19 00:25:12 2008 +0200
Ensure cmp/mv/rm rules are correct and silent
Make sure the "if cmp ... mv .. rm" in make rules are
correct and useful, and the cmp is silent.
commit b6e7a354ed1ab53aebdb775a800156629744a065
Author: Hans Ulrich Niedermann <hun@n-dimensional.de>
Date: Wed Jul 16 21:03:36 2008 +0200
Reflect code progress in TODO file, add plans
commit 9559ceb5def8ec5d2e5674e7bf25b484877b3e60
Author: Hans Ulrich Niedermann <hun@n-dimensional.de>
Date: Wed Jul 16 06:12:30 2008 +0200
Fix some issues found by pylint/pychecker
Includes real issues like wrong argument numbers and missing
ancestor __init__() calls, whitespace and comment cleanups.
Cannot "fix" everything because of a good amount of the warnings
raised by pylint/pychecker are false alarms.
commit c73487455e8d9a283fcb328eab8573c4c5bc73c7
Author: Hans Ulrich Niedermann <hun@n-dimensional.de>
Date: Wed Jul 16 06:11:57 2008 +0200
Add pylint and pychecker checks as "lint" target
Diffstat (limited to 'src/nbblib/nbbcommands.py')
-rw-r--r-- | src/nbblib/nbbcommands.py | 43 |
1 files changed, 26 insertions, 17 deletions
diff --git a/src/nbblib/nbbcommands.py b/src/nbblib/nbbcommands.py index 3b57fa9..79025de 100644 --- a/src/nbblib/nbbcommands.py +++ b/src/nbblib/nbbcommands.py @@ -3,25 +3,27 @@ nbblib.nbbcommands - implementation of nbb commands Copyright (C) 2008 Hans Ulrich Niedermann <hun@n-dimensional.de> """ -import sys import os import logging -import nbblib.package as package import nbblib.progutils as progutils import nbblib.vcs as vcs import nbblib.bs as bs -from nbblib.commands import * + + +from nbblib.commands import Command, CommandLineError def adjust_doc(doc): """Remove common whitespace at beginning of doc string lines""" - if not doc: return doc + if not doc: + return doc i = 0 - for i in range(len(doc)): + while i < len(doc): if doc[i] not in " \t": break + i += 1 prefix = doc[:i] rest_doc = doc[i:] almost_doc = rest_doc.replace("\n%s" % prefix, "\n") @@ -42,24 +44,26 @@ class HelpCommand(Command): usage = '[<command>]' def validate_args(self, *args, **kwargs): + """Accept zero args or one arg, a command name""" if len(args) == 1 and args[0] not in Command.plugins.keys(): raise CommandLineError("'%s' is an invalid command name" % args[0]) elif len(args) > 1: raise CommandLineError("'%s' command only takes one optional parameter" % self.name) def _print_command_list(self): + """Print list of commands (no help arg given)""" print "List of commands:" keys = Command.plugins.keys() if not keys: raise Exception("No commands found. Please lart the developer.") keys.sort() keys2 = Command.plugins.keys() - keys2.sort(lambda a,b: cmp(len(b),len(a))) - print "keys ", keys - print "keys2", keys2 + keys2.sort(lambda a, b: cmp(len(b), len(a))) + print "keys ", keys + print "keys2", keys2 fmt = "\t%%-%ds\t%%s" % len(keys2[0]) for k in keys: - print fmt % (k, Command.plugins[k].summary) + print fmt % (k, Command.plugins[k].summary) def _print_command_help(self, cmd): """print help for command cmd""" @@ -75,6 +79,7 @@ class HelpCommand(Command): print adjust_doc(c.__doc__) def run(self): + """Branch to the real commands""" if len(self.args) == 0: self._print_command_list() elif len(self.args) == 1: @@ -88,6 +93,7 @@ class InternalConfigCommand(Command): summary = 'print internal program configuration' validate_args = Command.validate_args_none def run(self): + """Just print info, do nothing else""" print "Source tree types:", ", ".join(vcs.VCSourceTree.plugins.keys()) print "Build system types:", ", ".join(bs.BSSourceTree.plugins.keys()) print "Commands:", ", ".join(Command.plugins.keys()) @@ -110,8 +116,8 @@ class SourceClassCommand(Command): logging.debug("bs_sourcetree %s", self.bs_sourcetree) cfg = self.vcs_sourcetree.config - for x in ('srcdir', 'builddir', 'installdir'): - logging.info("CONFIG %s %s", x, getattr(cfg, x)) + for dir_kind in ('srcdir', 'builddir', 'installdir'): + logging.info("CONFIG %s %s", dir_kind, getattr(cfg, dir_kind)) class DetectCommand(Command): @@ -204,9 +210,12 @@ class MakeCommand(SourceClassCommand): summary = 'run make in builddir' validate_args = Command.validate_args_any def run(self): - os.chdir(self.bs_sourcetree.config.builddir) - progutils.prog_run(["make"] + list(self.args), - self.context) + if hasattr(self.bs_sourcetree, 'make'): + self.bs_sourcetree.make(*self.args) + else: + os.chdir(self.bs_sourcetree.config.builddir) + progutils.prog_run(["make"] + list(self.args), + self.context) class GeneralRunCommand(SourceClassCommand): @@ -250,10 +259,10 @@ class GeneralShellCommand(GeneralRunCommand): def get_shell_prompt(self): return r",--[Ctrl-d or 'exit' to quit this %s shell for branch '%s']--\n| <%s %s> %s\n\`--[\u@\h \W]\$ " \ % (self.context.prog, self.vcs_sourcetree.branch_name, - self.context.prog, self.name, self.get_run_in_dir(), ) + self.context.prog, self.name, self.rundir, ) def run(self): self.chdir() - # FIXME: Allow using $SHELL or similar. + # TODO: Allow using $SHELL or similar. progutils.prog_run(['sh'] + list(self.args), self.context, env_update = {'PS1': self.get_shell_prompt()}) @@ -306,7 +315,7 @@ class ConfigCommand(SourceClassCommand): print getattr(self.vcs_sourcetree.config, self.args[0]) else: assert(False) - elif len(self.args) == 2: + elif len(self.args) == 2 and self.args[0] in git_set_items: if self.args[0] == 'builddir': self.vcs_sourcetree.config.builddir = self.args[1] elif self.args[0] == 'installdir': |