mirror of
https://github.com/inspec/inspec
synced 2024-11-27 07:00:39 +00:00
Allow end of options during Thor array parsing (#3547)
Signed-off-by: Jared Quick <jquick@chef.io>
This commit is contained in:
parent
b7b9581202
commit
0f42b31016
3 changed files with 37 additions and 7 deletions
|
@ -15,35 +15,41 @@ You can specify one or more reporters using the `--reporter` cli flag. You can a
|
||||||
Output json to screen.
|
Output json to screen.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
inspec exec --reporter json
|
inspec exec example_profile --reporter json
|
||||||
or
|
or
|
||||||
inspec exec --reporter json:-
|
inspec exec example_profile --reporter json:-
|
||||||
```
|
```
|
||||||
|
|
||||||
Output yaml to screen
|
Output yaml to screen
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
inspec exec --reporter yaml
|
inspec exec example_profile --reporter yaml
|
||||||
or
|
or
|
||||||
inspec exec --reporter yaml:-
|
inspec exec example_profile --reporter yaml:-
|
||||||
```
|
```
|
||||||
|
|
||||||
Output cli to screen and write json to a file.
|
Output cli to screen and write json to a file.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
inspec exec --reporter cli json:/tmp/output.json
|
inspec exec example_profile --reporter cli json:/tmp/output.json
|
||||||
```
|
```
|
||||||
|
|
||||||
Output nothing to screen and write junit and html to a file.
|
Output nothing to screen and write junit and html to a file.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
inspec exec --reporter junit:/tmp/junit.xml html:www/index.html
|
inspec exec example_profile --reporter junit:/tmp/junit.xml html:www/index.html
|
||||||
```
|
```
|
||||||
|
|
||||||
Output json to screen and write to a file. Write junit to a file.
|
Output json to screen and write to a file. Write junit to a file.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
inspec exec --reporter json junit:/tmp/junit.xml | tee out.json
|
inspec exec example_profile --reporter json junit:/tmp/junit.xml | tee out.json
|
||||||
|
```
|
||||||
|
|
||||||
|
If you wish to pass the profiles directly after specifying the reporters you will need to use the end of options flag `--`.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
inspec exec --reporter json junit:/tmp/junit.xml -- profile1 profile2
|
||||||
```
|
```
|
||||||
|
|
||||||
If you are using the cli option `--json-config` you can also set reporters.
|
If you are using the cli option `--json-config` you can also set reporters.
|
||||||
|
|
|
@ -6,6 +6,20 @@ require 'thor'
|
||||||
require 'inspec/log'
|
require 'inspec/log'
|
||||||
require 'inspec/profile_vendor'
|
require 'inspec/profile_vendor'
|
||||||
|
|
||||||
|
# Allow end of options during array type parsing
|
||||||
|
# https://github.com/erikhuda/thor/issues/631
|
||||||
|
class Thor::Arguments
|
||||||
|
def parse_array(_name)
|
||||||
|
return shift if peek.is_a?(Array)
|
||||||
|
array = []
|
||||||
|
while current_is_value?
|
||||||
|
break unless @parsing_options
|
||||||
|
array << shift
|
||||||
|
end
|
||||||
|
array
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
module Inspec
|
module Inspec
|
||||||
class BaseCLI < Thor
|
class BaseCLI < Thor
|
||||||
class << self
|
class << self
|
||||||
|
|
|
@ -28,6 +28,16 @@ describe 'inspec exec with json formatter' do
|
||||||
JSON::Schema.validate(data, schema)
|
JSON::Schema.validate(data, schema)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'can execute a simple file while using end of options after reporter cli option' do
|
||||||
|
out = inspec('exec --no-create-lockfile --reporter json -- ' + example_control)
|
||||||
|
out.stderr.must_equal ''
|
||||||
|
out.exit_status.must_equal 0
|
||||||
|
data = JSON.parse(out.stdout)
|
||||||
|
sout = inspec('schema exec-json')
|
||||||
|
schema = JSON.parse(sout.stdout)
|
||||||
|
JSON::Schema.validate(data, schema)
|
||||||
|
end
|
||||||
|
|
||||||
it 'can execute a profile and validate the json schema with target_id' do
|
it 'can execute a profile and validate the json schema with target_id' do
|
||||||
out = inspec('exec ' + example_profile + ' --reporter json --no-create-lockfile --target-id 1d3e399f-4d71-4863-ac54-84d437fbc444')
|
out = inspec('exec ' + example_profile + ' --reporter json --no-create-lockfile --target-id 1d3e399f-4d71-4863-ac54-84d437fbc444')
|
||||||
out.stderr.must_equal ''
|
out.stderr.must_equal ''
|
||||||
|
|
Loading…
Reference in a new issue