overview 0.0.4.17 → 0.0.5.pre.22

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
- NDY5ODQ1ZDI0ZDEzYWJjNzNlOGI2NTBjNmViZDgzZWM0ZmJmZWI2YQ==
4
+ ZmVmZDE3YjMxNmFiYmUzNDlmOWM4YWZhYmE5OWJhNzUyYWQyMWE3ZA==
5
5
  data.tar.gz: !binary |-
6
- YzZjY2IzZjZmNjY1OTU2ZTk0YjU4Y2QyNDY5MDFkOTA3NDNiZjdlMw==
6
+ NzI4NzYxNzMyODczMmY2MTdkMzcxY2M0Y2Q5NGM2ZGY2N2Q0ZDVhMw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- YTAxMjkxNzliYTY3ZjY2MDIzY2RiZWU5YWZmOTVhZmMwZDY3NmQ4N2YyODc5
10
- MjE0ZGIzZjU1MGM1YWI0NjUzNzRkZjMzMDc5MGUyMGVjN2ZjMjMxN2EwZTM3
11
- OWZmYjgzYWY0NjFlZDZhYWZiYjhkZDFjNDNiMjc5OTYxOGE5Yjc=
9
+ ODhjMzkwMGUxNzFkYTI3NzhmYTdhYjBiNjljYTdkYjgwNjE3MjAwOGE3Mjll
10
+ NDU3OWU0OTEyMzIzYmZkNTA5MmRlOTA5MjIxMDdiNTRjYzlmODQwNThlOGQ4
11
+ MmVhZGY1Y2NmYmQ0YTE0YzBkYmY2OWE4MTQ1MDlmNzM0ODVmNDI=
12
12
  data.tar.gz: !binary |-
13
- MWI5MDMzNmMxNDY1NzVhMDAyZjljZTAzNDNmMTdjMTAzMDZmYmUzMjhhZjJm
14
- YjE1MTQzNzA3Yzk3YWZmNTQwMzcxYmVmZTM3NDgyZTZjMjczZDBlNzAwZTI2
15
- YzMwZDYzMjViMDk5ZTg5Yjc5M2VhZDNiZDIwZWIyNGU1M2FlYzE=
13
+ ZDM0OGY4YmJmMTZkMzMzZGZkMjYyOWFjMGRjOTM2YTYxM2E1OWVhOTdmOGRk
14
+ Yzg3ZWZiNWY1MWJiYzc5ODJlNmM0Nzk4YjY1YTM4YjUzYTkxNDhjYTYxOWY3
15
+ OTI2N2JmNDZkNGI3NjkxMzM0ODYzNjdjNmJlMmIxM2RjYTE4YzY=
data/bin/overview CHANGED
@@ -92,20 +92,20 @@ command :appversion do |c|
92
92
  c.switch :b
93
93
  c.desc 'Version (no build) with branch e.g. 0.1.1-feature'
94
94
  c.switch :v
95
- c.desc 'Rubygem compatible version with build appended e.g. 0.1.1-feature-534'
95
+ c.desc 'Rubygem compatible version with build appended e.g. 0.1.1.pre-feature-534'
96
96
  c.switch :r
97
97
  c.desc 'Google App Engine compatible version with build appended e.g. 0-1-1-feature-534'
98
98
  c.switch :a
99
99
  c.action do |global_options,options,args|
100
100
  include AppVersion
101
101
  if options[:s]
102
- puts AppVersion::Version.new.version(true).to_s
102
+ puts AppVersion::Version.new.version(semantic:true).to_s
103
103
  elsif options[:b]
104
104
  puts AppVersion::Version.new.build_no.to_s
105
105
  elsif options[:v]
106
106
  puts AppVersion::Version.new.version.to_s
107
107
  elsif options[:r]
108
- puts "#{AppVersion::Version.new.version.to_s}.#{AppVersion::Version.new.build_no.to_s}"
108
+ puts "#{AppVersion::Version.new.version(rubygem:true).to_s}.#{AppVersion::Version.new.build_no.to_s}"
109
109
  elsif options[:a]
110
110
  puts "#{AppVersion::Version.new.version.to_s}".gsub('.','-')
111
111
  else
data/lib/appversion.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  module AppVersion
2
2
 
3
3
  class Release
4
+ include Helpers
5
+
4
6
  def self.is_pre_release?(tag)
5
7
  default = TRUE #default to true if running locally
6
8
  begin
@@ -36,13 +38,15 @@ module AppVersion
36
38
  end
37
39
 
38
40
  class Version
41
+ include Helpers
39
42
 
40
43
  def to_s
41
44
  "#{version} (#{build_no})"
