diff options
author | Sam Thursfield <sam.thursfield@codethink.co.uk> | 2015-01-02 10:58:07 +0000 |
---|---|---|
committer | Sam Thursfield <sam.thursfield@codethink.co.uk> | 2015-01-02 11:09:19 +0000 |
commit | 1cae2ef7ad302c1da6f17ee3c632800e69ae6a8a (patch) | |
tree | 43de20a3f321d3f9612dc19632731e5e823cea74 | |
parent | f33748d6e6795751e7ea628d5f4e8478353a88ee (diff) | |
download | morph-1cae2ef7ad302c1da6f17ee3c632800e69ae6a8a.tar.gz |
Fix logging and display of commandlines being executed by Morph
We were attempting to display commandlines with correct shell-escaping,
but the logic was super broken so users would end up seeing this sort of
thing instead:
2015-01-02 10:25:42 # g | i | t | | r | e | v | - | p | a | r | s | e
| | - | - | v | e | r | i | f | y | | ' | 9 | 8 | f | e | a | 8 | 7
| b | 7 | 2 | 7 | 2 | 5 | 3 | e | 7 | f | f | 8 | 1 | 0 | 5 | 4 | 3 | 4
| c | 9 | e | a | 9 | 0 | 2 | b | b | 6 | a | 6 | f | 7 | e | ^ | { | c
| o | m | m | i | t | } | '
Commandlines should now display as intended, more like this:
2015-01-02 10:57:17 # git rev-parse --verify
'9df9643842e4b4d8ece710fe6105f32fa38a0d22^{commit}'
This broken logic was introduced as a post-review fixup in merge commit
c57952ef44a0f1f161441970fcf2f27a39b0de7c.
-rw-r--r-- | morphlib/app.py | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/morphlib/app.py b/morphlib/app.py index eb0ff3b7..6710e4f0 100644 --- a/morphlib/app.py +++ b/morphlib/app.py @@ -1,4 +1,4 @@ -# Copyright (C) 2011-2014 Codethink Limited +# Copyright (C) 2011-2015 Codethink Limited # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -361,12 +361,13 @@ class Morph(cliapp.Application): if print_command: # Print the command line - commands = [argv] + list(args) - for command in commands: + commands = [] + for command in [argv] + list(args): if isinstance(command, list): - for i in xrange(0, len(command)): - command[i] = str(command[i]) - commands = ' '.join(map(pipes.quote, command)) + command_str = ' '.join(map(pipes.quote, command)) + else: + command_str = pipes.quote(command) + commands.append(command_str) self.status(msg='# %(cmdline)s', cmdline=' | '.join(commands), |