bootic_cli 0.1.6 → 0.1.7
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/.gitignore +1 -0
- data/bootic_cli.gemspec +1 -0
- data/lib/bootic_cli/cli.rb +13 -4
- data/lib/bootic_cli/connectivity.rb +8 -3
- data/lib/bootic_cli/session.rb +20 -3
- data/lib/bootic_cli/store.rb +35 -5
- data/lib/bootic_cli/version.rb +1 -1
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c4ace11ad0bee02a140f7a4312f4384d0398cd94
|
4
|
+
data.tar.gz: 8dcf28108c63796e137438d04773ce18fc40719f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7acf5cf6b282cd2b60bd2fb563f5d30298f504baff415783f5fea34721cc56518985ed1e8876c1b1c1967a3d9c400f0e62b6731bbfbcd79684715850e4cfcdc5
|
7
|
+
data.tar.gz: 48ef1a967baea28dea4f01e8bc0c44439f4be0f7e3a54177bafaf9798ef4376ac21d8874c57603b758ae8929d9e876a283d0b4ee36057f92696e5447587175b1
|
data/.gitignore
CHANGED
data/bootic_cli.gemspec
CHANGED
@@ -25,6 +25,7 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.add_development_dependency "bundler", "~> 1.9"
|
26
26
|
spec.add_development_dependency "rake", "~> 10.0"
|
27
27
|
spec.add_development_dependency "rspec"
|
28
|
+
spec.add_development_dependency "byebug"
|
28
29
|
|
29
30
|
spec.post_install_message = <<-END
|
30
31
|
Bootic client installed.
|
data/lib/bootic_cli/cli.rb
CHANGED
@@ -7,23 +7,32 @@ module BooticCli
|
|
7
7
|
include Thor::Actions
|
8
8
|
include BooticCli::Connectivity
|
9
9
|
|
10
|
+
DEFAULT_ENV = 'production'.freeze
|
10
11
|
CUSTOM_COMMANDS_DIR = ENV.fetch("BTC_CUSTOM_COMMANDS_PATH") { File.join(ENV["HOME"], "btc") }
|
11
12
|
|
13
|
+
class_option :environment, type: :string, default: DEFAULT_ENV, aliases: :e, banner: '<production>'
|
14
|
+
|
12
15
|
desc 'setup', 'Setup OAuth2 application credentials'
|
13
16
|
def setup
|
17
|
+
if options[:environment] != DEFAULT_ENV
|
18
|
+
auth_host = ask("Enter auth endpoint host (#{BooticClient::AUTH_HOST}):").chomp
|
19
|
+
api_root = ask("Enter API root (#{BooticClient::API_ROOT}):").chomp
|
20
|
+
auth_host = nil if auth_host == ""
|
21
|
+
api_root = nil if api_root == ""
|
22
|
+
end
|
14
23
|
client_id = ask("Enter your application's client_id:")
|
15
24
|
client_secret = ask("Enter your application's client_secret:")
|
16
25
|
|
17
|
-
session.setup(client_id, client_secret)
|
26
|
+
session.setup(client_id, client_secret, auth_host: auth_host, api_root: api_root)
|
18
27
|
|
19
|
-
say "Credentials stored. client_id: #{client_id}"
|
28
|
+
say "Credentials stored for #{options[:environment]} environment. client_id: #{client_id}"
|
20
29
|
end
|
21
30
|
|
22
31
|
desc 'login', 'Login to your Bootic account'
|
23
32
|
def login(scope = 'admin')
|
24
33
|
if !session.setup?
|
25
|
-
say "App not configured. Running setup first. You only need to do this once."
|
26
|
-
say "Please create an OAuth2 app and get its credentials at https://auth.bootic.net/dev/apps"
|
34
|
+
say "App not configured for #{options[:environment]} environment. Running setup first. You only need to do this once."
|
35
|
+
say "Please create an OAuth2 app and get its credentials at https://auth.bootic.net/dev/apps or the relevant auth app for your environment"
|
27
36
|
invoke :setup, []
|
28
37
|
end
|
29
38
|
|
@@ -8,7 +8,7 @@ module BooticCli
|
|
8
8
|
|
9
9
|
def session
|
10
10
|
@session ||= (
|
11
|
-
store = BooticCli::Store.new(ENV['HOME'])
|
11
|
+
store = BooticCli::Store.new(base_dir: ENV['HOME'], namespace: options[:environment])
|
12
12
|
BooticCli::Session.new(store)
|
13
13
|
)
|
14
14
|
end
|
@@ -22,13 +22,18 @@ module BooticCli
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def logged_in_action(&block)
|
25
|
+
if session.needs_upgrade?
|
26
|
+
say_status "WARNING", "old store data structure, restructuring to support multiple environments"
|
27
|
+
session.upgrade!
|
28
|
+
end
|
29
|
+
|
25
30
|
if !session.setup?
|
26
|
-
say_status "ERROR", "No app credentials. Run btc setup", :red
|
31
|
+
say_status "ERROR", "No app credentials. Run btc setup -e #{options[:environment]}", :red
|
27
32
|
return
|
28
33
|
end
|
29
34
|
|
30
35
|
if !session.logged_in?
|
31
|
-
say_status "ERROR", "No access token. Run btc login", :red
|
36
|
+
say_status "ERROR", "No access token. Run btc login -e #{options[:environment]}", :red
|
32
37
|
return
|
33
38
|
end
|
34
39
|
|
data/lib/bootic_cli/session.rb
CHANGED
@@ -8,6 +8,14 @@ module BooticCli
|
|
8
8
|
@store = store
|
9
9
|
end
|
10
10
|
|
11
|
+
def needs_upgrade?
|
12
|
+
store.needs_upgrade?
|
13
|
+
end
|
14
|
+
|
15
|
+
def upgrade!
|
16
|
+
store.upgrade!
|
17
|
+
end
|
18
|
+
|
11
19
|
def setup?
|
12
20
|
store.transaction do
|
13
21
|
store['client_id'] && store['client_secret']
|
@@ -22,10 +30,14 @@ module BooticCli
|
|
22
30
|
setup? && logged_in?
|
23
31
|
end
|
24
32
|
|
25
|
-
def setup(client_id, client_secret)
|
33
|
+
def setup(client_id, client_secret, auth_host: nil, api_root: nil)
|
34
|
+
upgrade!
|
35
|
+
|
26
36
|
store.transaction do
|
27
37
|
store['client_id'] = client_id
|
28
38
|
store['client_secret'] = client_secret
|
39
|
+
store['auth_host'] = auth_host if auth_host
|
40
|
+
store['api_root'] = api_root if api_root
|
29
41
|
end
|
30
42
|
end
|
31
43
|
|
@@ -49,11 +61,14 @@ module BooticCli
|
|
49
61
|
|
50
62
|
def config
|
51
63
|
@config ||= store.transaction do
|
52
|
-
{
|
64
|
+
h = {
|
53
65
|
client_id: store['client_id'],
|
54
66
|
client_secret: store['client_secret'],
|
55
67
|
access_token: store['access_token']
|
56
68
|
}
|
69
|
+
h[:auth_host] = store['auth_host'] if store['auth_host']
|
70
|
+
h[:api_root] = store['api_root'] if store['api_root']
|
71
|
+
h
|
57
72
|
end
|
58
73
|
end
|
59
74
|
|
@@ -77,6 +92,8 @@ module BooticCli
|
|
77
92
|
@client ||= begin
|
78
93
|
raise "First setup credentials and log in" unless ready?
|
79
94
|
BooticClient.configure do |c|
|
95
|
+
c.auth_host = config[:auth_host] if config[:auth_host]
|
96
|
+
c.api_root = config[:api_root] if config[:api_root]
|
80
97
|
c.client_id = config[:client_id]
|
81
98
|
c.client_secret = config[:client_secret]
|
82
99
|
c.logger = Logger.new(STDOUT)
|
@@ -98,7 +115,7 @@ module BooticCli
|
|
98
115
|
@oauth_client ||= OAuth2::Client.new(
|
99
116
|
config[:client_id],
|
100
117
|
config[:client_secret],
|
101
|
-
site: BooticClient.auth_host
|
118
|
+
site: (config[:auth_host] || BooticClient.auth_host)
|
102
119
|
)
|
103
120
|
end
|
104
121
|
|
data/lib/bootic_cli/store.rb
CHANGED
@@ -4,21 +4,26 @@ require 'pstore'
|
|
4
4
|
module BooticCli
|
5
5
|
|
6
6
|
class Store
|
7
|
-
|
7
|
+
VERSION = 1
|
8
|
+
DEFAULT_NAMESPACE = 'production'.freeze
|
8
9
|
DIRNAME = '.btc'.freeze
|
9
10
|
FILE_NAME = 'store.pstore'.freeze
|
10
11
|
|
11
|
-
def initialize(base_dir
|
12
|
+
def initialize(base_dir: ENV['HOME'], dir: DIRNAME, namespace: DEFAULT_NAMESPACE)
|
12
13
|
@base_dir = File.join(base_dir, dir)
|
14
|
+
@namespace = namespace
|
13
15
|
FileUtils.mkdir_p @base_dir
|
14
16
|
end
|
15
17
|
|
16
18
|
def []=(k, v)
|
17
|
-
store[
|
19
|
+
hash = store[namespace] || {}
|
20
|
+
hash[k] = v
|
21
|
+
store[namespace] = hash
|
18
22
|
end
|
19
23
|
|
20
24
|
def [](k)
|
21
|
-
store[
|
25
|
+
hash = store[namespace] || {}
|
26
|
+
hash[k]
|
22
27
|
end
|
23
28
|
|
24
29
|
def transaction(&block)
|
@@ -29,9 +34,34 @@ module BooticCli
|
|
29
34
|
FileUtils.rm_rf base_dir
|
30
35
|
end
|
31
36
|
|
37
|
+
def needs_upgrade?
|
38
|
+
transaction do
|
39
|
+
store['version'].to_i < VERSION && store[DEFAULT_NAMESPACE].nil?
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def upgrade!
|
44
|
+
return unless needs_upgrade?
|
45
|
+
|
46
|
+
transaction do
|
47
|
+
current_values = {}
|
48
|
+
store.roots.each do |r|
|
49
|
+
v = store[r]
|
50
|
+
store.delete(r)
|
51
|
+
current_values[r] = v
|
52
|
+
end
|
53
|
+
|
54
|
+
current_values.each do |k, v|
|
55
|
+
self[k] = v
|
56
|
+
end
|
57
|
+
|
58
|
+
self['version'] = VERSION
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
32
62
|
private
|
33
63
|
|
34
|
-
attr_reader :base_dir
|
64
|
+
attr_reader :base_dir, :namespace
|
35
65
|
|
36
66
|
def store
|
37
67
|
@store ||= PStore.new(File.join(base_dir, FILE_NAME))
|
data/lib/bootic_cli/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bootic_cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ismael Celis
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-07-
|
11
|
+
date: 2017-07-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: byebug
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
83
97
|
description: Bootic command line.
|
84
98
|
email:
|
85
99
|
- ismaelct@gmail.com
|