overview 0.0.5.pre.22 → 0.0.6.pre.24

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZmVmZDE3YjMxNmFiYmUzNDlmOWM4YWZhYmE5OWJhNzUyYWQyMWE3ZA==
4
+ ZWNiYjZhYjBmYmU5NWQ0YjM3ZmI4NzQ3OWFjZTcyYWExODg1ZWU0NQ==
5
5
  data.tar.gz: !binary |-
6
- NzI4NzYxNzMyODczMmY2MTdkMzcxY2M0Y2Q5NGM2ZGY2N2Q0ZDVhMw==
6
+ ZjhlNGRkZTE1N2EwYTg3OGQ4OTgwY2Y3MWQyYzc3ZDhmZGIyYzNjYg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ODhjMzkwMGUxNzFkYTI3NzhmYTdhYjBiNjljYTdkYjgwNjE3MjAwOGE3Mjll
10
- NDU3OWU0OTEyMzIzYmZkNTA5MmRlOTA5MjIxMDdiNTRjYzlmODQwNThlOGQ4
11
- MmVhZGY1Y2NmYmQ0YTE0YzBkYmY2OWE4MTQ1MDlmNzM0ODVmNDI=
9
+ MjBiZDA5OTIzODZjN2IxZTkwYzZmZDViYWMyMDUwZWU2ZjI1YTg1ZGZkYmVj
10
+ YzVjMWI2OTI4ZTMzYjViMmU0YjQ4YWYzMmM0NDVmNjE5NDAxNjRmYjhiM2Ew
11
+ ZGNkMTZlNjBlMmNkNzMyYjY4YTM4N2EwMjNmY2ZlZWIxMjZhZDk=
12
12
  data.tar.gz: !binary |-
13
- ZDM0OGY4YmJmMTZkMzMzZGZkMjYyOWFjMGRjOTM2YTYxM2E1OWVhOTdmOGRk
14
- Yzg3ZWZiNWY1MWJiYzc5ODJlNmM0Nzk4YjY1YTM4YjUzYTkxNDhjYTYxOWY3
15
- OTI2N2JmNDZkNGI3NjkxMzM0ODYzNjdjNmJlMmIxM2RjYTE4YzY=
13
+ YzcyNmM4ZWMyYWM1OTIwMjQyMTQyZmQ1MjZiN2QwNzVjYmY3YzUzZDkyM2Q3
14
+ YzEwOTBiZWJmNzczOWI0NmI3YTFiMWNlYjdmOGRmZDYxNTIzMThlNDE5NGJk
15
+ ZmI3MWIzMTYzYTY4ODk1ODdkNzc5YzVmMzQ5NzZjMmRjY2MzMWY=
data/.gitignore CHANGED
@@ -20,4 +20,5 @@ lib/github.cache
20
20
  lib/github.yml
21
21
 
22
22
  spec/coverage/
23
- coverage/
23
+ coverage/
24
+ *.log
data/lib/appversion.rb CHANGED
@@ -11,7 +11,7 @@ module AppVersion
11
11
  default
12
12
  else
13
13
  require 'octokit'
14
- repo = CI.repo || Git.repo
14
+ repo = Helpers::CI.repo || Git.repo
15
15
  $stdout.puts "Repo slug is #{repo}"
16
16
  if repo.empty? || ENV['GITHUB_TOKEN'].nil? #for local builds
17
17
  $stdout.puts 'GITHUB_TOKEN missing, running locally'
@@ -47,22 +47,22 @@ module AppVersion
47
47
  #TODO: refactor so that every permutation can be tested. E.g. github release where is_pre_release=false, what is the commit count?
48
48
  #Make this a class method
49
49
  def version(semantic:false, rubygem:false)
50
- version_suffix = CI.version_suffix
50
+ version_suffix = Helpers::CI.version_suffix
51
51
  if !Git.installed? then
52
52
  $stderr.puts 'Git required, not installed'
53
53
  exit 1
54
54
  end
55
55
 
56
- latest_tag = Git.tag
56
+ latest_tag = Helpers::Git.tag
57
57
  if latest_tag == 'HEAD'
