groundskeeper-bitcore 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/groundskeeper.rb +2 -0
- data/lib/groundskeeper/commands.rb +28 -8
- data/lib/groundskeeper/repository.rb +1 -19
- data/lib/groundskeeper/rubygems.rb +17 -0
- data/lib/groundskeeper/semantic_version.rb +49 -0
- data/lib/groundskeeper/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7f39db6a62ffa5c33f67c1ecf6dc92f4cbc569ca
|
4
|
+
data.tar.gz: 60fb0063ea4a57a26f778c80487667604d1f16a8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0e3d6d56eb88e3fc073452b83bfa44e55adf8c43ee56daed504981688891a42c97cc00083c6d9faee0550fbb7a78a0cfa8786cfad32e1820a8e8486006d1c00b
|
7
|
+
data.tar.gz: bf678903fe9d73707c71d92e5c7caa65f7ccea054d35008c0fdd8ef9365a04b7c3abb05521b9a8388bec54e3cd86e914486deaaffc362eb29f48758d6300d40b
|
data/CHANGELOG.md
CHANGED
data/lib/groundskeeper.rb
CHANGED
@@ -10,6 +10,8 @@ require "groundskeeper/jira"
|
|
10
10
|
require "groundskeeper/project"
|
11
11
|
require "groundskeeper/rails_version"
|
12
12
|
require "groundskeeper/repository"
|
13
|
+
require "groundskeeper/rubygems"
|
14
|
+
require "groundskeeper/semantic_version"
|
13
15
|
require "groundskeeper/version"
|
14
16
|
require "groundskeeper/website"
|
15
17
|
|
@@ -33,14 +33,15 @@ module Groundskeeper
|
|
33
33
|
git: Git.build,
|
34
34
|
git_hub: git_hub,
|
35
35
|
jira: Jira.build(project.jira_prefix),
|
36
|
-
repository: repository,
|
37
36
|
project: project,
|
37
|
+
repository: repository,
|
38
|
+
rubygems: Rubygems,
|
38
39
|
version_file: RailsVersion.new
|
39
40
|
)
|
40
41
|
end
|
41
42
|
# rubocop:enable Metrics/MethodLength
|
42
43
|
|
43
|
-
# rubocop:disable Metrics/ParameterLists
|
44
|
+
# rubocop:disable Metrics/MethodLength,Metrics/ParameterLists
|
44
45
|
def initialize(
|
45
46
|
changelog: nil,
|
46
47
|
console:,
|
@@ -49,6 +50,7 @@ module Groundskeeper
|
|
49
50
|
jira: nil,
|
50
51
|
project: nil,
|
51
52
|
repository: nil,
|
53
|
+
rubygems: nil,
|
52
54
|
version_file:
|
53
55
|
)
|
54
56
|
@changelog = changelog
|
@@ -58,17 +60,19 @@ module Groundskeeper
|
|
58
60
|
@jira = jira
|
59
61
|
@project = project
|
60
62
|
@repository = repository
|
63
|
+
@rubygems = rubygems
|
61
64
|
@version_file = version_file
|
62
65
|
@did_checkout_branch = false
|
63
66
|
@did_push_to_remote = false
|
64
67
|
end
|
65
|
-
# rubocop:enable Metrics/ParameterLists
|
68
|
+
# rubocop:enable Metrics/MethodLength,Metrics/ParameterLists
|
66
69
|
|
67
70
|
# rubocop:disable Metrics/MethodLength
|
68
71
|
def info
|
69
72
|
return unrecognized_version unless version_file.exists?
|
70
73
|
|
71
|
-
|
74
|
+
return unless check_groundskeeper_version
|
75
|
+
|
72
76
|
announce_latest_tag
|
73
77
|
console.say(
|
74
78
|
"version in current branch: " +
|
@@ -85,6 +89,7 @@ module Groundskeeper
|
|
85
89
|
def release
|
86
90
|
return unrecognized_version unless version_file.exists?
|
87
91
|
return missing_jira_credentials unless jira.credentials?
|
92
|
+
return unless check_groundskeeper_version
|
88
93
|
|
89
94
|
summarize_recent_commits
|
90
95
|
ask_next_version
|
@@ -102,21 +107,26 @@ module Groundskeeper
|
|
102
107
|
|
103
108
|
def predeploy(options)
|
104
109
|
return unrecognized_version unless version_file.exists?
|
110
|
+
return unless check_groundskeeper_version
|
105
111
|
|
106
112
|
mina "predeploy", options
|
107
113
|
end
|
108
114
|
|
109
115
|
def deploy(options)
|
110
116
|
return unrecognized_version unless version_file.exists?
|
117
|
+
return missing_jira_credentials unless jira.credentials?
|
118
|
+
return unless check_groundskeeper_version
|
111
119
|
|
112
120
|
mina "deploy", options
|
121
|
+
console.say("waiting for deployed application to restart...", :yellow)
|
122
|
+
update_deployed_issues
|
113
123
|
end
|
114
124
|
|
115
125
|
private
|
116
126
|
|
117
127
|
# collaborators
|
118
128
|
attr_reader :changelog, :console, :git, :git_hub, :jira, :project,
|
119
|
-
:repository, :version_file
|
129
|
+
:repository, :rubygems, :version_file
|
120
130
|
# state
|
121
131
|
attr_reader :next_version, :recent_commits, :did_checkout_branch,
|
122
132
|
:did_push_to_remote
|
@@ -126,12 +136,22 @@ module Groundskeeper
|
|
126
136
|
cmd << " -s" if options[:simulate]
|
127
137
|
cmd << " -v" if options[:verbose]
|
128
138
|
run_mina cmd
|
129
|
-
console.say("waiting for deployed application to restart...", :yellow)
|
130
|
-
update_deployed_issues
|
131
139
|
end
|
132
140
|
|
133
|
-
def
|
141
|
+
def check_groundskeeper_version
|
134
142
|
console.say("Groundskeeper version #{Groundskeeper::VERSION}\n\n", :bold)
|
143
|
+
latest_version = rubygems.latest_groundskeeper_version
|
144
|
+
|
145
|
+
if SemanticVersion.new(latest_version) > SemanticVersion.new(VERSION)
|
146
|
+
console.say(
|
147
|
+
"Groundskeeper is outdated, please install #{latest_version}",
|
148
|
+
:red
|
149
|
+
)
|
150
|
+
|
151
|
+
return false
|
152
|
+
end
|
153
|
+
|
154
|
+
true
|
135
155
|
end
|
136
156
|
|
137
157
|
def announce_latest_tag
|
@@ -3,10 +3,6 @@
|
|
3
3
|
module Groundskeeper
|
4
4
|
# A Git repository.
|
5
5
|
class Repository
|
6
|
-
MAJOR = "major"
|
7
|
-
MINOR = "minor"
|
8
|
-
PATCH = "patch"
|
9
|
-
SEMANTIC_RELEASE_TYPE = { M: MAJOR, m: MINOR, p: PATCH }.freeze
|
10
6
|
# git output matching
|
11
7
|
ON_BRANCH_MASTER = "On branch master"
|
12
8
|
UP_TO_DATE = "Your branch is up-to-date with 'origin/master'"
|
@@ -52,23 +48,9 @@ module Groundskeeper
|
|
52
48
|
.reject { |c| c.match(/#{format(RELEASE_MESSAGE, "")}/) }
|
53
49
|
end
|
54
50
|
|
55
|
-
# rubocop:disable Metrics/MethodLength
|
56
51
|
def bumped_semantic_version(type)
|
57
|
-
|
58
|
-
.latest_tag_name_across_branches
|
59
|
-
.split(".")
|
60
|
-
.map(&:to_i)
|
61
|
-
|
62
|
-
case SEMANTIC_RELEASE_TYPE[type.to_sym]
|
63
|
-
when MAJOR
|
64
|
-
"#{major + 1}.0.0"
|
65
|
-
when MINOR
|
66
|
-
"#{major}.#{minor + 1}.0"
|
67
|
-
when PATCH
|
68
|
-
"#{major}.#{minor}.#{patch + 1}"
|
69
|
-
end
|
52
|
+
SemanticVersion.new(git.latest_tag_name_across_branches).bump(type)
|
70
53
|
end
|
71
|
-
# rubocop:enable Metrics/MethodLength
|
72
54
|
|
73
55
|
def name
|
74
56
|
`pwd`.split("/").last.chop
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "json"
|
4
|
+
|
5
|
+
module Groundskeeper
|
6
|
+
# Proxy for the Rubygems API.
|
7
|
+
class Rubygems
|
8
|
+
VERSION_API = "https://rubygems.org/api/v1/versions/"
|
9
|
+
|
10
|
+
def self.latest_groundskeeper_version
|
11
|
+
out = `curl #{VERSION_API}groundskeeper-bitcore/latest.json 2>/dev/null`
|
12
|
+
response = JSON.parse(out)
|
13
|
+
|
14
|
+
response["version"]
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Groundskeeper
|
4
|
+
# Encapsulates semantic version manipulation and comparison.
|
5
|
+
class SemanticVersion
|
6
|
+
MAJOR = "major"
|
7
|
+
MINOR = "minor"
|
8
|
+
PATCH = "patch"
|
9
|
+
SEMANTIC_RELEASE_TYPE = { M: MAJOR, m: MINOR, p: PATCH }.freeze
|
10
|
+
|
11
|
+
attr_reader :major, :minor, :patch
|
12
|
+
|
13
|
+
def self.build(version)
|
14
|
+
return version if version.is_a?(SemanticVersion)
|
15
|
+
|
16
|
+
new(version)
|
17
|
+
end
|
18
|
+
|
19
|
+
def initialize(version)
|
20
|
+
@major, @minor, @patch = version.split(".").map(&:to_i)
|
21
|
+
end
|
22
|
+
|
23
|
+
def bump(release_type)
|
24
|
+
case SEMANTIC_RELEASE_TYPE[release_type.to_sym]
|
25
|
+
when MAJOR
|
26
|
+
"#{major + 1}.0.0"
|
27
|
+
when MINOR
|
28
|
+
"#{major}.#{minor + 1}.0"
|
29
|
+
when PATCH
|
30
|
+
"#{major}.#{minor}.#{patch + 1}"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def >(other)
|
35
|
+
other_version = SemanticVersion.build(other)
|
36
|
+
other_major = other_version.major
|
37
|
+
|
38
|
+
return true if major > other_major
|
39
|
+
|
40
|
+
return false unless major == other_major
|
41
|
+
|
42
|
+
other_minor = other_version.minor
|
43
|
+
|
44
|
+
return true if minor > other_minor
|
45
|
+
|
46
|
+
minor == other_minor && patch > other_version.patch
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: groundskeeper-bitcore
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- BIT Core
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain:
|
11
11
|
- certs/ericcf.pem
|
12
|
-
date:
|
12
|
+
date: 2018-01-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: jira-ruby
|
@@ -151,6 +151,8 @@ files:
|
|
151
151
|
- lib/groundskeeper/project.rb
|
152
152
|
- lib/groundskeeper/rails_version.rb
|
153
153
|
- lib/groundskeeper/repository.rb
|
154
|
+
- lib/groundskeeper/rubygems.rb
|
155
|
+
- lib/groundskeeper/semantic_version.rb
|
154
156
|
- lib/groundskeeper/version.rb
|
155
157
|
- lib/groundskeeper/website.rb
|
156
158
|
- servers.yml
|