acquia_toolbelt 2.3.2 → 2.4.0
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.
- data/README.md +16 -9
- data/acquia_toolbelt.gemspec +1 -1
- data/lib/acquia_toolbelt/cli/auth.rb +1 -1
- data/lib/acquia_toolbelt/cli/database.rb +54 -25
- data/lib/acquia_toolbelt/cli/domain.rb +11 -5
- data/lib/acquia_toolbelt/cli/environment.rb +22 -6
- data/lib/acquia_toolbelt/cli/server.rb +38 -18
- data/lib/acquia_toolbelt/cli/site.rb +19 -14
- data/lib/acquia_toolbelt/cli/ssh.rb +20 -4
- data/lib/acquia_toolbelt/cli/svn.rb +14 -3
- data/lib/acquia_toolbelt/cli/task.rb +27 -14
- data/lib/acquia_toolbelt/cli/ui.rb +20 -0
- data/lib/acquia_toolbelt/cli.rb +1 -0
- data/lib/acquia_toolbelt/version.rb +1 -1
- metadata +18 -2
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Acquia Toolbelt
|
1
|
+
# Acquia Toolbelt
|
2
2
|
|
3
3
|
The Acquia Toolbelt is a CLI tool for using the Acquia Cloud API. Some of the
|
4
4
|
features include getting information around your servers, subscription,
|
@@ -50,20 +50,26 @@ Without parameters:
|
|
50
50
|
```bash
|
51
51
|
$ acquia databases:list
|
52
52
|
|
53
|
-
|
54
|
-
|
53
|
+
+------------------------+
|
54
|
+
| Name |
|
55
|
+
+------------------------+
|
56
|
+
| acquiatoolbeltdev |
|
57
|
+
| example-db |
|
58
|
+
| newer-db |
|
59
|
+
+------------------------+
|
55
60
|
```
|
56
61
|
|
57
62
|
With parameters:
|
58
63
|
|
59
64
|
```bash
|
60
|
-
$ acquia databases:list
|
65
|
+
$ acquia databases:list --environment=dev --database=acquiatoolbeltdev
|
66
|
+
|
67
|
+
+-------------------+----------+-----------------+-----------+------------+----------------------+
|
68
|
+
| Name | Username | Password | Host | DB cluster | Instance name |
|
69
|
+
+-------------------+----------+-----------------+-----------+------------+----------------------+
|
70
|
+
| acquiatoolbeltdev | s22614 | 7Ps5kU7s3VEvFTj | free-4422 | 3119 | acquiatoolbeltdevdev |
|
71
|
+
+-------------------+----------+-----------------+-----------+------------+----------------------+
|
61
72
|
|
62
|
-
> Username: exampledb
|
63
|
-
> Password: h5hKN4v2nc*1nd
|
64
|
-
> Host: staging-1234
|
65
|
-
> DB cluster: 1111
|
66
|
-
> Instance name: mydb8717
|
67
73
|
```
|
68
74
|
|
69
75
|
## Getting started
|
@@ -144,6 +150,7 @@ This library aims to support and is [tested against](https://travis-ci.org/jacob
|
|
144
150
|
* Ruby 1.9.2
|
145
151
|
* Ruby 1.9.3
|
146
152
|
* Ruby 2.0.0
|
153
|
+
* Ruby 2.1.0
|
147
154
|
|
148
155
|
If you would like support for other implementations or versions, please open an
|
149
156
|
issue and it can be looked into.
|
data/acquia_toolbelt.gemspec
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
lib = File.expand_path('../lib', __FILE__)
|
3
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
3
|
require 'acquia_toolbelt/version'
|
@@ -25,6 +24,7 @@ Gem::Specification.new do |spec|
|
|
25
24
|
spec.add_runtime_dependency 'rainbow', '1.1.4'
|
26
25
|
spec.add_runtime_dependency 'sshkey', '1.6.0'
|
27
26
|
spec.add_runtime_dependency 'multi_json', '1.8.2'
|
27
|
+
spec.add_runtime_dependency 'terminal-table', '1.4.5'
|
28
28
|
|
29
29
|
spec.add_development_dependency 'bundler', '~> 1.3'
|
30
30
|
spec.add_development_dependency 'rake', '10.1.0'
|
@@ -15,7 +15,7 @@ module AcquiaToolbelt
|
|
15
15
|
def login
|
16
16
|
cli = HighLine.new
|
17
17
|
user = cli.ask('Enter your username: ')
|
18
|
-
password = cli.ask('Enter your password: ') { |q| q.echo = false }
|
18
|
+
password = cli.ask('Enter your password (typing will be hidden): ') { |q| q.echo = false }
|
19
19
|
|
20
20
|
# Update (or create if needed) the netrc file that will contain the user
|
21
21
|
# authentication details.
|
@@ -10,13 +10,17 @@ module AcquiaToolbelt
|
|
10
10
|
# database - The name of the database you wish to fetch the information
|
11
11
|
# about.
|
12
12
|
#
|
13
|
-
# Returns
|
14
|
-
def
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
13
|
+
# Returns the row of data for the database.
|
14
|
+
def database_details(database)
|
15
|
+
row_data = []
|
16
|
+
row_data << database['name']
|
17
|
+
row_data << database['username']
|
18
|
+
row_data << database['password']
|
19
|
+
row_data << database['host']
|
20
|
+
row_data << database['db_cluster']
|
21
|
+
row_data << database['instance_name']
|
22
|
+
|
23
|
+
row_data
|
20
24
|
end
|
21
25
|
end
|
22
26
|
|
@@ -36,8 +40,6 @@ module AcquiaToolbelt
|
|
36
40
|
database = options[:database]
|
37
41
|
add_database = AcquiaToolbelt::CLI::API.request "sites/#{subscription}/dbs", 'POST', :db => "#{database}"
|
38
42
|
|
39
|
-
puts "#{add_database}"
|
40
|
-
|
41
43
|
if add_database['id']
|
42
44
|
ui.success "Database '#{database}' has been successfully created."
|
43
45
|
else
|
@@ -113,33 +115,45 @@ module AcquiaToolbelt
|
|
113
115
|
subscription = AcquiaToolbelt::CLI::API.default_subscription
|
114
116
|
end
|
115
117
|
|
118
|
+
ui.say
|
119
|
+
|
116
120
|
database = options[:database]
|
117
121
|
environment = options[:environment]
|
122
|
+
rows = []
|
123
|
+
headings = [
|
124
|
+
'Name',
|
125
|
+
'Username',
|
126
|
+
'Password',
|
127
|
+
'Host',
|
128
|
+
'DB cluster',
|
129
|
+
'Instance name'
|
130
|
+
]
|
118
131
|
|
119
132
|
# Output a single database where the name and environment are specified.
|
120
133
|
if database && environment
|
121
134
|
database = AcquiaToolbelt::CLI::API.request "sites/#{subscription}/envs/#{environment}/dbs/#{database}"
|
122
|
-
|
123
|
-
output_database_instance(database)
|
135
|
+
rows << database_details(database)
|
124
136
|
|
125
137
|
# Only an environment was set so get all expanded data for the requested
|
126
138
|
# environment.
|
127
139
|
elsif environment
|
128
140
|
databases = AcquiaToolbelt::CLI::API.request "sites/#{subscription}/envs/#{environment}/dbs"
|
129
141
|
databases.each do |db|
|
130
|
-
|
131
|
-
ui.say "#{db['name']}"
|
132
|
-
output_database_instance(db)
|
142
|
+
rows << database_details(db)
|
133
143
|
end
|
134
144
|
|
135
|
-
#
|
145
|
+
# If no name or environment is passed, just throw back all the database
|
146
|
+
# names - no in depth details.
|
136
147
|
else
|
148
|
+
# Only set the 'name' header as we don't need the rest of the headers.
|
149
|
+
headings = ['Name']
|
137
150
|
databases = AcquiaToolbelt::CLI::API.request "sites/#{subscription}/dbs"
|
138
|
-
ui.say
|
139
151
|
databases.each do |db|
|
140
|
-
|
152
|
+
rows << [db['name']]
|
141
153
|
end
|
142
154
|
end
|
155
|
+
|
156
|
+
ui.output_table('', headings, rows)
|
143
157
|
end
|
144
158
|
|
145
159
|
# Public: Create a database instance backup.
|
@@ -187,16 +201,31 @@ module AcquiaToolbelt
|
|
187
201
|
database = options[:database]
|
188
202
|
environment = options[:environment]
|
189
203
|
backups = AcquiaToolbelt::CLI::API.request "sites/#{subscription}/envs/#{environment}/dbs/#{database}/backups"
|
204
|
+
|
205
|
+
ui.say
|
206
|
+
|
207
|
+
rows = []
|
208
|
+
headings = [
|
209
|
+
'ID',
|
210
|
+
'Checksum',
|
211
|
+
'Type',
|
212
|
+
'Path',
|
213
|
+
'Start',
|
214
|
+
'Completed'
|
215
|
+
]
|
216
|
+
|
190
217
|
backups.each do |backup|
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
218
|
+
row_data = []
|
219
|
+
row_data << backup['id']
|
220
|
+
row_data << backup['checksum']
|
221
|
+
row_data << backup['type']
|
222
|
+
row_data << backup['path']
|
223
|
+
row_data << Time.at(backup['started'].to_i)
|
224
|
+
row_data << Time.at(backup['completed'].to_i)
|
225
|
+
rows << row_data
|
199
226
|
end
|
227
|
+
|
228
|
+
ui.output_table('', headings, rows)
|
200
229
|
end
|
201
230
|
|
202
231
|
# Public: Restore a database backup.
|
@@ -43,15 +43,21 @@ module AcquiaToolbelt
|
|
43
43
|
environments = AcquiaToolbelt::CLI::API.environments
|
44
44
|
end
|
45
45
|
|
46
|
+
ui.say
|
47
|
+
|
48
|
+
rows = []
|
49
|
+
headings = ['Domain']
|
50
|
+
|
46
51
|
environments.each do |environment|
|
47
52
|
domains = AcquiaToolbelt::CLI::API.request "sites/#{subscription}/envs/#{environment}/domains"
|
48
|
-
ui.say
|
49
|
-
ui.say "Environment: #{environment}" unless options[:environment]
|
50
|
-
|
51
53
|
domains.each do |domain|
|
52
|
-
|
54
|
+
row_data = []
|
55
|
+
row_data << domain['name']
|
56
|
+
rows << row_data
|
53
57
|
end
|
54
58
|
end
|
59
|
+
|
60
|
+
ui.output_table('', headings, rows)
|
55
61
|
end
|
56
62
|
|
57
63
|
# Public: Add a domain to the subscription.
|
@@ -110,7 +116,7 @@ module AcquiaToolbelt
|
|
110
116
|
# Public: Purge a domains web cache.
|
111
117
|
#
|
112
118
|
# Returns a status message.
|
113
|
-
desc 'purge',
|
119
|
+
desc 'purge', "Purge a domain's web cache."
|
114
120
|
method_option :domain, :type => :string, :aliases => %w(-d),
|
115
121
|
:desc => 'URL of the domain to purge.'
|
116
122
|
def purge
|
@@ -23,15 +23,31 @@ module AcquiaToolbelt
|
|
23
23
|
environments = AcquiaToolbelt::CLI::API.environments
|
24
24
|
end
|
25
25
|
|
26
|
+
ui.say
|
27
|
+
|
28
|
+
rows = []
|
29
|
+
headings = [
|
30
|
+
'Host',
|
31
|
+
'Environment',
|
32
|
+
'Current release',
|
33
|
+
'Live development',
|
34
|
+
'DB clusters',
|
35
|
+
'Default domain'
|
36
|
+
]
|
37
|
+
|
26
38
|
environments.each do |env|
|
27
39
|
env_info = AcquiaToolbelt::CLI::API.request "sites/#{subscription}/envs/#{env}"
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
40
|
+
row_data = []
|
41
|
+
row_data << env_info['ssh_host']
|
42
|
+
row_data << env_info['name']
|
43
|
+
row_data << env_info['vcs_path']
|
44
|
+
row_data << env_info['livedev'].capitalize
|
45
|
+
row_data << env_info['db_clusters'].join(', ')
|
46
|
+
row_data << env_info['default_domain']
|
47
|
+
rows << row_data
|
34
48
|
end
|
49
|
+
|
50
|
+
ui.output_table('', headings, rows)
|
35
51
|
end
|
36
52
|
|
37
53
|
# Public: Toggle whether live development is enabled on an environment.
|
@@ -21,46 +21,66 @@ module AcquiaToolbelt
|
|
21
21
|
# Loop over each environment and get all the associated server data.
|
22
22
|
environments.each do |env|
|
23
23
|
ui.say
|
24
|
-
|
24
|
+
|
25
|
+
rows = []
|
26
|
+
headings = [
|
27
|
+
'FQDN',
|
28
|
+
'Availability zone',
|
29
|
+
'Type',
|
30
|
+
'PHP processes',
|
31
|
+
'Environment state',
|
32
|
+
'Web state',
|
33
|
+
'Varnish state',
|
34
|
+
'External IP'
|
35
|
+
]
|
25
36
|
|
26
37
|
server_env = AcquiaToolbelt::CLI::API.request "sites/#{subscription}/envs/#{env}/servers"
|
27
38
|
server_env.each do |server|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
ui.say "> Availability zone: #{server['ec2_availability_zone']}"
|
39
|
+
row_data = []
|
40
|
+
row_data << server['fqdn']
|
41
|
+
row_data << server['ec2_availability_zone']
|
42
|
+
row_data << server['ami_type']
|
33
43
|
|
34
44
|
# Show how many PHP processes this node can have. Note, this is only
|
35
45
|
# available on the web servers.
|
36
|
-
if server['services'] && server['services']['
|
37
|
-
|
46
|
+
if server['services'] && server['services']['web']
|
47
|
+
row_data << server['services']['web']['php_max_procs']
|
48
|
+
else
|
49
|
+
row_data << 'n/a'
|
38
50
|
end
|
39
51
|
|
40
|
-
if server['services'] && server['services']['
|
41
|
-
|
52
|
+
if server['services'] && server['services']['web']
|
53
|
+
row_data << server['services']['web']['env_status']
|
54
|
+
else
|
55
|
+
row_data << 'n/a'
|
42
56
|
end
|
43
57
|
|
44
58
|
if server['services'] && server['services']['web']
|
45
|
-
|
59
|
+
row_data << server['services']['web']['status']
|
60
|
+
else
|
61
|
+
row_data << 'n/a'
|
46
62
|
end
|
47
63
|
|
48
64
|
# The state of varnish.
|
49
65
|
if server['services'] && server['services']['varnish']
|
50
|
-
|
66
|
+
# Replace underscores with a space to make the output slightly
|
67
|
+
# nicer.
|
68
|
+
row_data << server['services']['varnish']['status'].sub('_', ' ')
|
69
|
+
else
|
70
|
+
row_data << 'n/a'
|
51
71
|
end
|
52
72
|
|
53
73
|
# Only load balancers will have the 'external IP' property.
|
54
74
|
if server['services'] && server['services']['external_ip']
|
55
|
-
|
75
|
+
row_data << server['services']['external_ip']
|
76
|
+
else
|
77
|
+
row_data << 'n/a'
|
56
78
|
end
|
57
79
|
|
58
|
-
|
59
|
-
# associated with the load balancing tier.
|
60
|
-
if server['services'] && server['services']['elb_domain_name']
|
61
|
-
ui.say "> ELB hostname: #{server['services']['elb_domain_name']}"
|
62
|
-
end
|
80
|
+
rows << row_data
|
63
81
|
end
|
82
|
+
|
83
|
+
ui.output_table("Environment: #{env}", headings, rows)
|
64
84
|
end
|
65
85
|
end
|
66
86
|
end
|
@@ -7,26 +7,31 @@ module AcquiaToolbelt
|
|
7
7
|
desc 'list', 'List all subscriptions you have access to.'
|
8
8
|
def list
|
9
9
|
sites = AcquiaToolbelt::CLI::API.request 'sites'
|
10
|
+
ui.say
|
11
|
+
|
12
|
+
rows = []
|
13
|
+
headings = [
|
14
|
+
'Subscription name',
|
15
|
+
'Username',
|
16
|
+
'Realm name',
|
17
|
+
'UUID',
|
18
|
+
'Production mode'
|
19
|
+
]
|
10
20
|
|
11
21
|
sites.each do |site|
|
12
|
-
ui.say
|
13
22
|
# Get the individual subscription information.
|
14
23
|
site_data = AcquiaToolbelt::CLI::API.request "sites/#{site}"
|
15
24
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
vcs_name = site_data['vcs_type'].upcase
|
24
|
-
else
|
25
|
-
vcs_name = site_data['vcs_type'].capitalize
|
26
|
-
end
|
27
|
-
|
28
|
-
ui.say "> #{vcs_name} URL: #{site_data['vcs_url']}"
|
25
|
+
row_data = []
|
26
|
+
row_data << site_data['title']
|
27
|
+
row_data << site_data['unix_username']
|
28
|
+
row_data << site_data['name']
|
29
|
+
row_data << site_data['uuid']
|
30
|
+
row_data << site_data['production_mode']
|
31
|
+
rows << row_data
|
29
32
|
end
|
33
|
+
|
34
|
+
ui.output_table('', headings, rows)
|
30
35
|
end
|
31
36
|
end
|
32
37
|
end
|
@@ -14,13 +14,29 @@ module AcquiaToolbelt
|
|
14
14
|
subscription = AcquiaToolbelt::CLI::API.default_subscription
|
15
15
|
end
|
16
16
|
|
17
|
+
ui.say
|
18
|
+
|
19
|
+
rows = []
|
20
|
+
headings = [
|
21
|
+
'ID',
|
22
|
+
'Nickname',
|
23
|
+
'Fingerprint',
|
24
|
+
'Shell access',
|
25
|
+
'VCS access'
|
26
|
+
]
|
27
|
+
|
17
28
|
users = AcquiaToolbelt::CLI::API.request "sites/#{subscription}/sshkeys"
|
18
29
|
users.each do |user|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
30
|
+
row_data = []
|
31
|
+
row_data << user['id']
|
32
|
+
row_data << user['nickname']
|
33
|
+
row_data << SSHKey.fingerprint(user['ssh_pub_key'])
|
34
|
+
row_data << user['shell_access']
|
35
|
+
row_data << user['vcs_access']
|
36
|
+
rows << row_data
|
23
37
|
end
|
38
|
+
|
39
|
+
ui.output_table('', headings, rows)
|
24
40
|
end
|
25
41
|
|
26
42
|
# Public: Delete a SSH key.
|
@@ -12,12 +12,23 @@ module AcquiaToolbelt
|
|
12
12
|
subscription = AcquiaToolbelt::CLI::API.default_subscription
|
13
13
|
end
|
14
14
|
|
15
|
+
ui.say
|
16
|
+
|
17
|
+
rows = []
|
18
|
+
headings = [
|
19
|
+
'ID',
|
20
|
+
'Name'
|
21
|
+
]
|
22
|
+
|
15
23
|
svn_users = AcquiaToolbelt::CLI::API.request "sites/#{subscription}/svnusers"
|
16
24
|
svn_users.each do |user|
|
17
|
-
|
18
|
-
|
19
|
-
|
25
|
+
row_data = []
|
26
|
+
row_data << user['id']
|
27
|
+
row_data << user['username']
|
28
|
+
rows << row_data
|
20
29
|
end
|
30
|
+
|
31
|
+
ui.output_table('', headings, rows)
|
21
32
|
end
|
22
33
|
|
23
34
|
# Public: Create a new SVN user.
|
@@ -8,20 +8,23 @@ module AcquiaToolbelt
|
|
8
8
|
# task.
|
9
9
|
def output_task_item(task)
|
10
10
|
completion_time = (task['completed'].to_i - task['started'].to_i) / 60
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
11
|
+
row_data = []
|
12
|
+
description = task['description'].scan(/.{1,50}[\w\=]/).map(&:strip)
|
13
|
+
|
14
|
+
row_data << task['id'].to_i
|
15
|
+
row_data << task['queue']
|
16
|
+
row_data << description.join("\n")
|
17
|
+
row_data << task['state'].capitalize
|
15
18
|
|
16
19
|
# If the completion time is greater then 0, output it in minutes
|
17
20
|
# otherwise just say it was less then a minute.
|
18
21
|
if completion_time > 0
|
19
|
-
|
22
|
+
row_data << "About #{completion_time} minutes"
|
20
23
|
else
|
21
|
-
|
24
|
+
row_data << 'Less than 1 minute'
|
22
25
|
end
|
23
26
|
|
24
|
-
|
27
|
+
row_data
|
25
28
|
end
|
26
29
|
end
|
27
30
|
|
@@ -40,19 +43,27 @@ module AcquiaToolbelt
|
|
40
43
|
subscription = AcquiaToolbelt::CLI::API.default_subscription
|
41
44
|
end
|
42
45
|
|
43
|
-
|
44
|
-
|
46
|
+
ui.say
|
47
|
+
|
48
|
+
queue = options[:queue]
|
49
|
+
count = options[:count]
|
50
|
+
tasks = []
|
51
|
+
rows = []
|
52
|
+
headings = [
|
53
|
+
'ID',
|
54
|
+
'Queue',
|
55
|
+
'Description',
|
56
|
+
'State',
|
57
|
+
'Completion time'
|
58
|
+
]
|
45
59
|
|
46
60
|
all_tasks = AcquiaToolbelt::CLI::API.request "sites/#{subscription}/tasks"
|
47
|
-
tasks = []
|
48
61
|
|
49
62
|
# Fetch a single queue from the tasks list if the queue parameter is set
|
50
63
|
# otherwise just add all the tasks.
|
51
64
|
if queue
|
52
65
|
all_tasks.each do |task|
|
53
|
-
if task['queue'] == queue
|
54
|
-
tasks << task
|
55
|
-
end
|
66
|
+
tasks << task if task['queue'] == queue
|
56
67
|
end
|
57
68
|
else
|
58
69
|
all_tasks.each do |task|
|
@@ -64,8 +75,10 @@ module AcquiaToolbelt
|
|
64
75
|
tasks = tasks.last(count.to_i) if count && tasks.any?
|
65
76
|
|
66
77
|
tasks.each do |task|
|
67
|
-
output_task_item(task)
|
78
|
+
rows << output_task_item(task)
|
68
79
|
end
|
80
|
+
|
81
|
+
ui.output_table('', headings, rows)
|
69
82
|
end
|
70
83
|
end
|
71
84
|
end
|
@@ -39,6 +39,26 @@ module AcquiaToolbelt
|
|
39
39
|
def debug(text)
|
40
40
|
puts "#{text}".foreground(:yellow)
|
41
41
|
end
|
42
|
+
|
43
|
+
# Internal: Render a CLI table.
|
44
|
+
#
|
45
|
+
# title - The title to display at the top of the table.
|
46
|
+
# heading - Header rows for the table.
|
47
|
+
# rows - An array of the row data to output.
|
48
|
+
#
|
49
|
+
# Outputs a table to the end user.
|
50
|
+
def output_table(title = '', headings, rows)
|
51
|
+
table = Terminal::Table.new
|
52
|
+
table.title = title unless title.empty?
|
53
|
+
table.rows = rows
|
54
|
+
table.headings = headings
|
55
|
+
table.style = {
|
56
|
+
:padding_left => 1,
|
57
|
+
:padding_right => 1
|
58
|
+
}
|
59
|
+
|
60
|
+
puts table
|
61
|
+
end
|
42
62
|
end
|
43
63
|
end
|
44
64
|
end
|
data/lib/acquia_toolbelt/cli.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acquia_toolbelt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.4.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-11-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: thor
|
@@ -139,6 +139,22 @@ dependencies:
|
|
139
139
|
- - '='
|
140
140
|
- !ruby/object:Gem::Version
|
141
141
|
version: 1.8.2
|
142
|
+
- !ruby/object:Gem::Dependency
|
143
|
+
name: terminal-table
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
146
|
+
requirements:
|
147
|
+
- - '='
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: 1.4.5
|
150
|
+
type: :runtime
|
151
|
+
prerelease: false
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
154
|
+
requirements:
|
155
|
+
- - '='
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: 1.4.5
|
142
158
|
- !ruby/object:Gem::Dependency
|
143
159
|
name: bundler
|
144
160
|
requirement: !ruby/object:Gem::Requirement
|