58
- commit_count = Git.commit_count
58
+ commit_count = Helpers::Git.commit_count
59
59
  clean_tag = '0.0.1'
60
60
  elsif latest_tag.empty? #not a git directory
61
61
  commit_count = 0
62
62
  clean_tag = '0.0.1'
63
63
  else
64
- commit_count = Git.commit_count_since_tag(latest_tag)
65
- clean_tag = Git.clean_tag(rubygem:rubygem)
64
+ commit_count = Helpers::Git.commit_count_since_tag(latest_tag)
65
+ clean_tag = Helpers::Git.clean_tag(rubygem:rubygem)
66
66
  end
67
67
  #Only increment version after production release, so that we retain a single version during beta and RCs
68
68
  #TODO: check if this is a tagged build, and then always use the clean_tag. Not need to check pre_release or increment
@@ -70,10 +70,10 @@ module AppVersion
70
70
  $stdout.puts "Latest tag = #{latest_tag}"
71
71
  $stdout.puts "Commit count since tag = #{commit_count}"
72
72
  $stdout.puts "Was tag from a Github pre-release? #{is_pre_release}"
73
- $stdout.puts "Is this a Github release? #{CI.tagged_build?}"
73
+ $stdout.puts "Is this a Github release? #{Helpers::CI.tagged_build?}"
74
74
 
75
75
  #Don't increment version for Github releases, if no commits have been made since last tag, or if last Github release was a pre_release
76
- if CI.tagged_build? || commit_count == 0 || is_pre_release
76
+ if Helpers::CI.tagged_build? || commit_count == 0 || is_pre_release
77
77
  short_version = clean_tag
78
78
  else
79
79
  short_version = clean_tag.increment_version
@@ -88,11 +88,11 @@ module AppVersion
88
88
  end
89
89
 
90
90
  def build_no
91
- CI.build_no
91
+ Helpers::CI.build_no
92
92
  end
93
93
 
94
94
  def suffix
95
- branch = CI.branch || Git.branch
95
+ branch = Helpers::CI.branch || Git.branch
96
96
  $stdout.puts "Branch = #{branch}"
97
97
  case branch
98
98
  when /develop/
@@ -109,7 +109,7 @@ module AppVersion
109
109
  suffix = '-debug'
110
110
  end
111
111
  #special case for github releases
112
- if CI.tagged_build?
112
+ if Helpers::CI.tagged_build?
113
113
  $stdout.puts 'Tagged build, suppressing branch suffix'
114
114
  suffix = ''
115
115
  end
data/lib/changelog.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module Changelog
2
2
 
3
- require 'httparty'
3
+ require 'typhoeus'
4
4
  require 'json'
5
5
  require 'octokit'
6
6
  require 'formatador'
@@ -15,7 +15,7 @@ module Changelog
15
15
  require 'faraday-http-cache'
16
16
  =begin
17
17
  TODO:
18
-
18
+ *** This is now completed broken ****
19
19
  More than I can comprehend...
20
20
  Keep all incoming data in original format, so that it can be reproccessed. e.g. Make calls. Store Data. Retrieve data. Process data. Display data. Deploy.
21
21
  Mark sprint.ly items as deployed if complete. This will eventually be in a separate script.
@@ -33,9 +33,7 @@ Deployment logic to work differently for feature branches... I think
33
33
  @logger = Logging.logger[self]
34
34
  @logger.add_appenders \
35
35
  Logging.appenders.stdout,
36
- Logging.appenders.file('overview.log')
37
- @logger.level = :info
38
-
36
+ Logging.appenders.file("#{self.class.name}.log")
39
37
  APICache.store = Moneta.new(:YAML, :file => "#{self.class.name}_cache")
40
38
  APICache.logger.level = Logger::DEBUG
41
39
 
@@ -99,80 +97,7 @@ Deployment logic to work differently for feature branches... I think
99
97
  end
100
98
  end
101
99
 
