diff options
author | Anish Athalye <me@anishathalye.com> | 2018-11-21 19:50:46 -0500 |
---|---|---|
committer | Anish Athalye <me@anishathalye.com> | 2018-11-21 19:50:46 -0500 |
commit | 5e2d40939e567a68eb8f4eecc23752df6f183664 (patch) | |
tree | 249a18e202fd1a86fd24841a10db8210d9dfd003 | |
parent | 8558a5dca0232879c95243747f94a2bf7b8869e4 (diff) | |
parent | dc057866935db382d3be8559d7079b122235ff51 (diff) |
Merge branch 'thtliife/suppress-shell-cmd'
-rw-r--r-- | README.md | 6 | ||||
-rw-r--r-- | dotbot/plugins/shell.py | 7 | ||||
-rw-r--r-- | test/tests/shell-quiet.bash | 30 |
3 files changed, 41 insertions, 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 diff --git a/dotbot/plugins/shell.py b/dotbot/plugins/shell.py index b6f5184..06a9a89 100644 --- a/dotbot/plugins/shell.py +++ b/dotbot/plugins/shell.py @@ -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') diff --git a/test/tests/shell-quiet.bash b/test/tests/shell-quiet.bash new file mode 100644 index 0000000..a69f6c5 --- /dev/null +++ b/test/tests/shell-quiet.bash @@ -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 +' |