eslurper 1.0.0 → 1.0.1
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/bin/eslurp +5 -1
- data/lib/slurper.rb +14 -6
- data/lib/story.rb +21 -3
- data/spec/slurper_spec.rb +1 -0
- metadata +10 -10
data/bin/eslurp
CHANGED
@@ -22,8 +22,12 @@ OptionParser.new do |opts|
|
|
22
22
|
opts.on("-r", "--reverse", "Reverse story creation order") do |v|
|
23
23
|
options[:reverse] = v
|
24
24
|
end
|
25
|
+
opts.on('-u', '--update_epic [STORY_ID]', Integer, "Link existing epic(s) with feature urls","if no story id provided, all current epics that aren't linked will be updated") do |ue|
|
26
|
+
options[:update_epics] = true
|
27
|
+
options[:story_query] = ue
|
28
|
+
end
|
25
29
|
end.parse!
|
26
30
|
|
27
31
|
story_file = ARGV.empty? ? "stories.slurper" : ARGV[0]
|
28
32
|
|
29
|
-
Slurper.slurp(story_file, options
|
33
|
+
Slurper.slurp(story_file, options)
|
data/lib/slurper.rb
CHANGED
@@ -6,22 +6,30 @@ YAML::ENGINE.yamler='syck' if RUBY_VERSION > '1.9'
|
|
6
6
|
|
7
7
|
class Slurper
|
8
8
|
|
9
|
-
attr_accessor :story_file, :stories
|
9
|
+
attr_accessor :story_file, :stories, :update_epics, :story_query
|
10
|
+
|
11
|
+
def self.slurp(story_file, options)
|
12
|
+
|
13
|
+
slurper = new(story_file, options)
|
10
14
|
|
11
|
-
def self.slurp(story_file, reverse)
|
12
|
-
slurper = new(story_file)
|
13
15
|
slurper.load_stories
|
14
16
|
slurper.prepare_stories
|
15
|
-
slurper.sort_stories(reverse)
|
17
|
+
slurper.sort_stories(options[:reverse])
|
16
18
|
slurper.create_stories
|
17
19
|
end
|
18
20
|
|
19
|
-
def initialize(story_file)
|
21
|
+
def initialize(story_file, options)
|
20
22
|
self.story_file = story_file
|
23
|
+
self.update_epics = options[:update_epics]
|
24
|
+
self.story_query = options[:story_query]
|
21
25
|
end
|
22
26
|
|
23
27
|
def load_stories
|
24
|
-
|
28
|
+
if update_epics
|
29
|
+
self.stories = Story.find_unlinked_epics(story_query)
|
30
|
+
else
|
31
|
+
self.stories = YAML.load(yamlize_story_file)
|
32
|
+
end
|
25
33
|
end
|
26
34
|
|
27
35
|
def prepare_stories
|
data/lib/story.rb
CHANGED
@@ -17,10 +17,17 @@ class Story < ActiveResource::Base
|
|
17
17
|
"http"
|
18
18
|
end
|
19
19
|
self.site = "#{scheme}://www.pivotaltracker.com/services/v3/projects/:project_id"
|
20
|
-
# self.site = "#{scheme}://www.pivotaltracker.com/services/v3/projects/#{@@config[project_id]}"
|
21
20
|
@@config
|
22
21
|
end
|
23
22
|
|
23
|
+
def self.find_unlinked_epics(story_query)
|
24
|
+
@@config = yaml
|
25
|
+
stories = Array.new
|
26
|
+
stories << Story.find(story_query||:all, :params => {:filter => 'label:epic', :project_id => @@config['project_id']})
|
27
|
+
require 'ruby-debug'; Debugger.start; Debugger.settings[:autoeval] = 1; Debugger.settings[:autolist] = 1; debugger
|
28
|
+
stories.flatten.reject { |story| story.linked? }
|
29
|
+
end
|
30
|
+
|
24
31
|
headers['X-TrackerToken'] = config.delete("token")
|
25
32
|
headers['Accept-Encoding'] = '*/*'
|
26
33
|
self.format = ActiveResource::Formats::XmlFormat
|
@@ -29,13 +36,24 @@ class Story < ActiveResource::Base
|
|
29
36
|
scrub_description
|
30
37
|
scrub_labels
|
31
38
|
default_requested_by
|
32
|
-
|
39
|
+
link_story
|
40
|
+
end
|
41
|
+
|
42
|
+
def link_story
|
43
|
+
if epic_story? && !linked?
|
44
|
+
self.description += "\n" + "Features Label Search\n" + label_search_url + "\n\n" + story_urls.join("\n")
|
45
|
+
self.labels += ",linked"
|
46
|
+
end
|
33
47
|
end
|
34
48
|
|
35
49
|
def epic_story?
|
36
50
|
respond_to?(:labels) ? self.labels.split(',').include?("epic") : false
|
37
51
|
end
|
38
52
|
|
53
|
+
def linked?
|
54
|
+
respond_to?(:labels) ? self.labels.split(',').include?("linked") : false
|
55
|
+
end
|
56
|
+
|
39
57
|
def feature_labels
|
40
58
|
self.labels.split(',').find { |label| label != "epic" }
|
41
59
|
end
|
@@ -65,7 +83,7 @@ class Story < ActiveResource::Base
|
|
65
83
|
"https://www.pivotaltracker.com/projects/#{@config['epic_features_project_id']}?label=" + feature_labels
|
66
84
|
end
|
67
85
|
|
68
|
-
def
|
86
|
+
def story_urls
|
69
87
|
retrieve_user_stories.map { |story| story.url }
|
70
88
|
end
|
71
89
|
|
data/spec/slurper_spec.rb
CHANGED
@@ -19,6 +19,7 @@ describe Slurper do
|
|
19
19
|
before do
|
20
20
|
slurper = Slurper.new(File.join(File.dirname(__FILE__), "fixtures", "epic_story.slurper"))
|
21
21
|
slurper.load_stories
|
22
|
+
require 'ruby-debug'; Debugger.start; Debugger.settings[:autoeval] = 1; Debugger.settings[:autolist] = 1; debugger
|
22
23
|
@story = slurper.stories.first
|
23
24
|
end
|
24
25
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eslurper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,11 +13,11 @@ authors:
|
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date: 2011-11-
|
16
|
+
date: 2011-11-28 00:00:00.000000000Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: activeresource
|
20
|
-
requirement: &
|
20
|
+
requirement: &70108441577340 !ruby/object:Gem::Requirement
|
21
21
|
none: false
|
22
22
|
requirements:
|
23
23
|
- - ~>
|
@@ -25,10 +25,10 @@ dependencies:
|
|
25
25
|
version: 3.1.2
|
26
26
|
type: :runtime
|
27
27
|
prerelease: false
|
28
|
-
version_requirements: *
|
28
|
+
version_requirements: *70108441577340
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: rspec
|
31
|
-
requirement: &
|
31
|
+
requirement: &70108441575900 !ruby/object:Gem::Requirement
|
32
32
|
none: false
|
33
33
|
requirements:
|
34
34
|
- - ~>
|
@@ -36,10 +36,10 @@ dependencies:
|
|
36
36
|
version: 1.3.0
|
37
37
|
type: :development
|
38
38
|
prerelease: false
|
39
|
-
version_requirements: *
|
39
|
+
version_requirements: *70108441575900
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: ruby-debug19
|
42
|
-
requirement: &
|
42
|
+
requirement: &70108441574820 !ruby/object:Gem::Requirement
|
43
43
|
none: false
|
44
44
|
requirements:
|
45
45
|
- - ~>
|
@@ -47,10 +47,10 @@ dependencies:
|
|
47
47
|
version: 0.11.6
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
|
-
version_requirements: *
|
50
|
+
version_requirements: *70108441574820
|
51
51
|
- !ruby/object:Gem::Dependency
|
52
52
|
name: configuration
|
53
|
-
requirement: &
|
53
|
+
requirement: &70108441573720 !ruby/object:Gem::Requirement
|
54
54
|
none: false
|
55
55
|
requirements:
|
56
56
|
- - ~>
|
@@ -58,7 +58,7 @@ dependencies:
|
|
58
58
|
version: 1.2.0
|
59
59
|
type: :development
|
60
60
|
prerelease: false
|
61
|
-
version_requirements: *
|
61
|
+
version_requirements: *70108441573720
|
62
62
|
description: ! "\n Slurps stories from the given file (stories.slurper by default)
|
63
63
|
and creates Pivotal Tracker stories from them. Useful during story carding sessions
|
64
64
|
when you want to capture a number of stories quickly without clicking your way through
|