prima-twig 0.2.27 → 0.3.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 +4 -4
- data/bin/twig-feature +477 -327
- data/bin/twig-open-pr +1 -11
- data/bin/twig-pick-issue +21 -29
- data/lib/prima_twig.rb +10 -3
- metadata +22 -24
- data/bin/twig-release +0 -227
data/bin/twig-open-pr
CHANGED
@@ -79,7 +79,7 @@ class OpenPR
|
|
79
79
|
exit 0
|
80
80
|
end
|
81
81
|
|
82
|
-
pr = create_pull_request(
|
82
|
+
pr = create_pull_request('master')
|
83
83
|
puts "Pull Request ##{ pr.number } creata".green
|
84
84
|
cmd = %{ twig pr "#{ pr.number }"}
|
85
85
|
exec(cmd)
|
@@ -89,16 +89,6 @@ class OpenPR
|
|
89
89
|
exit 0
|
90
90
|
end
|
91
91
|
|
92
|
-
def choose_base_branch
|
93
|
-
choose do |menu|
|
94
|
-
menu.prompt = 'Su quale branch vuoi effettuare la PR? '.cyan
|
95
|
-
menu.shell = true
|
96
|
-
|
97
|
-
menu.choice('dev') {'dev'}
|
98
|
-
menu.choice('master') {'master'}
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
92
|
def is_on_github?
|
103
93
|
begin
|
104
94
|
@prima.gh.branch @prima.repo_name, @prima.current_branch_name
|
data/bin/twig-pick-issue
CHANGED
@@ -4,6 +4,7 @@ require 'rubygems'
|
|
4
4
|
require_relative '../lib/prima_twig.rb'
|
5
5
|
require 'colorize'
|
6
6
|
require 'highline/import'
|
7
|
+
require 'pp'
|
7
8
|
|
8
9
|
def help_content
|
9
10
|
<<-HELP
|
@@ -45,14 +46,24 @@ class PickIssue
|
|
45
46
|
end
|
46
47
|
|
47
48
|
issues = @prima.list_issues
|
48
|
-
|
49
|
-
|
49
|
+
|
50
|
+
issue_number = nil
|
51
|
+
if args[0] && args[0].to_i > 0
|
52
|
+
issues.keep_if do |issue|
|
53
|
+
issue.number == args[0].to_i
|
54
|
+
end
|
55
|
+
stop_if issue.empty? "Issue #{args[0].to_i} non trovata!"
|
56
|
+
issue_number = args[0].to_i
|
57
|
+
else
|
58
|
+
issues.delete_if do |issue|
|
59
|
+
issue.pull_request?
|
60
|
+
end
|
61
|
+
issue_number = choose_issue issues
|
50
62
|
end
|
51
63
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
branch_name = ask('Inserisci il nome del branch (puoi omettere feature/ o hotfix/): '.cyan)
|
64
|
+
issue_type = 'feature'
|
65
|
+
base_branch_name_default = 'master'
|
66
|
+
branch_name = ask('Inserisci il nome del branch (puoi omettere feature/): '.cyan)
|
56
67
|
if branch_name.length == 0
|
57
68
|
puts 'Devi inserire il nome del branch'.red
|
58
69
|
exit 1
|
@@ -75,6 +86,10 @@ class PickIssue
|
|
75
86
|
end
|
76
87
|
|
77
88
|
def choose_issue(issues)
|
89
|
+
|
90
|
+
pp issues
|
91
|
+
exit
|
92
|
+
|
78
93
|
choose do |menu|
|
79
94
|
menu.prompt = 'Pick an issue: '.cyan
|
80
95
|
menu.shell = true
|
@@ -89,29 +104,6 @@ class PickIssue
|
|
89
104
|
end
|
90
105
|
end
|
91
106
|
end
|
92
|
-
|
93
|
-
def select_issue_type(issue_number)
|
94
|
-
has_hotfix_label = @prima.issue_has_label?(issue_number, Prima::LABEL_HOTFIX)
|
95
|
-
|
96
|
-
if has_hotfix_label
|
97
|
-
continue_hotfix = @prima.yesno 'La issue ha la label hotfix, sei sicuro di procedere come hotfix?'.cyan # ask('La issue ha la label hotfix, sei sicuro di procedere come hotfix? (y/n)'.cyan) { |q| q.default = 'y' }
|
98
|
-
issue_type = continue_hotfix ? 'hotfix' : 'feature'
|
99
|
-
else
|
100
|
-
issue_type = choose do |menu|
|
101
|
-
menu.prompt = 'Seleziona se la issue dev\'essere trattata come feature oppure hotfix'.cyan
|
102
|
-
menu.shell = true
|
103
|
-
|
104
|
-
menu.choice('feature') {'feature'}
|
105
|
-
menu.choice('hotfix') {'hotfix'}
|
106
|
-
end
|
107
|
-
|
108
|
-
if issue_type == 'hotfix'
|
109
|
-
puts "Aggiungo la label #{Prima::LABEL_HOTFIX} alla issue".green
|
110
|
-
@prima.update_issue_with_label issue_number, Prima::LABEL_HOTFIX
|
111
|
-
end
|
112
|
-
end
|
113
|
-
issue_type
|
114
|
-
end
|
115
107
|
end
|
116
108
|
|
117
109
|
PickIssue.new.execute!
|
data/lib/prima_twig.rb
CHANGED
@@ -16,9 +16,16 @@ class Prima
|
|
16
16
|
attr_reader :gh, :twig, :config, :rugged, :aws
|
17
17
|
|
18
18
|
def initialize
|
19
|
-
@twig = Twig.new(:read_options => true)
|
19
|
+
@twig = Twig.new(:read_options => true, :max_days_old => 30)
|
20
20
|
unless has_config?
|
21
|
-
|
21
|
+
if File.exist?('../prima/twig.yml')
|
22
|
+
`cp ../prima/twig.yml .`
|
23
|
+
else
|
24
|
+
generate_config
|
25
|
+
end
|
26
|
+
if File.exist?('./projects/prima')
|
27
|
+
`git submodule init && git submodule update`
|
28
|
+
end
|
22
29
|
end
|
23
30
|
unless has_latest_config?
|
24
31
|
update_config
|
@@ -119,7 +126,7 @@ class Prima
|
|
119
126
|
def clean_branch_name(branch_name)
|
120
127
|
branch_name.gsub! /[^a-zA-Z0-9\-_]/, '_'
|
121
128
|
branch_name.gsub! /_+/, '_'
|
122
|
-
branch_name
|
129
|
+
branch_name.downcase
|
123
130
|
end
|
124
131
|
|
125
132
|
# proxy di tutti i metodi a rugged
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: prima-twig
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matteo Giachino
|
@@ -11,132 +11,132 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2016-
|
14
|
+
date: 2016-03-03 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: twig
|
18
18
|
requirement: !ruby/object:Gem::Requirement
|
19
19
|
requirements:
|
20
|
-
- -
|
20
|
+
- - ~>
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: '1.7'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
|
-
- -
|
27
|
+
- - ~>
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '1.7'
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: octokit
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
33
33
|
requirements:
|
34
|
-
- -
|
34
|
+
- - ~>
|
35
35
|
- !ruby/object:Gem::Version
|
36
36
|
version: '3.0'
|
37
37
|
type: :runtime
|
38
38
|
prerelease: false
|
39
39
|
version_requirements: !ruby/object:Gem::Requirement
|
40
40
|
requirements:
|
41
|
-
- -
|
41
|
+
- - ~>
|
42
42
|
- !ruby/object:Gem::Version
|
43
43
|
version: '3.0'
|
44
44
|
- !ruby/object:Gem::Dependency
|
45
45
|
name: colorize
|
46
46
|
requirement: !ruby/object:Gem::Requirement
|
47
47
|
requirements:
|
48
|
-
- -
|
48
|
+
- - ~>
|
49
49
|
- !ruby/object:Gem::Version
|
50
50
|
version: '0.7'
|
51
51
|
type: :runtime
|
52
52
|
prerelease: false
|
53
53
|
version_requirements: !ruby/object:Gem::Requirement
|
54
54
|
requirements:
|
55
|
-
- -
|
55
|
+
- - ~>
|
56
56
|
- !ruby/object:Gem::Version
|
57
57
|
version: '0.7'
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: highline
|
60
60
|
requirement: !ruby/object:Gem::Requirement
|
61
61
|
requirements:
|
62
|
-
- -
|
62
|
+
- - ~>
|
63
63
|
- !ruby/object:Gem::Version
|
64
64
|
version: '1.6'
|
65
65
|
type: :runtime
|
66
66
|
prerelease: false
|
67
67
|
version_requirements: !ruby/object:Gem::Requirement
|
68
68
|
requirements:
|
69
|
-
- -
|
69
|
+
- - ~>
|
70
70
|
- !ruby/object:Gem::Version
|
71
71
|
version: '1.6'
|
72
72
|
- !ruby/object:Gem::Dependency
|
73
73
|
name: launchy
|
74
74
|
requirement: !ruby/object:Gem::Requirement
|
75
75
|
requirements:
|
76
|
-
- -
|
76
|
+
- - ~>
|
77
77
|
- !ruby/object:Gem::Version
|
78
78
|
version: '2.0'
|
79
79
|
type: :runtime
|
80
80
|
prerelease: false
|
81
81
|
version_requirements: !ruby/object:Gem::Requirement
|
82
82
|
requirements:
|
83
|
-
- -
|
83
|
+
- - ~>
|
84
84
|
- !ruby/object:Gem::Version
|
85
85
|
version: '2.0'
|
86
86
|
- !ruby/object:Gem::Dependency
|
87
87
|
name: rugged
|
88
88
|
requirement: !ruby/object:Gem::Requirement
|
89
89
|
requirements:
|
90
|
-
- -
|
90
|
+
- - ~>
|
91
91
|
- !ruby/object:Gem::Version
|
92
92
|
version: '0.22'
|
93
93
|
type: :runtime
|
94
94
|
prerelease: false
|
95
95
|
version_requirements: !ruby/object:Gem::Requirement
|
96
96
|
requirements:
|
97
|
-
- -
|
97
|
+
- - ~>
|
98
98
|
- !ruby/object:Gem::Version
|
99
99
|
version: '0.22'
|
100
100
|
- !ruby/object:Gem::Dependency
|
101
101
|
name: redcarpet
|
102
102
|
requirement: !ruby/object:Gem::Requirement
|
103
103
|
requirements:
|
104
|
-
- -
|
104
|
+
- - ~>
|
105
105
|
- !ruby/object:Gem::Version
|
106
106
|
version: '3.3'
|
107
107
|
type: :runtime
|
108
108
|
prerelease: false
|
109
109
|
version_requirements: !ruby/object:Gem::Requirement
|
110
110
|
requirements:
|
111
|
-
- -
|
111
|
+
- - ~>
|
112
112
|
- !ruby/object:Gem::Version
|
113
113
|
version: '3.3'
|
114
114
|
- !ruby/object:Gem::Dependency
|
115
115
|
name: mail
|
116
116
|
requirement: !ruby/object:Gem::Requirement
|
117
117
|
requirements:
|
118
|
-
- -
|
118
|
+
- - ~>
|
119
119
|
- !ruby/object:Gem::Version
|
120
120
|
version: '2.6'
|
121
121
|
type: :runtime
|
122
122
|
prerelease: false
|
123
123
|
version_requirements: !ruby/object:Gem::Requirement
|
124
124
|
requirements:
|
125
|
-
- -
|
125
|
+
- - ~>
|
126
126
|
- !ruby/object:Gem::Version
|
127
127
|
version: '2.6'
|
128
128
|
- !ruby/object:Gem::Dependency
|
129
129
|
name: aws-sdk
|
130
130
|
requirement: !ruby/object:Gem::Requirement
|
131
131
|
requirements:
|
132
|
-
- -
|
132
|
+
- - ~>
|
133
133
|
- !ruby/object:Gem::Version
|
134
134
|
version: '2'
|
135
135
|
type: :runtime
|
136
136
|
prerelease: false
|
137
137
|
version_requirements: !ruby/object:Gem::Requirement
|
138
138
|
requirements:
|
139
|
-
- -
|
139
|
+
- - ~>
|
140
140
|
- !ruby/object:Gem::Version
|
141
141
|
version: '2'
|
142
142
|
description: Our tools to manage git and github
|
@@ -149,7 +149,6 @@ executables:
|
|
149
149
|
- twig-hotfix
|
150
150
|
- twig-deploy
|
151
151
|
- twig-feature
|
152
|
-
- twig-release
|
153
152
|
extensions: []
|
154
153
|
extra_rdoc_files: []
|
155
154
|
files:
|
@@ -160,7 +159,6 @@ files:
|
|
160
159
|
- bin/twig-hotfix
|
161
160
|
- bin/twig-deploy
|
162
161
|
- bin/twig-feature
|
163
|
-
- bin/twig-release
|
164
162
|
- lib/command.rb
|
165
163
|
- lib/prima_twig.rb
|
166
164
|
homepage: http://rubygems.org/gems/prima-twig
|
@@ -173,12 +171,12 @@ require_paths:
|
|
173
171
|
- lib
|
174
172
|
required_ruby_version: !ruby/object:Gem::Requirement
|
175
173
|
requirements:
|
176
|
-
- -
|
174
|
+
- - '>='
|
177
175
|
- !ruby/object:Gem::Version
|
178
176
|
version: '0'
|
179
177
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
180
178
|
requirements:
|
181
|
-
- -
|
179
|
+
- - '>='
|
182
180
|
- !ruby/object:Gem::Version
|
183
181
|
version: '0'
|
184
182
|
requirements: []
|
data/bin/twig-release
DELETED
@@ -1,227 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'rubygems'
|
4
|
-
require 'redcarpet'
|
5
|
-
require 'mail'
|
6
|
-
require_relative '../lib/prima_twig.rb'
|
7
|
-
|
8
|
-
class Release
|
9
|
-
include Command
|
10
|
-
|
11
|
-
def initialize
|
12
|
-
@prima = Prima.new
|
13
|
-
end
|
14
|
-
|
15
|
-
def execute! args
|
16
|
-
possible_args = ["start", "finish"]
|
17
|
-
stop_if args.empty?, [:wrong_args, possible_args]
|
18
|
-
stop_if args.length > 1, [:wrong_args, possible_args]
|
19
|
-
|
20
|
-
stop_if @prima.head_detached?, :detached_head
|
21
|
-
stop_unless @prima.is_clean?, :clean
|
22
|
-
|
23
|
-
case args[0]
|
24
|
-
when "start"
|
25
|
-
start_release!
|
26
|
-
when "finish"
|
27
|
-
finish_release!
|
28
|
-
else
|
29
|
-
stop_if true, [:wrong_args, possible_args]
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def start_release!
|
34
|
-
|
35
|
-
release_name = @prima.clean_branch_name(ask('Inserisci il nome della release (senza prefisso release/): '.cyan))
|
36
|
-
|
37
|
-
branch_name = "release/#{release_name}/#{Time.now.strftime('%Y%m%d')}"
|
38
|
-
|
39
|
-
output "Il nome del branch sarà #{branch_name.yellow}"
|
40
|
-
|
41
|
-
exec_step "git checkout dev"
|
42
|
-
exec_step "git pull origin dev"
|
43
|
-
exec_step "git checkout -b #{branch_name}"
|
44
|
-
exec_step "git push -u origin #{branch_name}"
|
45
|
-
|
46
|
-
pr = @prima.create_pull_request('master', branch_name, branch_name, '')
|
47
|
-
@prima.twig.set_branch_property(branch_name, 'pr', pr.number)
|
48
|
-
@prima.twig.set_branch_property(branch_name, 'diff-branch', 'dev')
|
49
|
-
|
50
|
-
commits = get_commits(pr.number)
|
51
|
-
issues = get_issues(pr.number)
|
52
|
-
|
53
|
-
issues.each do |issue|
|
54
|
-
@prima.delete_label_from_issue(issue.number, Prima::LABEL_NEXT_RELEASE)
|
55
|
-
@prima.update_issue_with_label(issue.number, Prima::LABEL_IN_STAGING)
|
56
|
-
end
|
57
|
-
|
58
|
-
pr_body = build_pr_body(issues, commits)
|
59
|
-
@prima.update_pr pr.number, {:body => pr_body}
|
60
|
-
|
61
|
-
mail = Mail.new do
|
62
|
-
from 'deploy@prima.it'
|
63
|
-
to 'deploy@prima.it'
|
64
|
-
subject "#{`git config user.name`} ha iniziato la creazione della release #{branch_name}"
|
65
|
-
end
|
66
|
-
|
67
|
-
htmlBody = build_pr_body(issues, commits, 'html')
|
68
|
-
|
69
|
-
html_part = Mail::Part.new do
|
70
|
-
content_type 'text/html; charset=UTF-8'
|
71
|
-
body htmlBody
|
72
|
-
end
|
73
|
-
text_part = Mail::Part.new do
|
74
|
-
body htmlBody.gsub(/<br\s?\/?>/, "\r\n").gsub(/<\/?[^>]*>/, '')
|
75
|
-
end
|
76
|
-
|
77
|
-
mail.html_part = html_part
|
78
|
-
mail.text_part = text_part
|
79
|
-
|
80
|
-
opts = {address: 'smtp.mandrillapp.com', port: '587'}
|
81
|
-
opts[:user_name] = 'deploy@prima.it'
|
82
|
-
opts[:password] = @prima.config['mandrill']
|
83
|
-
|
84
|
-
mail.delivery_method(:smtp, opts)
|
85
|
-
mail.deliver
|
86
|
-
end
|
87
|
-
|
88
|
-
def finish_release!
|
89
|
-
current_branch_name = @prima.twig.current_branch_name
|
90
|
-
stop_unless (current_branch_name =~ /^release\//), "Non sei su un branch di release, non posso mergiare nulla"
|
91
|
-
|
92
|
-
# Mergia la PR
|
93
|
-
pr = @prima.get_pr
|
94
|
-
stop_unless pr, 'Pull Request not found'
|
95
|
-
@prima.merge_pull_request pr
|
96
|
-
|
97
|
-
output "La Pull Request e' stata mergiata!".green
|
98
|
-
|
99
|
-
# Mergia il branch su dev e pusha
|
100
|
-
exec_step 'git fetch'
|
101
|
-
exec_step 'git checkout dev'
|
102
|
-
exec_step 'git merge origin/dev'
|
103
|
-
exec_step "git merge --no-ff #{current_branch_name}"
|
104
|
-
|
105
|
-
exec_step 'git push origin dev' if @prima.yesno 'Vuoi effettuare il push di dev?'.blue
|
106
|
-
|
107
|
-
# Aggiorno le issue
|
108
|
-
issues = get_issues(pr.number)
|
109
|
-
issues.each do |issue|
|
110
|
-
@prima.delete_label_from_issue(issue.number, Prima::LABEL_IN_STAGING)
|
111
|
-
@prima.close_issue issue.number
|
112
|
-
end
|
113
|
-
|
114
|
-
# Rimuove il branch remoto
|
115
|
-
exec_step "git push origin :#{current_branch_name}" if @prima.yesno "Vuoi eliminare il branch remoto #{current_branch_name}?".blue
|
116
|
-
|
117
|
-
# Crea il tag e la release con la description figa
|
118
|
-
exec_step 'git checkout master'
|
119
|
-
exec_step 'git pull'
|
120
|
-
res = @prima.rugged.tags.create(current_branch_name, @prima.rugged.head.target_id)
|
121
|
-
|
122
|
-
exec_step 'git push --tags'
|
123
|
-
|
124
|
-
commits = get_commits(pr.number)
|
125
|
-
pr_body = build_pr_body(issues, commits)
|
126
|
-
|
127
|
-
@prima.create_release(current_branch_name, {:name => current_branch_name, :body => pr_body})
|
128
|
-
|
129
|
-
output 'Release creata con successo!'.green
|
130
|
-
end
|
131
|
-
|
132
|
-
def get_commits(pr_number)
|
133
|
-
commits = []
|
134
|
-
|
135
|
-
@prima.get_pr_commits(pr_number).each do |item|
|
136
|
-
commits << item
|
137
|
-
end
|
138
|
-
|
139
|
-
commits
|
140
|
-
end
|
141
|
-
|
142
|
-
def get_issues(pr_number)
|
143
|
-
issues = []
|
144
|
-
issues_ids = []
|
145
|
-
|
146
|
-
self.get_commits(pr_number).each do |item|
|
147
|
-
if item.commit.message =~ /^\[*#(\d+)\]*\s-/
|
148
|
-
issue_id = item.commit.message.match(/^\[*#(\d+)\]*\s-/).captures.first
|
149
|
-
issues_ids << issue_id unless issues_ids.include? issue_id
|
150
|
-
end
|
151
|
-
end
|
152
|
-
|
153
|
-
issues_ids.each do |id|
|
154
|
-
issues << @prima.get_issue(id)
|
155
|
-
end
|
156
|
-
|
157
|
-
issues
|
158
|
-
end
|
159
|
-
|
160
|
-
def build_pr_body(issues, commits, output_format = 'markdown')
|
161
|
-
body = ''
|
162
|
-
|
163
|
-
body << "# Issues\n\n"
|
164
|
-
|
165
|
-
issues.each do |issue|
|
166
|
-
body << "### [##{issue.number} - #{issue.title.gsub(/\n/,' ')}](#{get_issue_url(issue.number)})\n\n"
|
167
|
-
body << "#{issue.body}\n\n"
|
168
|
-
end
|
169
|
-
|
170
|
-
body << "# Commits\n\n"
|
171
|
-
|
172
|
-
commits.each do |commit|
|
173
|
-
body << "* [#{commit.commit.message.gsub(/\n/,' ')}](#{get_commit_url(commit.sha)})\n"
|
174
|
-
end
|
175
|
-
|
176
|
-
if output_format == 'html'
|
177
|
-
markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML.new)
|
178
|
-
body = markdown.render body
|
179
|
-
end
|
180
|
-
|
181
|
-
body
|
182
|
-
|
183
|
-
end
|
184
|
-
|
185
|
-
def get_commit_url(sha)
|
186
|
-
"https://github.com/#{@prima.repo_name}/commit/#{sha}"
|
187
|
-
end
|
188
|
-
|
189
|
-
def get_issue_url(number)
|
190
|
-
"https://github.com/#{@prima.repo_name}/issues/#{number}"
|
191
|
-
end
|
192
|
-
end
|
193
|
-
|
194
|
-
def help_content
|
195
|
-
<<-HELP
|
196
|
-
|
197
|
-
twig-release
|
198
|
-
===========
|
199
|
-
|
200
|
-
Manage release creation
|
201
|
-
|
202
|
-
Synopsis
|
203
|
-
--------
|
204
|
-
|
205
|
-
twig release start
|
206
|
-
twig release finish
|
207
|
-
|
208
|
-
Description
|
209
|
-
-----------
|
210
|
-
|
211
|
-
start creates an release from dev branch
|
212
|
-
finish finishes the actual release by merging to dev and master
|
213
|
-
|
214
|
-
Subcommand for Twig: <http://rondevera.github.io/twig/>
|
215
|
-
Author: Andrea Usuelli <https://github.com/andreausu>
|
216
|
-
|
217
|
-
HELP
|
218
|
-
end
|
219
|
-
|
220
|
-
args = ARGV.dup
|
221
|
-
|
222
|
-
if args.include?('--help')
|
223
|
-
puts help_content
|
224
|
-
exit
|
225
|
-
end
|
226
|
-
|
227
|
-
Release.new.execute!(args)
|