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 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[:reverse])
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
- self.stories = YAML.load(yamlize_story_file)
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
- self.description += "\n" + "Label Search\n" + label_search_url + "\n\n" + story_links.join("\n") if epic_story?
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 story_links
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.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-21 00:00:00.000000000Z
16
+ date: 2011-11-28 00:00:00.000000000Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: activeresource
20
- requirement: &70340789669980 !ruby/object:Gem::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: *70340789669980
28
+ version_requirements: *70108441577340
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: rspec
31
- requirement: &70340789669360 !ruby/object:Gem::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: *70340789669360
39
+ version_requirements: *70108441575900
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: ruby-debug19
42
- requirement: &70340789668760 !ruby/object:Gem::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: *70340789668760
50
+ version_requirements: *70108441574820
51
51
  - !ruby/object:Gem::Dependency
52
52
  name: configuration
53
- requirement: &70340789668160 !ruby/object:Gem::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: *70340789668160
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