appcanary 0.1.3 → 0.1.4
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/bin/appcanary +69 -37
- data/lib/appcanary/http.rb +2 -0
- data/lib/appcanary/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 76000ce63fdd1ce397b93e7a4152e1b591c1017f
|
4
|
+
data.tar.gz: '0984f418130bed51fe3b0038b92a1a1c35d561ea'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 84cdae3c74b1b9bd1bbdf1cf16a3201a9205a2a95440e75fb68e8b607cd6e33bbdbd25294875e678298ed99d795462a1f02f80332e1fc263d4617e052377b524
|
7
|
+
data.tar.gz: e2daded1e92c193d4e1536fea763fd9308ea5c0a1194ef1f5295a989a8be86615771e7990c0b8ab18924e52b492ac53a7862dd872fe5be18e8bd4c75d665223f
|
data/bin/appcanary
CHANGED
@@ -1,77 +1,109 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
require "
|
3
|
+
require "rubygems"
|
4
4
|
require "appcanary"
|
5
5
|
require "optparse"
|
6
6
|
|
7
7
|
class AppcanaryCLI
|
8
8
|
class << self
|
9
|
-
|
9
|
+
TOP_LEVEL_HELP = <<-HELP
|
10
|
+
Usage: appcanary check|update [options]
|
11
|
+
|
12
|
+
Subcommands are:
|
13
|
+
check - Check your gem bundle for vulnerabilities
|
14
|
+
update - Update an Appcanary monitor
|
15
|
+
|
16
|
+
See "appcanary COMMAND --help" for more information about a specific command.
|
17
|
+
HELP
|
18
|
+
|
19
|
+
REQUIRED_PARAMS = {
|
20
|
+
api_key: "Must provide an API key.",
|
21
|
+
gemfile_lock_path: "Must provide a path to a Gemfile.lock",
|
22
|
+
monitor_name: "Must provide a monitor name"
|
23
|
+
}
|
24
|
+
|
25
|
+
REQUIRED = { "check" => [:api_key, :gemfile_lock_path],
|
26
|
+
"update" => [:api_key, :gemfile_lock_path, :monitor_name] }
|
27
|
+
|
28
|
+
def api_key_opt(opts, vals)
|
10
29
|
opts.on("-a", "--api-key API_KEY", :REQUIRED,
|
11
|
-
"Your Appcanary API key.
|
30
|
+
"Your Appcanary API key. Required; find it at https://appcanary.com/settings") do |ak|
|
31
|
+
vals[:api_key] = ak
|
12
32
|
Appcanary.api_key = ak
|
13
33
|
end
|
14
34
|
end
|
15
35
|
|
16
|
-
def gemfile_lock_opt(opts)
|
17
|
-
opts.on("-g", "--gemfile-lock GEMFILE_LOCK", :
|
18
|
-
"Path to the Gemfile.lock to ship to Appcanary") do |gl|
|
36
|
+
def gemfile_lock_opt(opts, vals)
|
37
|
+
opts.on("-g", "--gemfile-lock GEMFILE_LOCK", :REQUIRED,
|
38
|
+
"Path to the Gemfile.lock to ship to Appcanary. Required.") do |gl|
|
39
|
+
vals[:gemfile_lock_path] = gl
|
19
40
|
Appcanary.gemfile_lock_path = gl
|
20
41
|
end
|
21
42
|
end
|
22
43
|
|
23
|
-
def base_uri_opt(opts)
|
44
|
+
def base_uri_opt(opts, vals)
|
24
45
|
opts.on("-b", "--base-uri BASE_URI", :OPTIONAL,
|
25
46
|
"The URL for the Appcanary endpoint to use.") do |bu|
|
26
47
|
Appcanary.base_uri = bu
|
27
48
|
end
|
28
49
|
end
|
29
50
|
|
30
|
-
def monitor_name_opt(opts)
|
51
|
+
def monitor_name_opt(opts, vals)
|
31
52
|
opts.on("-m", "--monitor-name MONITOR_NAME", :REQUIRED,
|
32
|
-
"The name of the Appcanary monitor to update.") do |mn|
|
53
|
+
"The name of the Appcanary monitor to update. Required.") do |mn|
|
54
|
+
vals[:monitor_name] = mn
|
33
55
|
Appcanary.monitor_name = mn
|
34
56
|
end
|
35
57
|
end
|
36
58
|
|
37
|
-
def
|
38
|
-
|
39
|
-
|
40
|
-
check - Check your gem bundle for vulnerabilities
|
41
|
-
update - Update an Appcanary monitor
|
42
|
-
|
43
|
-
See "appcanary COMMAND --help" for more information about a specific command.
|
44
|
-
HELP
|
45
|
-
|
46
|
-
common = OptionParser.new do |opts|
|
47
|
-
opts.banner = "Usage: appcanary check|update [options]"
|
48
|
-
opts.separator ""
|
49
|
-
opts.separator top_level_help
|
59
|
+
def print_help(banner, msg=nil)
|
60
|
+
if msg
|
61
|
+
puts "#{msg}\n\n"
|
50
62
|
end
|
51
63
|
|
64
|
+
puts banner
|
65
|
+
exit
|
66
|
+
end
|
67
|
+
|
68
|
+
def parse(args)
|
69
|
+
command = args.first
|
70
|
+
values = {}
|
71
|
+
|
52
72
|
subcommands = {
|
53
73
|
"update" => OptionParser.new do |opts|
|
54
74
|
opts.banner = "Usage: update [options]"
|
55
|
-
api_key_opt(opts)
|
56
|
-
base_uri_opt(opts)
|
57
|
-
gemfile_lock_opt(opts)
|
58
|
-
monitor_name_opt(opts)
|
75
|
+
api_key_opt(opts, values)
|
76
|
+
base_uri_opt(opts, values)
|
77
|
+
gemfile_lock_opt(opts, values)
|
78
|
+
monitor_name_opt(opts, values)
|
59
79
|
end,
|
60
80
|
"check" => OptionParser.new do |opts|
|
61
81
|
opts.banner = "Usage: check [options]"
|
62
|
-
api_key_opt(opts)
|
63
|
-
base_uri_opt(opts)
|
64
|
-
gemfile_lock_opt(opts)
|
82
|
+
api_key_opt(opts, values)
|
83
|
+
base_uri_opt(opts, values)
|
84
|
+
gemfile_lock_opt(opts, values)
|
65
85
|
end
|
66
86
|
}
|
67
87
|
|
68
|
-
common.order!
|
69
|
-
|
70
|
-
command = ARGV.shift
|
71
88
|
if command.nil?
|
72
|
-
|
73
|
-
|
74
|
-
|
89
|
+
print_help TOP_LEVEL_HELP
|
90
|
+
elsif subcommands[command].nil?
|
91
|
+
print_help TOP_LEVEL_HELP,
|
92
|
+
"Sorry, I don't know '#{command}'."
|
93
|
+
else
|
94
|
+
subcmd = subcommands[command]
|
95
|
+
|
96
|
+
begin
|
97
|
+
opt = subcmd.parse(args[1..-1])
|
98
|
+
rescue => e
|
99
|
+
print_help subcmd.help, e
|
100
|
+
end
|
101
|
+
|
102
|
+
if values.empty?
|
103
|
+
print_help subcmd.help
|
104
|
+
elsif missing = REQUIRED[command].find { |flag| !values.keys.include?(flag) }
|
105
|
+
print_help subcmd.help, REQUIRED_PARAMS[missing]
|
106
|
+
end
|
75
107
|
end
|
76
108
|
|
77
109
|
command
|
@@ -91,9 +123,9 @@ def run_check
|
|
91
123
|
end
|
92
124
|
|
93
125
|
def run_appcanary_command
|
94
|
-
case AppcanaryCLI.parse
|
126
|
+
case AppcanaryCLI.parse(ARGV)
|
95
127
|
when "update"
|
96
|
-
Appcanary.update_monitor!
|
128
|
+
puts Appcanary.update_monitor!
|
97
129
|
when "check"
|
98
130
|
run_check
|
99
131
|
end
|
data/lib/appcanary/http.rb
CHANGED
data/lib/appcanary/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: appcanary
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- J Irving
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-
|
12
|
+
date: 2017-08-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: multipart-post
|
@@ -139,7 +139,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
139
139
|
version: '0'
|
140
140
|
requirements: []
|
141
141
|
rubyforge_project:
|
142
|
-
rubygems_version: 2.5.
|
142
|
+
rubygems_version: 2.5.2
|
143
143
|
signing_key:
|
144
144
|
specification_version: 4
|
145
145
|
summary: Check your dependencies against Appcanary's database.
|