examine 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitlab-ci.yml +17 -3
- data/.rubocop.yml +30 -0
- data/Dockerfile +8 -3
- data/Gemfile +3 -1
- data/Gemfile.lock +24 -1
- data/Rakefile +11 -3
- data/bin/console +4 -3
- data/bin/lint +11 -0
- data/bin/setup +1 -1
- data/bin/test +28 -0
- data/examine.gemspec +21 -17
- data/exe/examine +2 -1
- data/lib/examine.rb +4 -2
- data/lib/examine/cli.rb +2 -5
- data/lib/examine/cli/application.rb +3 -0
- data/lib/examine/cli/clair.rb +65 -37
- data/lib/examine/version.rb +3 -1
- metadata +48 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d0f7d30f66f0b34778516fcf2b3ce7c78c4e739a89dcf7b5dda1b1669e60b28f
|
4
|
+
data.tar.gz: bbe264a31ee2cee91c8039ff45839ced136073f08d7a820e5fa47a43fecc8464
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5bc0f075a47b62872f43635eef0d0cca61e6f998dbbe068fc13061a1b12db3aee7cda41183024292cc29828be2c890aed6ce82d6edaa86c138a95edc2ac1b98b
|
7
|
+
data.tar.gz: d4a4f951c73fc4aff984af309397913f1981ebbfc95cf8b8a1bb1f4cc4372706ab7eda9561bae47fb1dc0407a13e20900b74de787f1adcd732ba1ab7e3e562a8
|
data/.gitlab-ci.yml
CHANGED
@@ -25,9 +25,19 @@ rspec:
|
|
25
25
|
GIT_STRATEGY: none
|
26
26
|
stage: test
|
27
27
|
script:
|
28
|
-
- cd /examine/ &&
|
28
|
+
- cd /examine/ && ./bin/test
|
29
29
|
|
30
|
-
|
30
|
+
lint:
|
31
|
+
image:
|
32
|
+
name: $DOCKER_IMAGE
|
33
|
+
entrypoint: [""]
|
34
|
+
variables:
|
35
|
+
GIT_STRATEGY: none
|
36
|
+
stage: test
|
37
|
+
script:
|
38
|
+
- cd /examine/ && ./bin/lint
|
39
|
+
|
40
|
+
container_scanning:
|
31
41
|
image:
|
32
42
|
name: docker:stable
|
33
43
|
allow_failure: true
|
@@ -43,4 +53,8 @@ examine:
|
|
43
53
|
- apk add ruby curl
|
44
54
|
- gem install examine --no-document
|
45
55
|
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
|
46
|
-
- examine clair scan $DOCKER_IMAGE --clair_url $CLAIR_URL --ip $(hostname -i)
|
56
|
+
- examine clair scan $DOCKER_IMAGE --clair_url $CLAIR_URL --ip $(hostname -i) --report gl-container-scanning-report.json
|
57
|
+
artifacts:
|
58
|
+
reports:
|
59
|
+
container_scanning: gl-container-scanning-report.json
|
60
|
+
paths: [gl-container-scanning-report.json]
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
require:
|
2
|
+
- rubocop/cop/internal_affairs
|
3
|
+
- rubocop-rspec
|
4
|
+
AllCops:
|
5
|
+
Exclude:
|
6
|
+
- 'coverage/**/*'
|
7
|
+
- 'pkg/**/*'
|
8
|
+
- 'tmp/**/*'
|
9
|
+
- 'vendor/**/*'
|
10
|
+
TargetRubyVersion: 2.5
|
11
|
+
|
12
|
+
Layout/IndentFirstArrayElement:
|
13
|
+
EnforcedStyle: consistent
|
14
|
+
|
15
|
+
Metrics/BlockLength:
|
16
|
+
Exclude:
|
17
|
+
- '*.gemspec'
|
18
|
+
- 'spec/**/*.rb'
|
19
|
+
|
20
|
+
Metrics/LineLength:
|
21
|
+
Exclude:
|
22
|
+
- 'spec/**/*.rb'
|
23
|
+
IgnoredPatterns:
|
24
|
+
- '^#*'
|
25
|
+
|
26
|
+
Naming/RescuedExceptionsVariableName:
|
27
|
+
PreferredName: error
|
28
|
+
|
29
|
+
RSpec/NamedSubject:
|
30
|
+
Enabled: false
|
data/Dockerfile
CHANGED
@@ -1,11 +1,16 @@
|
|
1
1
|
FROM docker:stable
|
2
|
-
|
3
|
-
RUN gem install bundler -v '~> 2.0' --no-document
|
2
|
+
ENV PACKAGES build-base ruby ruby-dev ruby-json ruby-etc git curl
|
4
3
|
RUN wget https://github.com/arminc/clair-scanner/releases/download/v12/clair-scanner_linux_amd64 && \
|
5
4
|
mv clair-scanner_linux_amd64 /usr/local/bin/clair-scanner && \
|
6
5
|
chmod +x /usr/local/bin/clair-scanner
|
7
6
|
RUN mkdir -p /examine
|
8
7
|
WORKDIR /examine
|
9
8
|
COPY . .
|
10
|
-
RUN
|
9
|
+
RUN apk update && \
|
10
|
+
apk upgrade && \
|
11
|
+
apk add $PACKAGES && \
|
12
|
+
rm -fr /var/cache/apk/* && \
|
13
|
+
gem install bundler:'~> 2.0' --no-document && \
|
14
|
+
bundle install --jobs "$(nproc)" --quiet --path vendor/bundle && \
|
15
|
+
apk del build-base
|
11
16
|
ENTRYPOINT ["bundle", "exec", "./exe/examine"]
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
examine (0.1.
|
4
|
+
examine (0.1.2)
|
5
5
|
down (~> 4.8)
|
6
6
|
thor (~> 0.20)
|
7
7
|
|
@@ -10,10 +10,19 @@ GEM
|
|
10
10
|
specs:
|
11
11
|
addressable (2.6.0)
|
12
12
|
public_suffix (>= 2.0.2, < 4.0)
|
13
|
+
ast (2.4.0)
|
14
|
+
bundler-audit (0.6.1)
|
15
|
+
bundler (>= 1.2.0, < 3)
|
16
|
+
thor (~> 0.18)
|
13
17
|
diff-lcs (1.3)
|
14
18
|
down (4.8.1)
|
15
19
|
addressable (~> 2.5)
|
20
|
+
jaro_winkler (1.5.2)
|
21
|
+
parallel (1.17.0)
|
22
|
+
parser (2.6.3.0)
|
23
|
+
ast (~> 2.4.0)
|
16
24
|
public_suffix (3.1.1)
|
25
|
+
rainbow (3.0.0)
|
17
26
|
rake (10.5.0)
|
18
27
|
rspec (3.8.0)
|
19
28
|
rspec-core (~> 3.8.0)
|
@@ -28,16 +37,30 @@ GEM
|
|
28
37
|
diff-lcs (>= 1.2.0, < 2.0)
|
29
38
|
rspec-support (~> 3.8.0)
|
30
39
|
rspec-support (3.8.2)
|
40
|
+
rubocop (0.71.0)
|
41
|
+
jaro_winkler (~> 1.5.1)
|
42
|
+
parallel (~> 1.10)
|
43
|
+
parser (>= 2.6)
|
44
|
+
rainbow (>= 2.2.2, < 4.0)
|
45
|
+
ruby-progressbar (~> 1.7)
|
46
|
+
unicode-display_width (>= 1.4.0, < 1.7)
|
47
|
+
rubocop-rspec (1.33.0)
|
48
|
+
rubocop (>= 0.60.0)
|
49
|
+
ruby-progressbar (1.10.1)
|
31
50
|
thor (0.20.3)
|
51
|
+
unicode-display_width (1.6.0)
|
32
52
|
|
33
53
|
PLATFORMS
|
34
54
|
ruby
|
35
55
|
|
36
56
|
DEPENDENCIES
|
37
57
|
bundler (~> 2.0)
|
58
|
+
bundler-audit (~> 0.6)
|
38
59
|
examine!
|
39
60
|
rake (~> 10.0)
|
40
61
|
rspec (~> 3.0)
|
62
|
+
rubocop (~> 0.52)
|
63
|
+
rubocop-rspec (~> 1.22)
|
41
64
|
|
42
65
|
BUNDLED WITH
|
43
66
|
2.0.2
|
data/Rakefile
CHANGED
@@ -1,6 +1,14 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'bundler/audit/task'
|
4
|
+
require 'bundler/gem_tasks'
|
5
|
+
require 'rspec/core/rake_task'
|
6
|
+
require 'rubocop/rake_task'
|
3
7
|
|
4
8
|
RSpec::Core::RakeTask.new(:spec)
|
9
|
+
RuboCop::RakeTask.new(:rubocop)
|
10
|
+
Bundler::Audit::Task.new
|
5
11
|
|
6
|
-
|
12
|
+
desc 'run linters'
|
13
|
+
task lint: [:rubocop, 'bundle:audit']
|
14
|
+
task default: :spec
|
data/bin/console
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
|
-
require
|
4
|
-
require
|
4
|
+
require 'bundler/setup'
|
5
|
+
require 'examine'
|
5
6
|
|
6
7
|
# You can add fixtures and/or initialization code here to make experimenting
|
7
8
|
# with your gem easier. You can also use a different console, if you like.
|
@@ -10,5 +11,5 @@ require "examine"
|
|
10
11
|
# require "pry"
|
11
12
|
# Pry.start
|
12
13
|
|
13
|
-
require
|
14
|
+
require 'irb'
|
14
15
|
IRB.start(__FILE__)
|
data/bin/lint
ADDED
data/bin/setup
CHANGED
data/bin/test
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
|
3
|
+
# script/test: Run test suite for application. Optionally pass in a path to an
|
4
|
+
# individual test file to run a single test.
|
5
|
+
|
6
|
+
|
7
|
+
set -e
|
8
|
+
|
9
|
+
cd "$(dirname "$0")/.."
|
10
|
+
|
11
|
+
[ -z "$DEBUG" ] || set -x
|
12
|
+
|
13
|
+
# GC customizations
|
14
|
+
export RUBY_GC_MALLOC_LIMIT=79000000
|
15
|
+
export RUBY_GC_HEAP_INIT_SLOTS=800000
|
16
|
+
export RUBY_HEAP_FREE_MIN=100000
|
17
|
+
export RUBY_HEAP_SLOTS_INCREMENT=400000
|
18
|
+
export RUBY_HEAP_SLOTS_GROWTH_FACTOR=1
|
19
|
+
|
20
|
+
echo ["$(date "+%H:%M:%S")"] "==> Running setup…"
|
21
|
+
bin/setup
|
22
|
+
|
23
|
+
echo ["$(date "+%H:%M:%S")"] "==> Running tests…"
|
24
|
+
if [[ $# -eq 0 ]]; then
|
25
|
+
bundle exec rake spec
|
26
|
+
else
|
27
|
+
bundle exec rspec "$1"
|
28
|
+
fi
|
data/examine.gemspec
CHANGED
@@ -1,31 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
|
2
|
-
lib = File.expand_path(
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require
|
5
|
+
require 'examine/version'
|
5
6
|
|
6
7
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
8
|
+
spec.name = 'examine'
|
8
9
|
spec.version = Examine::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
10
|
+
spec.authors = ['mo']
|
11
|
+
spec.email = ['mo@mokhan.ca']
|
11
12
|
|
12
|
-
spec.summary =
|
13
|
-
spec.description =
|
14
|
-
spec.homepage =
|
15
|
-
spec.license =
|
13
|
+
spec.summary = 'Examine your software.'
|
14
|
+
spec.description = 'Examine your software.'
|
15
|
+
spec.homepage = 'https://gitlab.com/xlgmokha/examine/'
|
16
|
+
spec.license = 'MIT'
|
16
17
|
|
17
18
|
# Specify which files should be added to the gem when it is released.
|
18
19
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
19
|
-
spec.files = Dir.chdir(File.expand_path(
|
20
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
20
21
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
21
22
|
end
|
22
|
-
spec.bindir =
|
23
|
+
spec.bindir = 'exe'
|
23
24
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
24
|
-
spec.require_paths = [
|
25
|
+
spec.require_paths = ['lib']
|
25
26
|
|
26
|
-
spec.add_dependency
|
27
|
-
spec.add_dependency
|
28
|
-
spec.add_development_dependency
|
29
|
-
spec.add_development_dependency
|
30
|
-
spec.add_development_dependency
|
27
|
+
spec.add_dependency 'down', '~> 4.8'
|
28
|
+
spec.add_dependency 'thor', '~> 0.20'
|
29
|
+
spec.add_development_dependency 'bundler', '~> 2.0'
|
30
|
+
spec.add_development_dependency 'bundler-audit', '~> 0.6'
|
31
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
32
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
33
|
+
spec.add_development_dependency 'rubocop', '~> 0.52'
|
34
|
+
spec.add_development_dependency 'rubocop-rspec', '~> 1.22'
|
31
35
|
end
|
data/exe/examine
CHANGED
data/lib/examine.rb
CHANGED
data/lib/examine/cli.rb
CHANGED
data/lib/examine/cli/clair.rb
CHANGED
@@ -1,52 +1,55 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Examine
|
2
4
|
module CLI
|
5
|
+
# Entrypoint into the `examine clair` subcommand.
|
3
6
|
class Clair < Thor
|
4
|
-
DOWNLOAD_PATH = 'https://github.com/arminc/clair-scanner/releases/download/
|
7
|
+
DOWNLOAD_PATH = 'https://github.com/arminc/clair-scanner/releases/download/'
|
8
|
+
EXECUTABLES = {
|
9
|
+
'x86-darwin' => 'clair-scanner_darwin_386',
|
10
|
+
'x86-linux' => 'clair-scanner_linux_386',
|
11
|
+
'x86_64-darwin' => 'clair-scanner_darwin_amd64',
|
12
|
+
'x86_64-linux' => 'clair-scanner_linux_amd64'
|
13
|
+
}.freeze
|
14
|
+
|
15
|
+
class_option :local_scan_version, desc: 'Version of the arminc/clair-local-scan image', default: 'latest', type: :string
|
16
|
+
class_option :scanner_version, desc: 'Version of the clair-scanner', default: 'v12', type: :string
|
17
|
+
class_option :url, desc: 'clair url', default: 'http://localhost:6060', type: :string
|
5
18
|
|
6
|
-
method_option :clair_url, desc: 'clair url', default: 'http://localhost:6060', type: :string
|
7
19
|
desc 'start', 'start a clair server'
|
8
20
|
def start
|
9
21
|
ensure_docker_installed!
|
10
|
-
|
11
|
-
|
22
|
+
return if started?
|
23
|
+
|
24
|
+
spawn clair_db
|
25
|
+
wait_until clair_db_running?
|
12
26
|
|
13
|
-
spawn
|
14
|
-
wait_until
|
15
|
-
wait_until
|
27
|
+
spawn clair_local_scan(options[:local_scan_version])
|
28
|
+
wait_until clair_local_scan_running?
|
29
|
+
wait_until clair_local_scan_api_reachable?
|
16
30
|
end
|
17
31
|
|
18
32
|
method_option :ip, desc: 'ip address', default: nil, type: :string
|
19
|
-
method_option :clair_url, desc: 'clair url', default: 'http://localhost:6060', type: :string
|
20
33
|
method_option :report, desc: 'report file', default: 'report.json', type: :string
|
21
34
|
method_option :log, desc: 'log file', default: 'clair.log', type: :string
|
22
35
|
method_option :whitelist, desc: 'whitelist file', default: nil, type: :string
|
23
|
-
desc 'scan <image>', 'scan a specific image'
|
36
|
+
desc 'scan <image>', 'scan a specific docker image. E.g mokhan/minbox:latest'
|
24
37
|
def scan(image)
|
25
|
-
start
|
38
|
+
start
|
26
39
|
|
27
|
-
ip = options[:ip] || Socket.ip_address_list[1].ip_address
|
28
40
|
system "docker pull #{image}"
|
29
|
-
|
30
|
-
clair_exe,
|
31
|
-
"-c #{options[:clair_url]}",
|
32
|
-
"--ip #{ip}",
|
33
|
-
"-r #{options[:report]}",
|
34
|
-
"-l #{options[:log]}",
|
35
|
-
image,
|
36
|
-
]
|
37
|
-
command.insert(-2, "-w #{options[:whitelist]}") if options[:whitelist]
|
38
|
-
system command.join(' ')
|
41
|
+
system scan_command_for(image, options)
|
39
42
|
end
|
40
43
|
|
41
44
|
desc 'status', 'status of clair server'
|
42
45
|
def status
|
43
|
-
system
|
46
|
+
system 'docker ps -a | grep clair'
|
44
47
|
end
|
45
48
|
|
46
49
|
desc 'stop', 'stop all clair servers'
|
47
50
|
def stop
|
48
51
|
system "docker stop $(docker ps | grep -v CONT | grep clair- | awk '{ print $1 }')"
|
49
|
-
system
|
52
|
+
system 'docker system prune -f'
|
50
53
|
end
|
51
54
|
|
52
55
|
private
|
@@ -59,29 +62,34 @@ module Examine
|
|
59
62
|
@clair_exe ||= executable_exists?('clair-scanner') || download_clair
|
60
63
|
end
|
61
64
|
|
65
|
+
def scan_command_for(image, options)
|
66
|
+
command = [
|
67
|
+
clair_exe, "-c #{options[:url]}",
|
68
|
+
"--ip #{clair_ip}",
|
69
|
+
"-r #{options[:report]}", "-l #{options[:log]}", image
|
70
|
+
]
|
71
|
+
command.insert(-2, "-w #{options[:whitelist]}") if options[:whitelist]
|
72
|
+
command.join(' ')
|
73
|
+
end
|
74
|
+
|
75
|
+
def clair_ip
|
76
|
+
options[:ip] || Socket.ip_address_list[1].ip_address
|
77
|
+
end
|
78
|
+
|
62
79
|
def executable_exists?(exe)
|
63
|
-
|
64
|
-
File.exist?(File.join(x, exe))
|
65
|
-
end
|
66
|
-
return File.join(found, exe) if found
|
80
|
+
ENV['PATH'].split(':').map { |x| File.join(x, exe) }.find { |x| File.exist?(x) }
|
67
81
|
end
|
68
82
|
|
69
83
|
def download_clair
|
70
84
|
File.join(Dir.tmpdir, 'clair-scanner').tap do |exe|
|
71
|
-
Down.download(
|
85
|
+
Down.download(clair_download_url, destination: exe)
|
72
86
|
`chmod +x #{exe}`
|
73
87
|
end
|
74
88
|
end
|
75
89
|
|
76
|
-
def
|
77
|
-
|
78
|
-
exe
|
79
|
-
'x86-darwin' => 'clair-scanner_darwin_386',
|
80
|
-
'x86-linux' => 'clair-scanner_linux_386',
|
81
|
-
'x86_64-darwin' => 'clair-scanner_darwin_amd64',
|
82
|
-
'x86_64-linux' => 'clair-scanner_linux_amd64',
|
83
|
-
}["#{platform.cpu}-#{platform.os}"]
|
84
|
-
return URI.join(DOWNLOAD_PATH, exe).to_s if exe
|
90
|
+
def clair_download_url
|
91
|
+
exe = EXECUTABLES["#{Gem::Platform.local.cpu}-#{Gem::Platform.local.os}"]
|
92
|
+
return File.join(DOWNLOAD_PATH, options[:scanner_version], exe) if exe
|
85
93
|
|
86
94
|
raise 'clair-scanner could not be found in your PATH. Download from https://github.com/arminc/clair-scanner/releases'
|
87
95
|
end
|
@@ -100,6 +108,26 @@ module Examine
|
|
100
108
|
def ensure_docker_installed!
|
101
109
|
raise 'docker was not detected on the system' unless executable_exists?('docker')
|
102
110
|
end
|
111
|
+
|
112
|
+
def clair_db_running?
|
113
|
+
'docker ps --filter="name=clair-db" --filter="status=running" --filter="expose=5432/tcp" | grep -v CONT'
|
114
|
+
end
|
115
|
+
|
116
|
+
def clair_db
|
117
|
+
'docker run -d --name clair-db arminc/clair-db:latest'
|
118
|
+
end
|
119
|
+
|
120
|
+
def clair_local_scan(version)
|
121
|
+
"docker run --restart=unless-stopped -p 6060:6060 --link clair-db:postgres -d --name clair arminc/clair-local-scan:#{version}"
|
122
|
+
end
|
123
|
+
|
124
|
+
def clair_local_scan_running?
|
125
|
+
'docker ps --filter="name=clair" --filter="status=running" --filter="expose=6060/tcp" | grep -v CONT'
|
126
|
+
end
|
127
|
+
|
128
|
+
def clair_local_scan_api_reachable?(url = options[:url])
|
129
|
+
"curl -s #{url}/v1/namespaces > /dev/null"
|
130
|
+
end
|
103
131
|
end
|
104
132
|
end
|
105
133
|
end
|
data/lib/examine/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: examine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- mo
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-07-
|
11
|
+
date: 2019-07-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: down
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '2.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: bundler-audit
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0.6'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0.6'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: rake
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,6 +94,34 @@ dependencies:
|
|
80
94
|
- - "~>"
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: '3.0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rubocop
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0.52'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0.52'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rubocop-rspec
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '1.22'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '1.22'
|
83
125
|
description: Examine your software.
|
84
126
|
email:
|
85
127
|
- mo@mokhan.ca
|
@@ -91,6 +133,7 @@ files:
|
|
91
133
|
- ".gitignore"
|
92
134
|
- ".gitlab-ci.yml"
|
93
135
|
- ".rspec"
|
136
|
+
- ".rubocop.yml"
|
94
137
|
- Dockerfile
|
95
138
|
- Gemfile
|
96
139
|
- Gemfile.lock
|
@@ -98,7 +141,9 @@ files:
|
|
98
141
|
- README.md
|
99
142
|
- Rakefile
|
100
143
|
- bin/console
|
144
|
+
- bin/lint
|
101
145
|
- bin/setup
|
146
|
+
- bin/test
|
102
147
|
- examine.gemspec
|
103
148
|
- exe/examine
|
104
149
|
- lib/examine.rb
|
@@ -106,7 +151,7 @@ files:
|
|
106
151
|
- lib/examine/cli/application.rb
|
107
152
|
- lib/examine/cli/clair.rb
|
108
153
|
- lib/examine/version.rb
|
109
|
-
homepage: https://
|
154
|
+
homepage: https://gitlab.com/xlgmokha/examine/
|
110
155
|
licenses:
|
111
156
|
- MIT
|
112
157
|
metadata: {}
|