spacecmd/src/lib/misc.py | 46 ++++++++++++++++++++++++++++++++++++++------
spacecmd/src/lib/package.py | 3 +-
spacecmd/src/lib/shell.py | 1
3 files changed, 43 insertions(+), 7 deletions(-)
New commits:
commit 192b4418aef760fa8bd7a8d24e7a677e60b25ee5
Author: Aron Parsons <aparsons(a)redhat.com>
Date: Tue Jul 20 17:53:22 2010 -0400
don't print an empty line if there are no results from package_search
diff --git a/spacecmd/src/lib/package.py b/spacecmd/src/lib/package.py
index a567120..7916cb2 100644
--- a/spacecmd/src/lib/package.py
+++ b/spacecmd/src/lib/package.py
@@ -127,7 +127,8 @@ def do_package_search(self, args, doreturn = False):
if doreturn:
return packages
else:
- print '\n'.join(sorted(packages))
+ if len(packages):
+ print '\n'.join(sorted(packages))
####################
commit 901039ed982602d2f8f89e176c26c19d748fcd6d
Author: Aron Parsons <aparsons(a)redhat.com>
Date: Tue Jul 20 17:52:59 2010 -0400
temporarily update the command prompt to tell the user when caches are being
generated
diff --git a/spacecmd/src/lib/misc.py b/spacecmd/src/lib/misc.py
index 0125240..22a25e7 100644
--- a/spacecmd/src/lib/misc.py
+++ b/spacecmd/src/lib/misc.py
@@ -20,6 +20,7 @@
# NOTE: the 'self' variable is an instance of SpacewalkShell
+import readline
from getpass import getpass
from spacecmd.utils import *
@@ -409,8 +410,8 @@ def generate_errata_cache(self, force=False):
if not force and datetime.now() < self.errata_cache_expire:
return
- if logging.getLogger().getEffectiveLevel() == logging.DEBUG: print
- logging.debug('Regenerating internal errata cache')
+ # tell the user what's going on
+ self.replace_line_buffer('** Generating errata cache **')
channels = self.client.channel.listSoftwareChannels(self.session)
channels = [c.get('label') for c in channels]
@@ -432,6 +433,9 @@ def generate_errata_cache(self, force=False):
self.save_errata_cache()
+ # restore the original line buffer
+ self.replace_line_buffer()
+
def save_errata_cache(self):
save_cache(self.errata_cache_file,
@@ -451,8 +455,8 @@ def generate_package_cache(self, force=False):
if not force and datetime.now() < self.package_cache_expire:
return
- if logging.getLogger().getEffectiveLevel() == logging.DEBUG: print
- logging.debug('Regenerating internal package cache')
+ # tell the user what's going on
+ self.replace_line_buffer('** Generating package cache **')
channels = self.client.channel.listSoftwareChannels(self.session)
channels = [c.get('label') for c in channels]
@@ -479,6 +483,9 @@ def generate_package_cache(self, force=False):
self.save_package_caches()
+ # restore the original line buffer
+ self.replace_line_buffer()
+
def save_package_caches(self):
# store the cache to disk to speed things up
@@ -533,8 +540,8 @@ def generate_system_cache(self, force=False):
if not force and datetime.now() < self.system_cache_expire:
return
- if logging.getLogger().getEffectiveLevel() == logging.DEBUG: print
- logging.debug('Regenerating internal system cache')
+ # tell the user what's going on
+ self.replace_line_buffer('** Generating system cache **')
systems = self.client.system.listSystems(self.session)
@@ -547,6 +554,9 @@ def generate_system_cache(self, force=False):
self.save_system_cache()
+ # restore the original line buffer
+ self.replace_line_buffer()
+
def save_system_cache(self):
save_cache(self.system_cache_file,
@@ -774,4 +784,28 @@ def check_api_version(self, want):
# compare the whole value
return float(self.api_version) >= float(want)
+
+# replace the current line buffer
+def replace_line_buffer(self, msg = None):
+ # restore the old buffer if we weren't given a new line
+ if not msg:
+ msg = readline.get_line_buffer()
+
+ # don't print a prompt if there wasn't one to begin with
+ if len(readline.get_line_buffer()):
+ new_line = '%s%s' % (self.prompt, msg)
+ else:
+ new_line = '%s' % msg
+
+ # clear the current line
+ self.stdout.write('\r'.ljust(len(self.current_line) + 1))
+ self.stdout.flush()
+
+ # write the new line
+ self.stdout.write('\r%s' % new_line)
+ self.stdout.flush()
+
+ # keep track of what is displayed so we can clear it later
+ self.current_line = new_line
+
# vim:ts=4:expandtab:
diff --git a/spacecmd/src/lib/shell.py b/spacecmd/src/lib/shell.py
index 071075f..3c4d057 100644
--- a/spacecmd/src/lib/shell.py
+++ b/spacecmd/src/lib/shell.py
@@ -51,6 +51,7 @@ Type: 'help' for a list of commands
completekey = 'tab'
stdout = sys.stdout
prompt_template = 'spacecmd {SSM:##}> '
+ current_line = ''
# do nothing on an empty line
emptyline = lambda self: None
Show replies by date