prima-twig 1.1.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.
- checksums.yaml +7 -0
- data/bin/twig-circle +51 -0
- data/bin/twig-deploy +248 -0
- data/bin/twig-feature +824 -0
- data/bin/twig-hotfix +105 -0
- data/bin/twig-open-pr +115 -0
- data/bin/twig-pick-issue +108 -0
- data/bin/twig-review +76 -0
- data/bin/twig-update-ami +197 -0
- data/lib/command.rb +73 -0
- data/lib/prima_aws_client.rb +494 -0
- data/lib/prima_twig.rb +293 -0
- metadata +333 -0
data/lib/prima_twig.rb
ADDED
@@ -0,0 +1,293 @@
|
|
1
|
+
require_relative 'command.rb'
|
2
|
+
require 'twig'
|
3
|
+
require 'octokit'
|
4
|
+
require 'yaml'
|
5
|
+
require 'rugged'
|
6
|
+
require 'highline/import'
|
7
|
+
require 'aws-sdk-core'
|
8
|
+
require 'rubyflare'
|
9
|
+
|
10
|
+
class Prima
|
11
|
+
LABEL_REVIEW='review'
|
12
|
+
LABEL_WIP='wip'
|
13
|
+
LABEL_HOTFIX='hotfix'
|
14
|
+
LABEL_NEXT_RELEASE='next release'
|
15
|
+
LABEL_IN_STAGING='in staging'
|
16
|
+
CONFIG_KEYS=['github', 'mandrill', 'sparkpost', 'cloudflare_email', 'cloudflare_apikey', 'aws_username', 'aws_password', 'prima_apikey']
|
17
|
+
attr_reader :gh, :twig, :config, :rugged, :aws
|
18
|
+
|
19
|
+
def initialize
|
20
|
+
@twig = Twig.new(:read_options => true, :max_days_old => 30)
|
21
|
+
unless has_config?
|
22
|
+
if File.exist?('../prima/twig.yml')
|
23
|
+
`cp ../prima/twig.yml .`
|
24
|
+
elsif File.exist?('/tmp/twig.yml')
|
25
|
+
`cp /tmp/twig.yml .`
|
26
|
+
else
|
27
|
+
generate_config
|
28
|
+
end
|
29
|
+
if File.exist?('./projects/prima')
|
30
|
+
`git submodule init && git submodule update`
|
31
|
+
end
|
32
|
+
end
|
33
|
+
unless has_latest_config?
|
34
|
+
update_config
|
35
|
+
end
|
36
|
+
@config = YAML.load_file 'twig.yml'
|
37
|
+
@rugged = Rugged::Repository.new('.')
|
38
|
+
create_clients
|
39
|
+
end
|
40
|
+
|
41
|
+
def has_config?
|
42
|
+
File.exist? 'twig.yml'
|
43
|
+
end
|
44
|
+
|
45
|
+
def has_latest_config?
|
46
|
+
existing_config = YAML.load_file 'twig.yml'
|
47
|
+
CONFIG_KEYS.each do |k|
|
48
|
+
unless existing_config.has_key? k
|
49
|
+
return false
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def generate_config
|
55
|
+
puts 'Progetto non inizializzato'.red
|
56
|
+
puts 'Creazione del file di configurazione'.yellow
|
57
|
+
conf = {}
|
58
|
+
CONFIG_KEYS.each do |k|
|
59
|
+
token = ask "#{k} token: "
|
60
|
+
conf[k] = token
|
61
|
+
end
|
62
|
+
write_config conf
|
63
|
+
end
|
64
|
+
|
65
|
+
def update_config
|
66
|
+
puts 'Mancano alcuni parametri nella tua configurazione'.yellow
|
67
|
+
existing_config = YAML.load_file 'twig.yml'
|
68
|
+
CONFIG_KEYS.each do |k|
|
69
|
+
unless existing_config.has_key? k
|
70
|
+
token = ask "#{k} token: "
|
71
|
+
existing_config[k] = token
|
72
|
+
end
|
73
|
+
end
|
74
|
+
write_config existing_config
|
75
|
+
end
|
76
|
+
|
77
|
+
def write_config(conf = {})
|
78
|
+
File.open('twig.yml', 'w') { |file|
|
79
|
+
file.write conf.to_yaml
|
80
|
+
puts 'File di configurazione aggiornato'.green
|
81
|
+
}
|
82
|
+
end
|
83
|
+
|
84
|
+
def create_clients
|
85
|
+
@gh = Octokit::Client.new(:access_token => @config['github'])
|
86
|
+
Aws.config.update({
|
87
|
+
region: 'eu-west-1'
|
88
|
+
})
|
89
|
+
end
|
90
|
+
|
91
|
+
def disabled_branches
|
92
|
+
%w(master dev)
|
93
|
+
end
|
94
|
+
|
95
|
+
def deployable_branches
|
96
|
+
%w(dev)
|
97
|
+
end
|
98
|
+
|
99
|
+
def is_a_valid_branch?
|
100
|
+
not disabled_branches.include? current_branch_name
|
101
|
+
end
|
102
|
+
|
103
|
+
def is_a_deployable_branch?
|
104
|
+
deployable_branches.include? current_branch_name
|
105
|
+
end
|
106
|
+
|
107
|
+
def index_diff
|
108
|
+
@rugged.index.diff
|
109
|
+
end
|
110
|
+
|
111
|
+
def is_clean?
|
112
|
+
index_diff.count === 0
|
113
|
+
end
|
114
|
+
|
115
|
+
def repo_name
|
116
|
+
`git config --get remote.origin.url`.split(':').last.chomp.chomp('.git')
|
117
|
+
end
|
118
|
+
|
119
|
+
def repo_user
|
120
|
+
repo_url.chomp.split(':').last.split('/').first
|
121
|
+
end
|
122
|
+
|
123
|
+
def current_branch_ref
|
124
|
+
repo = repo_user
|
125
|
+
"#{repo}:#{current_branch_name}"
|
126
|
+
end
|
127
|
+
|
128
|
+
def clean_branch_name(branch_name)
|
129
|
+
branch_name.gsub! /[^a-zA-Z0-9\-_]/, '_'
|
130
|
+
branch_name.gsub! /_+/, '_'
|
131
|
+
branch_name.downcase
|
132
|
+
end
|
133
|
+
|
134
|
+
def repo_has_modified_files?
|
135
|
+
modified = false
|
136
|
+
@rugged.status do |file, status_data|
|
137
|
+
if status_data.first != :ignored
|
138
|
+
puts "#{file}: #{status_data.inspect}"
|
139
|
+
modified = true
|
140
|
+
break
|
141
|
+
end
|
142
|
+
end
|
143
|
+
modified
|
144
|
+
end
|
145
|
+
|
146
|
+
# proxy di tutti i metodi a rugged
|
147
|
+
def method_missing(method)
|
148
|
+
@rugged.send method
|
149
|
+
end
|
150
|
+
|
151
|
+
def current_branch_name
|
152
|
+
@twig.current_branch_name
|
153
|
+
end
|
154
|
+
|
155
|
+
def get_pr_url
|
156
|
+
pr = get_pr
|
157
|
+
if pr.nil?
|
158
|
+
nil
|
159
|
+
else
|
160
|
+
pr.html_url
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
def get_pr
|
165
|
+
prs = @gh.pulls repo_name, { head: current_branch_ref }
|
166
|
+
if prs.length > 0
|
167
|
+
prs[0]
|
168
|
+
else
|
169
|
+
nil
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
def is_already_a_pr?
|
174
|
+
not get_pr_url.nil?
|
175
|
+
end
|
176
|
+
|
177
|
+
def is_issue_in_review?(issue)
|
178
|
+
issue_has_label?(issue, Prima::LABEL_REVIEW)
|
179
|
+
end
|
180
|
+
|
181
|
+
def issue_has_label?(issue, label)
|
182
|
+
labels = @gh.labels_for_issue 'primait/board', issue.to_i
|
183
|
+
not labels.find_index{ |l| l.name == label }.nil?
|
184
|
+
end
|
185
|
+
|
186
|
+
def put_issue_in_review(issue)
|
187
|
+
update_issue_with_label(issue, Prima::LABEL_REVIEW)
|
188
|
+
gh.remove_label 'primait/board', issue, Prima::LABEL_WIP
|
189
|
+
end
|
190
|
+
|
191
|
+
def get_property(name)
|
192
|
+
@twig.get_branch_property current_branch_name, name
|
193
|
+
end
|
194
|
+
|
195
|
+
def has_property?(name)
|
196
|
+
not @twig.get_branch_property(current_branch_name, name).nil?
|
197
|
+
end
|
198
|
+
|
199
|
+
def update_issue_with_label(issue, label)
|
200
|
+
unless issue_has_label?(issue, label)
|
201
|
+
gh.add_labels_to_an_issue 'primait/board', issue, [ label ]
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
205
|
+
def delete_label_from_issue(issue_number, label)
|
206
|
+
if issue_has_label?(issue_number, label)
|
207
|
+
@gh.remove_label 'primait/board', issue_number, label
|
208
|
+
end
|
209
|
+
end
|
210
|
+
|
211
|
+
def user_login
|
212
|
+
user = @gh.user
|
213
|
+
user.login
|
214
|
+
end
|
215
|
+
|
216
|
+
def assign_issue_to_me(issue)
|
217
|
+
detailed_issue = get_issue issue
|
218
|
+
assignees = [user_login]
|
219
|
+
detailed_issue.assignees.each do |assignee|
|
220
|
+
assignees << assignee.login
|
221
|
+
end
|
222
|
+
@gh.update_issue('primait/board', issue, :assignees => assignees)
|
223
|
+
end
|
224
|
+
|
225
|
+
def assign_pull_request_to_me(pr_number)
|
226
|
+
@gh.update_pull_request(repo_name, pr_number, :assignee => user_login)
|
227
|
+
end
|
228
|
+
|
229
|
+
def list_issues
|
230
|
+
results = @gh.list_issues 'primait/board', state: :open, :per_page => 20, :page => 1
|
231
|
+
unless @gh.last_response.rels[:last].nil?
|
232
|
+
number_of_pages = @gh.last_response.rels[:last].href.match(/page=(\d+)/)[1]
|
233
|
+
for i in 2..number_of_pages.to_i
|
234
|
+
results.concat @gh.list_issues('primait/board', state: :open, :per_page => 20, :page => i)
|
235
|
+
end
|
236
|
+
end
|
237
|
+
results
|
238
|
+
end
|
239
|
+
|
240
|
+
def update_pr(pr_number, options = {})
|
241
|
+
@gh.update_pull_request repo_name, pr_number, options
|
242
|
+
end
|
243
|
+
|
244
|
+
def get_issue(issue_number)
|
245
|
+
@gh.issue 'primait/board', issue_number
|
246
|
+
end
|
247
|
+
|
248
|
+
def get_pr_commits(pr_number)
|
249
|
+
@gh.pull_request_commits repo_name, pr_number
|
250
|
+
end
|
251
|
+
|
252
|
+
def create_pull_request(base_branch, head, title, body = '')
|
253
|
+
@gh.create_pull_request repo_name, base_branch, head, title, body
|
254
|
+
end
|
255
|
+
|
256
|
+
def merge_pull_request(pr, commit_message='')
|
257
|
+
raise "Invalid Pull Request" unless pr
|
258
|
+
pr_number = pr[:number]
|
259
|
+
@gh.merge_pull_request(repo_name, pr_number, commit_message)
|
260
|
+
end
|
261
|
+
|
262
|
+
def close_issue(issue_number)
|
263
|
+
@gh.close_issue(repo_name, issue_number)
|
264
|
+
end
|
265
|
+
|
266
|
+
def repo_url
|
267
|
+
`git config remote.origin.url`
|
268
|
+
end
|
269
|
+
|
270
|
+
def create_release(tag_name, options = {})
|
271
|
+
@gh.create_release repo_name, tag_name, options
|
272
|
+
end
|
273
|
+
|
274
|
+
def yesno(prompt = 'Continue?', default = true)
|
275
|
+
a = ''
|
276
|
+
s = default ? '[Y/n]' : '[y/N]'
|
277
|
+
d = default ? 'y' : 'n'
|
278
|
+
until %w[y n].include? a
|
279
|
+
a = ask("#{prompt} #{s} ") { |q| q.limit = 1; q.case = :downcase }
|
280
|
+
a = d if a.length == 0
|
281
|
+
end
|
282
|
+
a == 'y'
|
283
|
+
end
|
284
|
+
|
285
|
+
def reduce_size(str, len)
|
286
|
+
out_str = str
|
287
|
+
if str.size > len
|
288
|
+
out_str = str[0..(len-1)]
|
289
|
+
out_str << '...'
|
290
|
+
end
|
291
|
+
out_str
|
292
|
+
end
|
293
|
+
end
|
metadata
ADDED
@@ -0,0 +1,333 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: prima-twig
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Matteo Giachino
|
8
|
+
- Antonio Murdaca
|
9
|
+
- Alessandro Nuzzo
|
10
|
+
- Andrea Usuelli
|
11
|
+
- Simone Quaini
|
12
|
+
- Eugenio Laghi
|
13
|
+
- Giuseppe D'Anna
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
date: 2020-07-21 00:00:00.000000000 Z
|
18
|
+
dependencies:
|
19
|
+
- !ruby/object:Gem::Dependency
|
20
|
+
name: aws-sdk-autoscaling
|
21
|
+
requirement: !ruby/object:Gem::Requirement
|
22
|
+
requirements:
|
23
|
+
- - "~>"
|
24
|
+
- !ruby/object:Gem::Version
|
25
|
+
version: '1'
|
26
|
+
type: :runtime
|
27
|
+
prerelease: false
|
28
|
+
version_requirements: !ruby/object:Gem::Requirement
|
29
|
+
requirements:
|
30
|
+
- - "~>"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '1'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: aws-sdk-batch
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '1'
|
40
|
+
type: :runtime
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - "~>"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '1'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: aws-sdk-cloudformation
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "~>"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '1'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '1'
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: aws-sdk-cloudfront
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - "~>"
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '1'
|
68
|
+
type: :runtime
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - "~>"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '1'
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: aws-sdk-ec2
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - "~>"
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '1'
|
82
|
+
type: :runtime
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - "~>"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '1'
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
name: aws-sdk-ecs
|
91
|
+
requirement: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - "~>"
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '1'
|
96
|
+
type: :runtime
|
97
|
+
prerelease: false
|
98
|
+
version_requirements: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - "~>"
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '1'
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: aws-sdk-elasticloadbalancingv2
|
105
|
+
requirement: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - "~>"
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '1'
|
110
|
+
type: :runtime
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - "~>"
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: '1'
|
117
|
+
- !ruby/object:Gem::Dependency
|
118
|
+
name: aws-sdk-s3
|
119
|
+
requirement: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - "~>"
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '1'
|
124
|
+
type: :runtime
|
125
|
+
prerelease: false
|
126
|
+
version_requirements: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - "~>"
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '1'
|
131
|
+
- !ruby/object:Gem::Dependency
|
132
|
+
name: aws-sdk-core
|
133
|
+
requirement: !ruby/object:Gem::Requirement
|
134
|
+
requirements:
|
135
|
+
- - "~>"
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: '3'
|
138
|
+
type: :runtime
|
139
|
+
prerelease: false
|
140
|
+
version_requirements: !ruby/object:Gem::Requirement
|
141
|
+
requirements:
|
142
|
+
- - "~>"
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: '3'
|
145
|
+
- !ruby/object:Gem::Dependency
|
146
|
+
name: colorize
|
147
|
+
requirement: !ruby/object:Gem::Requirement
|
148
|
+
requirements:
|
149
|
+
- - "~>"
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: '0.7'
|
152
|
+
type: :runtime
|
153
|
+
prerelease: false
|
154
|
+
version_requirements: !ruby/object:Gem::Requirement
|
155
|
+
requirements:
|
156
|
+
- - "~>"
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '0.7'
|
159
|
+
- !ruby/object:Gem::Dependency
|
160
|
+
name: highline
|
161
|
+
requirement: !ruby/object:Gem::Requirement
|
162
|
+
requirements:
|
163
|
+
- - "~>"
|
164
|
+
- !ruby/object:Gem::Version
|
165
|
+
version: '1.6'
|
166
|
+
type: :runtime
|
167
|
+
prerelease: false
|
168
|
+
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
requirements:
|
170
|
+
- - "~>"
|
171
|
+
- !ruby/object:Gem::Version
|
172
|
+
version: '1.6'
|
173
|
+
- !ruby/object:Gem::Dependency
|
174
|
+
name: launchy
|
175
|
+
requirement: !ruby/object:Gem::Requirement
|
176
|
+
requirements:
|
177
|
+
- - "~>"
|
178
|
+
- !ruby/object:Gem::Version
|
179
|
+
version: '2.0'
|
180
|
+
type: :runtime
|
181
|
+
prerelease: false
|
182
|
+
version_requirements: !ruby/object:Gem::Requirement
|
183
|
+
requirements:
|
184
|
+
- - "~>"
|
185
|
+
- !ruby/object:Gem::Version
|
186
|
+
version: '2.0'
|
187
|
+
- !ruby/object:Gem::Dependency
|
188
|
+
name: mail
|
189
|
+
requirement: !ruby/object:Gem::Requirement
|
190
|
+
requirements:
|
191
|
+
- - "~>"
|
192
|
+
- !ruby/object:Gem::Version
|
193
|
+
version: '2.6'
|
194
|
+
type: :runtime
|
195
|
+
prerelease: false
|
196
|
+
version_requirements: !ruby/object:Gem::Requirement
|
197
|
+
requirements:
|
198
|
+
- - "~>"
|
199
|
+
- !ruby/object:Gem::Version
|
200
|
+
version: '2.6'
|
201
|
+
- !ruby/object:Gem::Dependency
|
202
|
+
name: octokit
|
203
|
+
requirement: !ruby/object:Gem::Requirement
|
204
|
+
requirements:
|
205
|
+
- - "~>"
|
206
|
+
- !ruby/object:Gem::Version
|
207
|
+
version: '3.0'
|
208
|
+
type: :runtime
|
209
|
+
prerelease: false
|
210
|
+
version_requirements: !ruby/object:Gem::Requirement
|
211
|
+
requirements:
|
212
|
+
- - "~>"
|
213
|
+
- !ruby/object:Gem::Version
|
214
|
+
version: '3.0'
|
215
|
+
- !ruby/object:Gem::Dependency
|
216
|
+
name: redcarpet
|
217
|
+
requirement: !ruby/object:Gem::Requirement
|
218
|
+
requirements:
|
219
|
+
- - "~>"
|
220
|
+
- !ruby/object:Gem::Version
|
221
|
+
version: '3.3'
|
222
|
+
type: :runtime
|
223
|
+
prerelease: false
|
224
|
+
version_requirements: !ruby/object:Gem::Requirement
|
225
|
+
requirements:
|
226
|
+
- - "~>"
|
227
|
+
- !ruby/object:Gem::Version
|
228
|
+
version: '3.3'
|
229
|
+
- !ruby/object:Gem::Dependency
|
230
|
+
name: redis
|
231
|
+
requirement: !ruby/object:Gem::Requirement
|
232
|
+
requirements:
|
233
|
+
- - "~>"
|
234
|
+
- !ruby/object:Gem::Version
|
235
|
+
version: '4.0'
|
236
|
+
type: :runtime
|
237
|
+
prerelease: false
|
238
|
+
version_requirements: !ruby/object:Gem::Requirement
|
239
|
+
requirements:
|
240
|
+
- - "~>"
|
241
|
+
- !ruby/object:Gem::Version
|
242
|
+
version: '4.0'
|
243
|
+
- !ruby/object:Gem::Dependency
|
244
|
+
name: rubyflare
|
245
|
+
requirement: !ruby/object:Gem::Requirement
|
246
|
+
requirements:
|
247
|
+
- - "~>"
|
248
|
+
- !ruby/object:Gem::Version
|
249
|
+
version: '0'
|
250
|
+
type: :runtime
|
251
|
+
prerelease: false
|
252
|
+
version_requirements: !ruby/object:Gem::Requirement
|
253
|
+
requirements:
|
254
|
+
- - "~>"
|
255
|
+
- !ruby/object:Gem::Version
|
256
|
+
version: '0'
|
257
|
+
- !ruby/object:Gem::Dependency
|
258
|
+
name: rugged
|
259
|
+
requirement: !ruby/object:Gem::Requirement
|
260
|
+
requirements:
|
261
|
+
- - "~>"
|
262
|
+
- !ruby/object:Gem::Version
|
263
|
+
version: '0.22'
|
264
|
+
type: :runtime
|
265
|
+
prerelease: false
|
266
|
+
version_requirements: !ruby/object:Gem::Requirement
|
267
|
+
requirements:
|
268
|
+
- - "~>"
|
269
|
+
- !ruby/object:Gem::Version
|
270
|
+
version: '0.22'
|
271
|
+
- !ruby/object:Gem::Dependency
|
272
|
+
name: twig
|
273
|
+
requirement: !ruby/object:Gem::Requirement
|
274
|
+
requirements:
|
275
|
+
- - "~>"
|
276
|
+
- !ruby/object:Gem::Version
|
277
|
+
version: '1.7'
|
278
|
+
type: :runtime
|
279
|
+
prerelease: false
|
280
|
+
version_requirements: !ruby/object:Gem::Requirement
|
281
|
+
requirements:
|
282
|
+
- - "~>"
|
283
|
+
- !ruby/object:Gem::Version
|
284
|
+
version: '1.7'
|
285
|
+
description: Our tools to manage git and github
|
286
|
+
email: matteo.giachino@prima.it
|
287
|
+
executables:
|
288
|
+
- twig-circle
|
289
|
+
- twig-deploy
|
290
|
+
- twig-feature
|
291
|
+
- twig-hotfix
|
292
|
+
- twig-open-pr
|
293
|
+
- twig-pick-issue
|
294
|
+
- twig-review
|
295
|
+
- twig-update-ami
|
296
|
+
extensions: []
|
297
|
+
extra_rdoc_files: []
|
298
|
+
files:
|
299
|
+
- bin/twig-circle
|
300
|
+
- bin/twig-deploy
|
301
|
+
- bin/twig-feature
|
302
|
+
- bin/twig-hotfix
|
303
|
+
- bin/twig-open-pr
|
304
|
+
- bin/twig-pick-issue
|
305
|
+
- bin/twig-review
|
306
|
+
- bin/twig-update-ami
|
307
|
+
- lib/command.rb
|
308
|
+
- lib/prima_aws_client.rb
|
309
|
+
- lib/prima_twig.rb
|
310
|
+
homepage: http://rubygems.org/gems/prima-twig
|
311
|
+
licenses:
|
312
|
+
- MIT
|
313
|
+
metadata: {}
|
314
|
+
post_install_message:
|
315
|
+
rdoc_options: []
|
316
|
+
require_paths:
|
317
|
+
- lib
|
318
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
319
|
+
requirements:
|
320
|
+
- - ">="
|
321
|
+
- !ruby/object:Gem::Version
|
322
|
+
version: '0'
|
323
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
324
|
+
requirements:
|
325
|
+
- - ">="
|
326
|
+
- !ruby/object:Gem::Version
|
327
|
+
version: '0'
|
328
|
+
requirements: []
|
329
|
+
rubygems_version: 3.0.1
|
330
|
+
signing_key:
|
331
|
+
specification_version: 4
|
332
|
+
summary: The Prima twig toolbelt
|
333
|
+
test_files: []
|