Merge branch 'thtliife/suppress-shell-cmd'
This commit is contained in:
commit
5e2d40939e
3 changed files with 41 additions and 2 deletions
|
@ -281,8 +281,9 @@ shell command and the second is an optional human-readable description.
|
|||
|
||||
Shell commands support an extended syntax as well, which provides more
|
||||
fine-grained control. A command can be specified as a dictionary that contains
|
||||
the command to be run, a description, and whether `stdin`, `stdout`, and
|
||||
`stderr` are enabled. In this syntax, all keys are optional except for the
|
||||
the command to be run, a description, whether to suppress outputting the
|
||||
command in the display via `quiet`, and whether `stdin`, `stdout`,
|
||||
and `stderr` are enabled. In this syntax, all keys are optional except for the
|
||||
command itself.
|
||||
|
||||
#### Example
|
||||
|
@ -296,6 +297,7 @@ command itself.
|
|||
stdin: true
|
||||
stdout: true
|
||||
description: Reading and printing variable
|
||||
quiet: true
|
||||
-
|
||||
command: read fail
|
||||
stderr: true
|
||||
|
|
|
@ -22,12 +22,15 @@ class Shell(dotbot.Plugin):
|
|||
with open(os.devnull, 'w') as devnull:
|
||||
for item in data:
|
||||
stdin = stdout = stderr = devnull
|
||||
quiet = False
|
||||
if defaults.get('stdin', False) == True:
|
||||
stdin = None
|
||||
if defaults.get('stdout', False) == True:
|
||||
stdout = None
|
||||
if defaults.get('stderr', False) == True:
|
||||
stderr = None
|
||||
if defaults.get('quiet', False) == True:
|
||||
quiet = True
|
||||
if isinstance(item, dict):
|
||||
cmd = item['command']
|
||||
msg = item.get('description', None)
|
||||
|
@ -37,6 +40,8 @@ class Shell(dotbot.Plugin):
|
|||
stdout = None if item['stdout'] == True else devnull
|
||||
if 'stderr' in item:
|
||||
stderr = None if item['stderr'] == True else devnull
|
||||
if 'quiet' in item:
|
||||
quiet = True if item['quiet'] == True else False
|
||||
elif isinstance(item, list):
|
||||
cmd = item[0]
|
||||
msg = item[1] if len(item) > 1 else None
|
||||
|
@ -45,6 +50,8 @@ class Shell(dotbot.Plugin):
|
|||
msg = None
|
||||
if msg is None:
|
||||
self._log.lowinfo(cmd)
|
||||
elif quiet:
|
||||
self._log.lowinfo('%s' % msg)
|
||||
else:
|
||||
self._log.lowinfo('%s [%s]' % (msg, cmd))
|
||||
executable = os.environ.get('SHELL')
|
||||
|
|
30
test/tests/shell-quiet.bash
Normal file
30
test/tests/shell-quiet.bash
Normal file
|
@ -0,0 +1,30 @@
|
|||
test_description='shell command can be suppressed in output'
|
||||
. '../test-lib.bash'
|
||||
|
||||
# when not quiet, expect to see command that was run
|
||||
test_expect_success 'run' '
|
||||
(run_dotbot | grep "echo banana") <<EOF
|
||||
- shell:
|
||||
- command: echo banana
|
||||
description: echoing a thing...
|
||||
EOF
|
||||
'
|
||||
|
||||
# when quiet, expect command to be suppressed
|
||||
test_expect_success 'run 2' '
|
||||
(run_dotbot | (! grep "echo banana")) <<EOF
|
||||
- shell:
|
||||
- command: echo banana
|
||||
description: echoing a thing...
|
||||
quiet: true
|
||||
EOF
|
||||
'
|
||||
|
||||
# when no description, expect to see command
|
||||
test_expect_success 'run 3' '
|
||||
(run_dotbot | grep "echo banana") <<EOF
|
||||
- shell:
|
||||
- command: echo banana
|
||||
quiet: true
|
||||
EOF
|
||||
'
|
Loading…
Reference in a new issue