102
- class Item
103
- def initialize(title, id, description, sha, date, source, type=nil, status=nil, author=nil, environments=nil)
104
- type ||="NA"
105
- status ||="UNKNOWN"
106
- author ||="UNKNOWN"
107
- environments ||= []
108
- @title = title.delete("\n")
109
- @description = description
110
- @sha = sha
111
- @date = date
112
- @id = id
113
- @source = source
114
- @type = type
115
- @status = status
116
- @author = author
117
- @environments = environments
118
- end
119
-
120
- def inspect
121
- "<#{@source} #{@type.upcase} ##{@id} : #{self.status} : #{@title}>"
122
- end
123
-
124
- def title
125
- return @title
126
- end
127
-
128
- def date
129
- return @date
130
- end
131
-
132
- def type
133
- return @type
134
- end
135
-
136
- def author
137
- return @author
138
- end
139
-
140
- def environments
141
- return @environments.any? ? @environments : nil
142
- end
143
-
144
- def sha
145
- return @sha
146
- end
147
-
148
- def id
149
- return @id
150
- end
151
-
152
- def status
153
- return @status.nil? ? "NA" : @status.upcase
154
- end
155
-
156
- def source
157
- return @source
158
- end
159
-
160
- def sprintly?
161
- return self.source.upcase == "SPRINT.LY"
162
- end
163
-
164
- def complete?
165
- return %w(COMPLETED ACCEPTED).include?(self.status)
166
- end
167
100
 
