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.
@@ -79,7 +79,7 @@ class OpenPR
79
79
  exit 0
80
80
  end
81
81
 
82
- pr = create_pull_request(choose_base_branch)
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
@@ -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
- issues.delete_if do |issue|
49
- issue.pull_request?
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
- issue_number = choose_issue issues
53
- issue_type = select_issue_type issue_number
54
- base_branch_name_default = issue_type == 'hotfix' ? 'master' : 'dev'
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!
@@ -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
- generate_config
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.2.27
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-02-03 00:00:00.000000000 Z
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: []
@@ -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)