summaryrefslogtreecommitdiffstats
path: root/src/nbblib/nbbcommands.py
diff options
context:
space:
mode:
authorHans Ulrich Niedermann <hun@n-dimensional.de>2008-07-26 11:26:15 +0200
committerHans Ulrich Niedermann <hun@n-dimensional.de>2008-07-26 11:26:15 +0200
commit7a90533a806fd76e89795fff427473e7264662f7 (patch)
tree7bcf5c2f4455887a9786bdb60708126ef936329b /src/nbblib/nbbcommands.py
parent37ee99e8e72e2b8c50bec80f9b2bacc8dde04df7 (diff)
downloadnbb-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.py43
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':