git-story-workflow 0.1.3 → 0.2.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/VERSION +1 -1
- data/git-story-workflow.gemspec +3 -3
- data/lib/git/story/app.rb +68 -25
- data/lib/git/story/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8b22aeccbb93e24c1ed444a5d846b739d35bf015bf09abfb7d5030ef88c740de
|
4
|
+
data.tar.gz: 445b375ad12702e5d4ffd5179014e0e360e70088bfc703bbf6c72256a583e16c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 87ed8b1af5ae2754fbe5a4be9bcf0f5261da02601ffdcbf5892a2d29dab3da64c9704d9a1539a99cd007d8fb82d8945519e83c4d29bd11521b544bb3c4f60e86
|
7
|
+
data.tar.gz: f43aa63dee9673b3edf0ad8fd0caae1c25326f271b0842e50566e67cf358c61c758916db8d88307ba4f8016ed35b89a66af210f3c9b52d6d549f6c0443767611
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/git-story-workflow.gemspec
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
# stub: git-story-workflow 0.
|
2
|
+
# stub: git-story-workflow 0.2.0 ruby lib
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "git-story-workflow".freeze
|
6
|
-
s.version = "0.
|
6
|
+
s.version = "0.2.0"
|
7
7
|
|
8
8
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
9
9
|
s.require_paths = ["lib".freeze]
|
10
10
|
s.authors = ["Florian Frank".freeze]
|
11
|
-
s.date = "2017-12-
|
11
|
+
s.date = "2017-12-15"
|
12
12
|
s.description = "Gem abstracting a git workflow\u2026".freeze
|
13
13
|
s.email = "flori@ping.de".freeze
|
14
14
|
s.executables = ["git-story".freeze]
|
data/lib/git/story/app.rb
CHANGED
@@ -59,8 +59,15 @@ class Git::Story::App
|
|
59
59
|
|
60
60
|
command doc: 'output the current story branch if it is checked out'
|
61
61
|
def current(check: true)
|
62
|
-
check
|
63
|
-
|
62
|
+
if check
|
63
|
+
if cb = current_branch_checked?
|
64
|
+
cb
|
65
|
+
else
|
66
|
+
error 'Switch to a story branch first for this operation!'
|
67
|
+
end
|
68
|
+
else
|
69
|
+
current_branch
|
70
|
+
end
|
64
71
|
end
|
65
72
|
|
66
73
|
def provide_name(story_id = nil)
|
@@ -116,6 +123,36 @@ class Git::Story::App
|
|
116
123
|
"Getting #{url.inspect} => #{e.class}: #{e}".red
|
117
124
|
end
|
118
125
|
|
126
|
+
command doc: '[STORY_ID] fetch status of current story'
|
127
|
+
def status(story_id = current(check: true)&.[](/_(\d+)\z/, 1)&.to_i)
|
128
|
+
if story = fetch_story(story_id)
|
129
|
+
jj story
|
130
|
+
color_state =
|
131
|
+
case cs = story.current_state
|
132
|
+
when 'unscheduled', 'planned', 'unstarted'
|
133
|
+
cs
|
134
|
+
when 'rejected'
|
135
|
+
cs.white.on_red
|
136
|
+
when 'accepted'
|
137
|
+
cs.green
|
138
|
+
else
|
139
|
+
cs.yellow
|
140
|
+
end
|
141
|
+
<<~end
|
142
|
+
Id: #{story.id}
|
143
|
+
Name: #{story.name.inspect.bold}
|
144
|
+
Type: #{story.story_type}
|
145
|
+
Estimate: #{story.estimate.to_s.yellow.bold}
|
146
|
+
State: #{color_state}
|
147
|
+
Branch: #{current_branch_checked?&.color('#ff5f00')}
|
148
|
+
Pivotal: #{story.url}
|
149
|
+
Labels: #{story.labels.map(&:name) * ?,}
|
150
|
+
end
|
151
|
+
end
|
152
|
+
rescue => e
|
153
|
+
"Getting pivotal story status => #{e.class}: #{e}".red
|
154
|
+
end
|
155
|
+
|
119
156
|
command doc: '[AUTHOR] list all stories'
|
120
157
|
def list(author = nil, mark_red: current(check: false))
|
121
158
|
stories.map { |b|
|
@@ -252,9 +289,11 @@ class Git::Story::App
|
|
252
289
|
end
|
253
290
|
|
254
291
|
def fetch_story_name(story_id)
|
255
|
-
|
256
|
-
|
257
|
-
|
292
|
+
fetch_story(story_id)&.name
|
293
|
+
end
|
294
|
+
|
295
|
+
def fetch_story(story_id)
|
296
|
+
pivotal_get("projects/#{pivotal_project}/stories/#{story_id}").full?
|
258
297
|
end
|
259
298
|
|
260
299
|
def pivotal_get(path)
|
@@ -278,36 +317,40 @@ class Git::Story::App
|
|
278
317
|
sh 'git fetch --tags'
|
279
318
|
end
|
280
319
|
|
320
|
+
def apply_story_accessors(ref)
|
321
|
+
branch =~ BRANCH_NAME_REGEX or return
|
322
|
+
branch.extend StoryAccessors
|
323
|
+
branch.story_base_name = ref[0]
|
324
|
+
branch.story_name = $1
|
325
|
+
branch.story_id = $2.to_i
|
326
|
+
branch.story_created_at = ref[1]
|
327
|
+
branch.story_author = ref[2]
|
328
|
+
branch
|
329
|
+
end
|
330
|
+
|
281
331
|
def stories
|
282
332
|
sh 'git remote prune origin', error: false
|
283
333
|
refs = capture("git for-each-ref --format='%(refname);%(committerdate);%(authorname) %(authoremail)'")
|
284
334
|
refs = refs.lines.map { |l|
|
285
|
-
|
286
|
-
next unless
|
287
|
-
|
288
|
-
next unless
|
289
|
-
|
290
|
-
|
291
|
-
}.compact.map do |
|
292
|
-
|
293
|
-
|
294
|
-
b.extend StoryAccessors
|
295
|
-
b.story_base_name = r[0]
|
296
|
-
b.story_name = $1
|
297
|
-
b.story_id = $2.to_i
|
298
|
-
b.story_created_at = r[1]
|
299
|
-
b.story_author = r[2]
|
300
|
-
b
|
301
|
-
end
|
335
|
+
ref = l.chomp.split(?;)
|
336
|
+
next unless ref[0] =~ %r(/origin/)
|
337
|
+
ref[0] = File.basename(ref[0])
|
338
|
+
next unless ref[0] =~ BRANCH_NAME_REGEX
|
339
|
+
ref[1] = Time.parse(ref[1])
|
340
|
+
ref
|
341
|
+
}.compact.map do |ref|
|
342
|
+
apply_story_accessors ref
|
343
|
+
end.compact
|
302
344
|
end
|
303
345
|
|
304
346
|
def current_branch
|
305
347
|
capture("git rev-parse --abbrev-ref HEAD").strip
|
306
348
|
end
|
307
349
|
|
308
|
-
def
|
309
|
-
current_branch =~ BRANCH_NAME_REGEX
|
310
|
-
|
350
|
+
def current_branch_checked?
|
351
|
+
if (cb = current_branch) =~ BRANCH_NAME_REGEX
|
352
|
+
cb
|
353
|
+
end
|
311
354
|
end
|
312
355
|
|
313
356
|
def format_tag_time(tag)
|
data/lib/git/story/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: git-story-workflow
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Florian Frank
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-12-
|
11
|
+
date: 2017-12-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gem_hadar
|