42
45
  end
43
46
 
44
47
  #TODO: refactor so that every permutation can be tested. E.g. github release where is_pre_release=false, what is the commit count?
45
- def version(semantic = false)
48
+ #Make this a class method
49
+ def version(semantic:false, rubygem:false)
46
50
  version_suffix = CI.version_suffix
47
51
  if !Git.installed? then
48
52
  $stderr.puts 'Git required, not installed'
@@ -58,7 +62,7 @@ module AppVersion
58
62
  clean_tag = '0.0.1'
59
63
  else
60
64
  commit_count = Git.commit_count_since_tag(latest_tag)
61
- clean_tag = Git.clean_tag
65
+ clean_tag = Git.clean_tag(rubygem:rubygem)
62
66
  end
63
67
  #Only increment version after production release, so that we retain a single version during beta and RCs
64
68
  #TODO: check if this is a tagged build, and then always use the clean_tag. Not need to check pre_release or increment
data/lib/helpers/git.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  require_relative 'string.rb'
2
-
2
+ module Helpers
3
3
  class Git
4
4
  def self.remote
5
5
  begin
@@ -18,8 +18,13 @@ require_relative 'string.rb'
18
18
  def self.tag
19
19
  (`git describe --tags --match 'v*' --abbrev=0 2>/dev/null` || 'HEAD').strip
20
20
  end
21
- def self.clean_tag(tag=self.tag)
22
- tag.strip.sub('v','').split(/[\.,-]/).select { |e| e.is_number?}.first(3).join('.')
21
+ def self.clean_tag(tag=self.tag, rubygem:false)
22
+ array = tag.strip.sub('v','').split(/[\.,-]/).select { |e| e.is_number? || (rubygem && e == 'pre') }
23
+ if rubygem then
24
+ array.join('.')
25
+ else
26
+ array.first(3).join('.')
27
+ end
23
28
  end
24
29
  def self.commit_count
25
30
  `git rev-list --count HEAD`.to_i
@@ -27,14 +32,28 @@ require_relative 'string.rb'
27
32
  def self.commit_count_since_tag(tag)
28
33
  `git rev-list --count #{tag}.. 2>/dev/null`.to_i
29
34
  end
35
+ def self.commit_author
36
+ `git --no-pager show -s --format='%an' -1`
37
+ end
38
+ def self.commit_email
39
+ `git --no-pager show -s --format='%ae' -1`
40
+ end
30
41
  def self.installed?
31
42
  system 'git --version >>/dev/null 2>&1'
32
43
  end
33
44
  def self.parse_deploy(commitMessage)