168
- def built?
169
- return self.environments.join.scan(/#(\d+)/).any? unless self.environments.nil?
170
- end
171
-
172
- def released?
173
- return self.environments.join.scan(/v(\d+)/).any? unless self.environments.nil?
174
- end
175
- end
176
101
 
177
102
  class Log < Base
178
103
  def githubReleaseStatus(release=nil)
@@ -283,7 +208,7 @@ Deployment logic to work differently for feature branches... I think
283
208
 
284
209
  def crashlyticsItem(title, id, sha, date, author)
285
210
  #puts " " + item["type"].capitalize + " " + item["number"].to_s + ": " + item["title"]
286
- return Item.new(title, id, "NA", sha, date, "Crashlytics", "crash", nil, author)
211
+ return SprintlyItem.new(title, id, "NA", sha, date, "Crashlytics", "crash", nil, author)
287
212
  end
288
213
 
289
214
  #TODO - consider returning sprint.ly story rather than task
@@ -293,13 +218,13 @@ Deployment logic to work differently for feature branches... I think
293
218
  APICache.get(url, :timeout => 30, :fail => []) do
294
219
  response = HTTParty.get(url, :basic_auth => @auth)
295
220
  item = JSON.parse(response.body)
296
- Item.new(item["title"], item["number"], item["description"], sha, date, "Sprint.ly", item["type"], item["status"], author, item["deployed_to"])
221
+ SprintlyItem.new(item["title"], item["number"], item["description"], sha, date, "Sprint.ly", item["type"], item["status"], author, item["deployed_to"])
297
222
  end
298
223
  end
299
224
 
300
225
  def commitItem(commit)
301
226
  APICache.get(commit.sha, :fail => []) do
302
- Item.new(commit.commit.message.lines.first, commit.sha[0..6], commit.commit.message, commit.sha, commit.commit.author.date, "Github", "commit", "NA", commit.commit.author.name)
227
+ SprintlyItem.new(commit.commit.message.lines.first, commit.sha[0..6], commit.commit.message, commit.sha, commit.commit.author.date, "Github", "commit", "NA", commit.commit.author.name)
303
228
  end
304
229
  end
305
230
 
@@ -0,0 +1,17 @@
1
+ module Helpers
2
+ class Cache
3
+ def initialize
4
+ @memory = {}
5
+ end
6
+
7
+ def get(request)
8
+ p "get cache"
9
+ @memory[request]
10
+ end
11
+
12
+ def set(request, response)
13
+ p "set cache"
14
+ @memory[request] = response
15
+ end
16
+ end
17
+ end
data/lib/helpers/ci.rb CHANGED
@@ -1,3 +1,4 @@
1
+ module Helpers
1
2
 
2
3
  class CI
3
4
  DEFAULT_BUILD_NO = '1'
@@ -27,4 +28,4 @@
27
28
  ENV['TRAVIS_COMMIT'] || ENV['CIRCLE_SHA1']
28
29
  end
29
30
  end
30
-
31
+ end
data/lib/helpers/git.rb CHANGED
@@ -59,20 +59,23 @@ module Helpers
59
59
  return commitMessage.scan(/(c|C):(?<crashlytics>\d+)/).flatten.collect { |x| x.to_i }.uniq
60
60
  end
61
61
  def self.parse_sprintly(commitMessage)
62
- commands = %w(close closed closes finish finished finishes fix fixed fixes breaks unfixes reopen reopens re-open re-opens addresses re ref references refs start starts see).collect{ |x| "\\b#{x}\\b" }.join("|")
63
- prefixes = %w(task issue defect bug item ticket).collect{ |x| "\\b#{x}:\\b" }.join("|") + "|#"
64
- re = Regexp.new(/(?:#{commands})\s(?:#{prefixes})(\d+)/)
65
- return commitMessage.downcase.scan(re).flatten.collect{ |x| x.to_i }.uniq
62
+ #logic from https://github.com/sprintly/sprintly-commit-parser/blob/master/sprintly_commit_parser/commit_parser.py
63
+ commandsRE = Regexp.new(/(?<action>[A-Za-z]*) ?(task|issue|defect|bug|item|ticket|:)?.?(?<ticket>(?:#|(?:ticket|issue|item|defect|bug)[: ]?)(\d+)(?:(?:[, &]*|[ ,]+?and[ ]?)(?:#|(?:ticket|issue|item|defect|bug)[: ]?)(\d+))*)/)
64
+ ticketsRE = Regexp.new(/(?:#|(?:ticket|issue|item|defect|bug)[: ]?)(\d+)/)
65
+ commands = commitMessage.downcase.scan(commandsRE)
66
+ tickets = commands.collect { |command|
67
+ command.last.scan(ticketsRE) unless command.first.empty? #only collect tickets with commands
68
+ }
69
+ return tickets.flatten.compact.collect{ |x| x.to_i }.uniq
66
70
  end
67
71
  def self.parse_commit_message(commitMessage)
68
72
  h = {}
69
- deploy, message = self.parse_deploy(commitMessage)
73
+ deploy = self.parse_deploy(commitMessage)
70
74
  sprintly_tickets = self.parse_sprintly(commitMessage)
71
75
  crashlytics_ids = self.parse_crashlytics(commitMessage)
72
- h["deploy?"] = deploy
73
- h["message"] = message
74
- h["sprintly"] = sprintly_tickets
75
- h["crashlytics"] = crashlytics_ids
76
+ h[:deploy] = deploy
77
+ h[:sprintly] = sprintly_tickets
78
+ h[:crashlytics] = crashlytics_ids
76
79
  return h
77
80
  end
78
81
  def self.commit_sha
@@ -2,80 +2,84 @@ require 'api_cache'
2
2
  require 'moneta'
3
3
  require 'octokit'
4
4
  #TODO - this is actually a github class
5
- class Github
6
- #TODO make this a singleton
7
- #TODO add repo, and branch to cache keys
8
- def initialize(repo, branch, github_token=ENV['GITHUB_TOKEN'])
9
- #TODO: inherit from base class
10
- @github_token = github_token
11
- @repo = repo
12
- @branch = branch
13
- @logger = Logging.logger[self]
14
- @logger.add_appenders \
15
- Logging.appenders.stdout,
16
- Logging.appenders.file('overview.log')
17
- @logger.level = :info
5
+ module Helpers
18
6
 
19
- APICache.store = Moneta.new(:YAML, :file => "#{self.class.name}_cache")
20
- APICache.logger.level = Logger::INFO
21
- #APICache.store = nil
22
- end
7
+ class Github
8
+ #TODO make this a singleton
9
+ #TODO add repo, and branch to cache keys
10
+ def initialize(repo, branch, github_token=ENV['GITHUB_TOKEN'])
11
+ #TODO: inherit from base class
12
+ @github_token = github_token
13
+ if !@github_token || @github_token.empty?
14
+ $stderr.puts 'github_token missing. Unable to authenticate with Github. Aborting...'
15
+ exit 1
16
+ end
17
+ @repo = repo
18
+ @branch = branch
19
+ @logger = Logging.logger[self]
20
+ @logger.add_appenders \
21
+ Logging.appenders.stdout,
22
+ Logging.appenders.file('overview.log')
23
+ @logger.level = :info
23
24
 
24
- def client
25
- if !@client
26
- @client = Octokit::Client.new(:access_token => @github_token)
27
- @client.auto_paginate = true
28
- @client.default_media_type = "application/vnd.github.moondragon+json"
29
- @logger.info "Connected to Github" if @client
25
+ APICache.store = Moneta.new(:YAML, :file => "#{self.class.name}_cache")
26
+ APICache.logger.level = Logger::INFO
27
+ #APICache.store = nil
30
28
  end
31
- @client
32
- end
33
29
 
34
- def hooks
35
- @hooks = client.hooks(@repo) unless @hooks
36
- @logger.info "Retrieved hooks for #{@repo}" if @hooks
37
- @hooks
38
- end
30
+ def client
31
+ if !@client
39
32
 
40
- def releases
41
- #APICache.get("releases") do
42
- client.releases(@repo)
43
- #end
44
- end
33
+ @client = Octokit::Client.new(:access_token => @github_token)
34
+ @client.auto_paginate = true
35
+ @client.default_media_type = "application/vnd.github.moondragon+json"
36
+ @logger.info "Connected to Github as #{@client.user[:login]}"
37
+ end
38
+ @client
39
+ end
45
40
 
46
- def sprintly_product_id
47
- #TODO this could also return a CLI flag or env variable
48
- APICache.get("sprintly_product_id_#{@repo}", :fail => [], :timeout => 30) do
49
- @logger.info "Not using cache"
50
- product_id = hooks.map { |h| h.config.product_id }.compact.first
51
- @logger.info "Sprint.ly product_id = #{product_id}" if product_id
52
- product_id
41
+ def hooks
42
+ @hooks = client.hooks(@repo) unless @hooks
43
+ @logger.info "Retrieved hooks for #{@repo}" if @hooks
44
+ @hooks
53
45
  end
54
- end
55
46
 
56
- def ref(tag)
57
- #APICache.get("ref_#{tag}") do
58
- client.ref(@repo, "tags/" + tag)
59
- #end
60
- end
47
+ def releases
48
+ #APICache.get("releases") do
49
+ client.releases(@repo)
50
+ #end
51
+ end
61
52
 
62
- def commit(sha)
63
- #APICache.get("commit_#{sha}") do
64
- client.commit(@repo, sha)
65
- #end
66
- end
53
+ def sprintly_product_id
54
+ product_id = hooks.map { |h| h.config.product_id }.compact.first
55
+ @logger.info "Sprint.ly product_id = #{product_id}" if product_id
56
+ product_id
57
+ end
67
58
 
68
- def commits_since(since)
69
- #APICache.get("commit_since_#{since}") do
70
- client.commits_since(@repo, since, @branch)
71
- #end
72
- end
59
+ def ref(tag)
60
+ #APICache.get("ref_#{tag}") do
61
+ client.ref(@repo, "tags/" + tag)
62
+ #end
63
+ end
73
64
 
74
- def commits_between(from,to)
65
+ def commit(sha)
66
+ #APICache.get("commit_#{sha}") do
67
+ client.commit(@repo, sha)
68
+ #end
69
+ end
75
70
 
76
- end
77
- def commits_before(to)
71
+ def commits_since(since)
72
+ #APICache.get("commit_since_#{since}") do
73
+ client.commits_since(@repo, since, @branch)
74
+ #end
75
+ end
78
76
 
77
+ def commits_between(from,to)
78
+
79
+ end
80
+ def commits_before(to)
81
+
82
+ end
79
83
  end
80
84
  end
81
85
 
@@ -0,0 +1,117 @@
1
+ module Helpers
2
+ class Base
3
+ require 'logging'
4
+
5
+ def initialize
6
+ @logger = Logging.logger[self]
7
+ @logger.add_appenders \
8
+ Logging.appenders.stdout,
9
+ Logging.appenders.file("#{self.class.name}.log")
10
+ end
11
+ end
12
+
13
+ class SprintlyItem
14
+ require 'uri'
15
+
16
+ attr_accessor :title
17
+ attr_accessor :date
18
+ attr_accessor :description
19
+ attr_accessor :source
20
+ attr_accessor :author
21
+ attr_accessor :id
22
+ attr_accessor :hackpads
23
+ attr_accessor :url
24
+
25
+
26
+ HACKPADURL = "hackpad.com"
27
+
28
+ def initialize(json)
29
+
30
+ type ||="NA"
31
+ status ||="UNKNOWN"
32
+ author ||="UNKNOWN"
33
+ environments ||= []
34
+
35
+ @title = json["title"]
36
+ @id = json["number"]
37
+ @description = json["description"]
38
+ @source = "Sprint.ly"
39
+ @type = json["type"]
40
+ @status = json["status"]
41
+ @author = author
42
+ @url = json["short_url"]
43
+
44
+ urls = URI.extract(@description)
45
+ urls.select! { |u| u.include?(HACKPADURL)}
46
+
47
+ @hackpads = urls
48
+ # json["deployed_to"])
49
+
50
+ # @title = title.delete("\n")
51
+ # @description = description
52
+ # @sha = sha
53
+ # @date = date
54
+ # @id = id
55
+ # @source = source
56
+ # @type = type
57
+ # @status = status
58
+ # @author = author
59
+ # @environments = environments
60
+ end
61
+
62
+ def inspect
63
+ "<#{@source} #{@type.upcase} ##{@id} : #{self.status} : #{@title}>"
64
+ end
65
+
66
+ def environments
67
+ return @environments.any? ? @environments : nil
68
+ end
69
+
70
+ def sha
71
+ return @sha
72
+ end
73
+
74
+ def id
75
+ return @id
76
+ end
77
+
78
+ def status
79
+ return @status.nil? ? "NA" : @status.upcase
80
+ end
81
+
82
+ def complete?
83
+ return %w(COMPLETED ACCEPTED).include?(self.status)
84
+ end
85
+
86
+ def built?
87
+ return self.environments.join.scan(/#(\d+)/).any? unless self.environments.nil?
88
+ end
89
+
90
+ def released?
91
+ return self.environments.join.scan(/v(\d+)/).any? unless self.environments.nil?
92
+ end
93
+ end
94
+
95
+ class Sprintly < Base
96
+
97
+ require 'typhoeus'
98
+
99
+ def initialize(product_id, sprintlyUser = ENV['SPRINTLY_USER'], sprintlyAPIKey = ENV['SPRINTLY_API_KEY'], cache=nil)
100
+ super()
101
+ Typhoeus::Config.cache = cache
102
+ @auth = "#{sprintlyUser}:#{sprintlyAPIKey}"
103
+ @product_id = product_id
104
+ @end_point = "https://sprint.ly/api/products/"
105
+
106
+ end
107
+
108
+ def sprintlyItem(id)
109
+
110
+ url = @end_point + @product_id.to_s + "/items/" + id.to_s + ".json"
111
+ response = Typhoeus::Request.get(url, userpwd: @auth)
112
+ item = SprintlyItem.new(JSON.parse(response.body))
113
+ return item
114
+
115
+ end
116
+ end
117
+ end
data/lib/overview.rb CHANGED
@@ -1,7 +1,10 @@
1
1
  require_relative 'overview/version.rb'
2
2
  require_relative 'helpers/git.rb'
3
3
  require_relative 'helpers/ci.rb'
4
- require_relative 'helpers/string.rb'
4
+ require_relative 'helpers/sprintly.rb'
5
+ require_relative 'helpers/github.rb'
6
+ require_relative 'helpers/cache.rb'
7
+
5
8
  require_relative 'appversion.rb'
6
9
  require_relative 'changelog.rb'
7
10
 
@@ -1,3 +1,3 @@
1
1
  module Overview
2
- VERSION = '0.0.5.pre.22'
2
+ VERSION = '0.0.6.pre.24'
3
3
  end
data/overview.gemspec CHANGED
@@ -27,11 +27,14 @@ spec = Gem::Specification.new do |s|
27
27
  s.add_development_dependency('codeclimate-test-reporter')
28
28
  s.add_development_dependency('gem-release')
29
29
  s.add_runtime_dependency('gli','2.13.0')
30
- s.add_runtime_dependency('octokit','3.8.0')
30
+ s.add_runtime_dependency('octokit','4.0.1')
31
31
  s.add_runtime_dependency('httparty')
32
32
  s.add_runtime_dependency('formatador')
33
33
  s.add_runtime_dependency('moneta')
34
- s.add_runtime_dependency('api_cache')
35
34
  s.add_runtime_dependency('logging')
36
35
  s.add_runtime_dependency('faraday-http-cache')
36
+ s.add_runtime_dependency('typhoeus')
37
+ s.add_runtime_dependency('api_cache')
38
+
39
+
37
40
  end
@@ -7,7 +7,7 @@ require 'appversion'
7
7
  RSpec.describe 'CI#build_no' do
8
8
  it 'returns build number' do
9
9
  build_no = ENV['TRAVIS_BUILD_NUMBER'] || ENV['CIRCLE_BUILD_NUM'] || '1'
10
- expect(CI.build_no).to eq(build_no)
10
+ expect(Helpers::CI.build_no).to eq(build_no)
11
11
  end
12
12
  end
13
13
 
data/spec/helpers_spec.rb CHANGED
@@ -2,6 +2,9 @@ require 'spec_helper'
2
2
  require 'helpers/ci'
3
3
  require 'helpers/git'
4
4
  require 'helpers/string'
5
+ require 'helpers/sprintly'
6
+ require 'helpers/cache'
7
+ require 'pp'
5
8
 
6
9
 
7
10
  include Helpers
@@ -198,6 +201,28 @@ RSpec.describe 'Git#parse_sprintly' do
198
201
  expect(ids.first).to eq(50)
199
202
  end
200
203
 
204
+ it 'Supports multiple items e.g. #50,#20' do
205
+ ids = Git.parse_sprintly('Closes #50,#20')
206
+ expect(ids.count).to eq(2)
207
+ expect(ids.first).to eq(50)
208
+ expect(ids.last).to eq(20)
209
+ end
210
+
211
+
212
+ it 'Supports multiple items e.g. #50, #20' do
213
+ ids = Git.parse_sprintly('Closes #50, #20')
214
+ expect(ids.count).to eq(2)
215
+ expect(ids.first).to eq(50)
216
+ expect(ids.last).to eq(20)
217
+ end
218
+
219
+ it 'Supports multiple items e.g. item:50, item:20' do
220
+ ids = Git.parse_sprintly('Closes item:50, item:20')
221
+ expect(ids.count).to eq(2)
222
+ expect(ids.first).to eq(50)
223
+ expect(ids.last).to eq(20)
224
+ end
225
+
201
226
  end
202
227
 
203
228
  RSpec.describe 'Git#commit_sha' do
@@ -221,14 +246,52 @@ RSpec.describe 'Git#branch' do
221
246
  end
222
247
  end
223
248
 
224
- RSpec.describe 'Git#repo' do
249
+ RSpec.describe 'Git#parse_commit_message' do
250
+
251
+ it 'returns a populated hash' do
252
+ hash = Git.parse_commit_message("Fixes #1, #2 <DEPLOY #engineering This is a test>")
253
+ expect(hash[:deploy][:match]).to eq(true)
254
+ pp hash[:sprintly]
255
+ expect(hash[:sprintly].first).to eq(1)
256
+ expect(hash[:sprintly].last).to eq(2)
225
257
 
226
- it 'returns a repo' do
227
- expect(Git.repo.length).to be > 1
228
258
  end
229
259
  end
230
260
 
231
261
 
262
+ RSpec.describe 'Sprintly#retrieveSprintlyItem' do
263
+ it 'returns hackpad item' do
264
+ cache = Cache.new
265
+ sprintly = Sprintly.new(30420,"jono+overview+test@overllc.com", "kPnNLnM8pjkYeS9sMvrQPhj6JkC4mcNL", cache)
266
+ item = sprintly.sprintlyItem(1)
267
+
268
+ expect(item.hackpads.count).to eq(1)
269
+ end
270
+ end
271
+
272
+ RSpec.describe 'Sprintly#retrieveSprintlyItem' do
273
+ it 'returns sprintly item with id' do
274
+ cache = Cache.new
275
+ sprintly = Sprintly.new(30420,"jono+overview+test@overllc.com", "kPnNLnM8pjkYeS9sMvrQPhj6JkC4mcNL", cache)
276
+ item = sprintly.sprintlyItem(1)
277
+ item = sprintly.sprintlyItem(1)
278
+
279
+ expect(item.id).to eq(1)
280
+ end
281
+ end
282
+
283
+ RSpec.describe 'Sprintly#retrieveSprintlyItem' do
284
+ it 'returns hackpad item' do
285
+ cache = Cache.new
286
+ sprintly = Sprintly.new(30420,"jono+overview+test@overllc.com", "kPnNLnM8pjkYeS9sMvrQPhj6JkC4mcNL", cache)
287
+ item = sprintly.sprintlyItem(1)
288
+
289
+ expect(item.hackpads.count).to eq(1)
290
+ end
291
+ end
292
+
293
+
294
+
232
295
 
233
296
 
234
297
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: overview
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5.pre.22
4
+ version: 0.0.6.pre.24
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Orford
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-10 00:00:00.000000000 Z
11
+ date: 2015-07-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -128,14 +128,14 @@ dependencies:
128
128
  requirements:
129
129
  - - '='
130
130
  - !ruby/object:Gem::Version
131
- version: 3.8.0
131
+ version: 4.0.1
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - '='
137
137
  - !ruby/object:Gem::Version
138
- version: 3.8.0
138
+ version: 4.0.1
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: httparty
141
141
  requirement: !ruby/object:Gem::Requirement
@@ -179,7 +179,7 @@ dependencies:
179
179
  - !ruby/object:Gem::Version
180
180
  version: '0'
181
181
  - !ruby/object:Gem::Dependency
182
- name: api_cache
182
+ name: logging
183
183
  requirement: !ruby/object:Gem::Requirement
184
184
  requirements:
185
185
  - - ! '>='
@@ -193,7 +193,7 @@ dependencies:
193
193
  - !ruby/object:Gem::Version
194
194
  version: '0'
195
195
  - !ruby/object:Gem::Dependency
196
- name: logging
196
+ name: faraday-http-cache
197
197
  requirement: !ruby/object:Gem::Requirement
198
198
  requirements:
199
199
  - - ! '>='
@@ -207,7 +207,21 @@ dependencies:
207
207
  - !ruby/object:Gem::Version
208
208
  version: '0'
209
209
  - !ruby/object:Gem::Dependency
210
- name: faraday-http-cache
210
+ name: typhoeus
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ! '>='
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ type: :runtime
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ! '>='
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
223
+ - !ruby/object:Gem::Dependency
224
+ name: api_cache
211
225
  requirement: !ruby/object:Gem::Requirement
212
226
  requirements:
213
227
  - - ! '>='
@@ -238,9 +252,11 @@ files:
238
252
  - bin/overview
239
253
  - lib/appversion.rb
240
254
  - lib/changelog.rb
255
+ - lib/helpers/cache.rb
241
256
  - lib/helpers/ci.rb
242
257
  - lib/helpers/git.rb
243
258
  - lib/helpers/github.rb
259
+ - lib/helpers/sprintly.rb
244
260
  - lib/helpers/string.rb
245
261
  - lib/overview.rb
246
262
  - lib/overview/version.rb