34
- commands = %w(deploy DEPLOY force_deploy FORCE_DEPLOY).collect{ |x| "\\b#{x}\\b" }.join("|")
35
- re = Regexp.new(/<(#{commands}):?\s*(.*?)(?:>)/)
36
- deploy = commitMessage.scan(re).flatten.compact
37
- return !deploy[0].nil? && !deploy[0].empty?, deploy[1] || ''
45
+ deploy = {}
46
+ commands = %w(deploy DEPLOY force_deploy FORCE_DEPLOY).collect{ |command| "\\b#{command}\\b" }.join("|")
47
+ re_command_and_message = Regexp.new(/<(#{commands}):?\s*(.*?)(?:>)/)
48
+ result = commitMessage.scan(re_command_and_message).flatten.compact
49
+ deploy[:match] = !result[0].nil? && !result[0].empty?
50
+ re_channel = Regexp.new(/\s*([@#][A-z]+)\s*/)
51
+ deploy[:message] = result[1] ? result[1].gsub(re_channel, '') : ''
52
+ if result[1] && result[1].scan(re_channel) && result[1].scan(re_channel).first then
53
+ deploy[:channel] = result[1].scan(re_channel).first.first || ''
54
+ end
55
+ deploy[:author] = commit_author || ''
56
+ return deploy
38
57
  end
39
58
  def self.parse_crashlytics(commitMessage)
40
59
  return commitMessage.scan(/(c|C):(?<crashlytics>\d+)/).flatten.collect { |x| x.to_i }.uniq
@@ -46,7 +65,7 @@ require_relative 'string.rb'
46
65
  return commitMessage.downcase.scan(re).flatten.collect{ |x| x.to_i }.uniq
47
66
  end
48
67
  def self.parse_commit_message(commitMessage)
49
- h = Hash.new
68
+ h = {}
50
69
  deploy, message = self.parse_deploy(commitMessage)
51
70
  sprintly_tickets = self.parse_sprintly(commitMessage)
52
71
  crashlytics_ids = self.parse_crashlytics(commitMessage)
@@ -63,5 +82,5 @@ require_relative 'string.rb'
63
82
  `git rev-parse --short HEAD`.strip
64
83
  end
65
84
  end
66
-
85
+ end
67
86
 
@@ -1,9 +1,18 @@
1
1
  class String
2
2
  def increment_version
3
- short_version_parts = self.split('.')
4
- last_digit = short_version_parts.last.to_i + 1
3
+ array = self.split('.')
4
+ digits = 0
5
+ index_of_last_digit = 0
6
+ array.each_with_index {|x, i|
7
+ if x.is_number? then
8
+ digits += 1
9
+ index_of_last_digit = i
10
+ end
11
+ break if (digits==3 || i==array.count-1) && x.is_number?
12
+ }
13
+ array[index_of_last_digit] = (array[index_of_last_digit].to_i + 1).to_s
5
14
  $stdout.puts 'Incrementing version...'
6
- "#{short_version_parts.first(short_version_parts.length-1).join(".")}.#{last_digit}"
15
+ array.join('.')
7
16
  end
8
17
  def increment_version!
9
18
  replace increment_version
@@ -1,3 +1,3 @@
1
1
  module Overview
2
- VERSION = '0.0.4.17'
2
+ VERSION = '0.0.5.pre.22'
3
3
  end
data/overview.gemspec CHANGED
@@ -4,11 +4,13 @@ require File.join([File.dirname(__FILE__),'lib/overview','version.rb'])
4
4
  spec = Gem::Specification.new do |s|
5
5
  s.name = 'overview'
6
6
  s.version = Overview::VERSION
7
+ s.licenses = ['MIT']
8
+ s.required_ruby_version = '>= 2.0.0'
7
9
  s.author = 'Jonathan Orford'
8
10
  s.email = 'jono@overllc.com'
9
11
  s.homepage = 'http://www.overllc.com'
10
12
  s.platform = Gem::Platform::RUBY
11
- s.summary = "Over's custom CI / CD toolchain, integrating Sprint.ly, Github, Github and ITC"
13
+ s.summary = "Over's custom CI / CD toolchain, integrating Sprint.ly, Github, Travis CI and ITC"
12
14
  s.files = `git ls-files`.split("
13
15
  ")
14
16
  s.require_paths << 'lib'
data/spec/helpers_spec.rb CHANGED
@@ -1,6 +1,29 @@
1
1
  require 'spec_helper'
2
2
  require 'helpers/ci'
3
3
  require 'helpers/git'
4
+ require 'helpers/string'
5
+
6
+
7
+ include Helpers
8
+
9
+ RSpec.describe 'String#increment_version' do
10
+
11
+ it '1.2.3 returns 1.2.4' do
12
+ expect('1.2.3'.increment_version).to eq('1.2.4')
13
+ end
14
+
15
+ it '1.2.3.pre returns 1.2.4.pre' do
16
+ expect('1.2.3.pre'.increment_version).to eq('1.2.4.pre')
17
+ end
18
+
19
+ it '1.2.3.1 returns 1.2.4.1' do
20
+ expect('1.2.3.1'.increment_version).to eq('1.2.4.1')
21
+ end
22
+
23
+ it '1.2 returns 1.3' do
24
+ expect('1.2'.increment_version).to eq('1.3')
25
+ end
26
+ end
4
27
 
5
28
  RSpec.describe 'CI#build_no' do
6
29
 
@@ -11,6 +34,15 @@ RSpec.describe 'CI#build_no' do
11
34
  end
12
35
 
13
36
  RSpec.describe 'Git#clean_tag' do
37
+
38
+ it '1.2.1.1 returns ruby version' do
39
+ expect(Git.clean_tag('1.2.1.1', rubygem:true)).to eq('1.2.1.1')
40
+ end
41
+
42
+ it '1.2.1.pre returns ruby version' do
43
+ expect(Git.clean_tag('1.2.1.pre', rubygem:true)).to eq('1.2.1.pre')
44
+ end
45
+
14
46
  context '1.2.3-rc4' do
15
47
  it 'returns semantic version' do
16
48
  expect(Git.clean_tag('1.2.3-rc4')).to eq('1.2.3')
@@ -58,37 +90,43 @@ RSpec.describe 'CI#tagged_build?' do
58
90
  end
59
91
 
60
92
  RSpec.describe 'Git#parse_deploy' do
61
-
62
- it '<DEPLOY: deploy message> returns true, deploy message' do
63
- deploy, message = Git.parse_deploy('This is my change <DEPLOY: deploy message>. Ref #123. This is my second <deploy>')
64
- expect(deploy).to eq(true)
65
- expect(message).to eq('deploy message')
93
+ it '<DEPLOY: deploy message #channel> returns true, deploy message, channel' do
94
+ result = Git.parse_deploy('This is my change <DEPLOY: #channel deploy message #channel>. Ref #123. This is my second <deploy>')
95
+ expect(result[:match]).to eq(true)
96
+ expect(result[:message]).to eq('deploy message')
97
+ expect(result[:channel]).to eq('#channel')
98
+ end
99
+ it '<DEPLOY: @jono deploy message> returns true, deploy message' do
100
+ result = Git.parse_deploy('This is my change <DEPLOY: @jono deploy message>. Ref #123. This is my second <deploy>')
101
+ expect(result[:match]).to eq(true)
102
+ expect(result[:message]).to eq('deploy message')
103
+ expect(result[:channel]).to eq('@jono')
66
104
  end
67
105
  it '<deploy:deploy message> returns true, deploy message' do
68
- deploy, message = Git.parse_deploy('This is my change <deploy:deploy message>. Ref #123')
69
- expect(deploy).to eq(true)
70
- expect(message).to eq('deploy message')
106
+ result = Git.parse_deploy('This is my change <deploy:deploy message>. Ref #123')
107
+ expect(result[:match]).to eq(true)
108
+ expect(result[:message]).to eq('deploy message')
71
109
 
72
110
  end
73
- it '<deploy> returns true, message' do
74
- deploy, message = Git.parse_deploy('This is my change <deploy>. Ref #123')
75
- expect(deploy).to eq(true)
76
- expect(message).to eq('')
111
+ it '<deploy> returns true, empty message' do
112
+ result = Git.parse_deploy('This is my change <deploy>. Ref #123')
113
+ expect(result[:match]).to eq(true)
114
+ expect(result[:message]).to eq('')
77
115
  end
78
116
  it 'No brackets returns false, empty message' do
79
- deploy, message = Git.parse_deploy('This is my change. deploy. Ref #123')
80
- expect(deploy).to eq(false)
81
- expect(message).to eq('')
117
+ result = Git.parse_deploy('This is my change. deploy. Ref #123')
118
+ expect(result[:match]).to eq(false)
119
+ expect(result[:message]).to eq('')
82
120
  end
83
121
  it "Empty string returns false, empty message" do
84
- deploy, message = Git.parse_deploy('')
85
- expect(deploy).to eq(false)
86
- expect(message).to eq('')
122
+ result = Git.parse_deploy('')
123
+ expect(result[:match]).to eq(false)
124
+ expect(result[:message]).to eq('')
87
125
  end
88
- it 'Missing closing bracket returns true, deploy message' do
89
- deploy, message = Git.parse_deploy('This is my change <DEPLOY: deploy message')
90
- expect(deploy).to eq(false)
91
- expect(message).to eq('')
126
+ it 'Missing closing bracket returns false, empty message' do
127
+ result = Git.parse_deploy('This is my change <DEPLOY: deploy message')
128
+ expect(result[:match]).to eq(false)
129
+ expect(result[:message]).to eq('')
92
130
  end
93
131
 
94
132
  end
@@ -194,3 +232,4 @@ end
194
232
 
195
233
 
196
234
 
235
+
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.4.17
4
+ version: 0.0.5.pre.22
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-01 00:00:00.000000000 Z
11
+ date: 2015-06-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -251,7 +251,8 @@ files:
251
251
  - spec/helpers_spec.rb
252
252
  - spec/spec_helper.rb
253
253
  homepage: http://www.overllc.com
254
- licenses: []
254
+ licenses:
255
+ - MIT
255
256
  metadata: {}
256
257
  post_install_message:
257
258
  rdoc_options:
@@ -267,17 +268,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
267
268
  requirements:
268
269
  - - ! '>='
269
270
  - !ruby/object:Gem::Version
270
- version: '0'
271
+ version: 2.0.0
271
272
  required_rubygems_version: !ruby/object:Gem::Requirement
272
273
  requirements:
273
- - - ! '>='
274
+ - - ! '>'
274
275
  - !ruby/object:Gem::Version
275
- version: '0'
276
+ version: 1.3.1
276
277
  requirements: []
277
278
  rubyforge_project:
278
279
  rubygems_version: 2.4.5
279
280
  signing_key:
280
281
  specification_version: 4
281
- summary: Over's custom CI / CD toolchain, integrating Sprint.ly, Github, Github and
282
- ITC
282
+ summary: Over's custom CI / CD toolchain, integrating Sprint.ly, Github, Travis CI
283
+ and ITC
283
284
  test_files: []