ensure_version_bump 0.1.0
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.
- checksums.yaml +7 -0
- data/bin/ensure_version_bump +72 -0
- data/lib/ensure_version_bump.rb +69 -0
- metadata +100 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: bca19b1f3c05c6149c6adeaaef4b74c1b83172d7
|
4
|
+
data.tar.gz: 69e8ba59000eff636f49d1643310daca64569173
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 0df9e0f8a9b758b0bef279278e02cd96b986548370ef7749f9ab1ae7adf7f7362c0d2c105850f1854a5a0f0a69227a2d5b0ced04bf634471b8d67003b1728b62
|
7
|
+
data.tar.gz: afe97b114397c74d772999c8c3488d2ebc3aa50801d40e85de8cacbcefa717ddd261a1652f7ad3d133e81ddd5ba3134ad82c5faf0d702c01130dd8e763d609bd
|
@@ -0,0 +1,72 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'colorize'
|
4
|
+
require 'forwardable'
|
5
|
+
|
6
|
+
require_relative '../lib/ensure_version_bump'
|
7
|
+
|
8
|
+
module CLI
|
9
|
+
def run(gem_name)
|
10
|
+
state = EnsureVersionBump.new(gem_name)
|
11
|
+
(state.success? ? Success.new(state) : Failure.new(state)).run
|
12
|
+
end
|
13
|
+
module_function :run
|
14
|
+
|
15
|
+
class Outcome
|
16
|
+
extend Forwardable
|
17
|
+
def_delegators :@state, :local, :remote
|
18
|
+
|
19
|
+
def initialize(state)
|
20
|
+
@state = state
|
21
|
+
end
|
22
|
+
|
23
|
+
def run
|
24
|
+
puts message
|
25
|
+
Kernel.exit(exit_code)
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def message
|
31
|
+
"#{status} Local version (#{local.version}) #{comparison} than remote " \
|
32
|
+
"(#{remote.version})."
|
33
|
+
end
|
34
|
+
end # class Outcome
|
35
|
+
private_constant :Outcome
|
36
|
+
|
37
|
+
class Success < Outcome
|
38
|
+
private
|
39
|
+
|
40
|
+
def status
|
41
|
+
'[OK]'.green
|
42
|
+
end
|
43
|
+
|
44
|
+
def comparison
|
45
|
+
'higher'
|
46
|
+
end
|
47
|
+
|
48
|
+
def exit_code
|
49
|
+
0
|
50
|
+
end
|
51
|
+
end # class Success
|
52
|
+
|
53
|
+
class Failure < Outcome
|
54
|
+
def status
|
55
|
+
'[FAIL]'.red
|
56
|
+
end
|
57
|
+
|
58
|
+
def comparison
|
59
|
+
'not higher'
|
60
|
+
end
|
61
|
+
|
62
|
+
def exit_code
|
63
|
+
1
|
64
|
+
end
|
65
|
+
end # class Failure
|
66
|
+
end # module CLI
|
67
|
+
|
68
|
+
if ARGV.count != 1
|
69
|
+
puts 'Usage: bundle exec ensure_version_bump CURRENT_GEM_NAME'
|
70
|
+
Kernel.exit(2)
|
71
|
+
end
|
72
|
+
CLI.run(ARGV[0])
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require 'forwardable'
|
2
|
+
require 'json'
|
3
|
+
require 'net/http'
|
4
|
+
|
5
|
+
class EnsureVersionBump
|
6
|
+
attr_reader :local, :remote
|
7
|
+
|
8
|
+
def initialize(gem_name)
|
9
|
+
@local = Local.new(gem_name)
|
10
|
+
@remote = Remote.new(gem_name)
|
11
|
+
end
|
12
|
+
|
13
|
+
def success?
|
14
|
+
local.version > remote.version
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def compare
|
20
|
+
local_version > remote_version
|
21
|
+
end
|
22
|
+
|
23
|
+
def local_version
|
24
|
+
Gem.loaded_specs[name].version
|
25
|
+
end
|
26
|
+
|
27
|
+
class Base
|
28
|
+
attr_reader :gem_name
|
29
|
+
|
30
|
+
def initialize(gem_name)
|
31
|
+
@gem_name = gem_name
|
32
|
+
end
|
33
|
+
end # class Base
|
34
|
+
private_constant :Base
|
35
|
+
|
36
|
+
class Local < Base
|
37
|
+
def version
|
38
|
+
Gem.loaded_specs[gem_name].version
|
39
|
+
end
|
40
|
+
end # class Local
|
41
|
+
|
42
|
+
class Remote < Base
|
43
|
+
extend Forwardable
|
44
|
+
def_delegators :url, :host, :port
|
45
|
+
|
46
|
+
def version
|
47
|
+
@version ||= begin
|
48
|
+
response_version = JSON.parse(api_response.body).fetch('version')
|
49
|
+
Gem::Version.new(response_version == 'unknown' ? 0 : response_version)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
private
|
54
|
+
|
55
|
+
def api_response
|
56
|
+
Net::HTTP.start(host, port, use_ssl: true) do |http|
|
57
|
+
http.request(Net::HTTP::Get.new(api_endpoint))
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def url
|
62
|
+
@url ||= URI.parse(api_endpoint)
|
63
|
+
end
|
64
|
+
|
65
|
+
def api_endpoint
|
66
|
+
"https://rubygems.org/api/v1/versions/#{gem_name}/latest.json"
|
67
|
+
end
|
68
|
+
end # class Remote
|
69
|
+
end # class EnsureVersionBump
|
metadata
ADDED
@@ -0,0 +1,100 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ensure_version_bump
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Marcin Wyszynski
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-05-19 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: colorize
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.8'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 0.8.1
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0.8'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.8.1
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: bundler
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '1.14'
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 1.14.6
|
43
|
+
type: :development
|
44
|
+
prerelease: false
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - "~>"
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '1.14'
|
50
|
+
- - ">="
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: 1.14.6
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: rake
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - "~>"
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '12.0'
|
60
|
+
type: :development
|
61
|
+
prerelease: false
|
62
|
+
version_requirements: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - "~>"
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '12.0'
|
67
|
+
description: CI helper for Ruby gems to ensure version bump
|
68
|
+
email:
|
69
|
+
executables:
|
70
|
+
- ensure_version_bump
|
71
|
+
extensions: []
|
72
|
+
extra_rdoc_files: []
|
73
|
+
files:
|
74
|
+
- bin/ensure_version_bump
|
75
|
+
- lib/ensure_version_bump.rb
|
76
|
+
homepage: https://github.com/marcinwyszynski/ensure_version_bump
|
77
|
+
licenses:
|
78
|
+
- MIT
|
79
|
+
metadata: {}
|
80
|
+
post_install_message:
|
81
|
+
rdoc_options: []
|
82
|
+
require_paths:
|
83
|
+
- lib
|
84
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - ">="
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0'
|
89
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
90
|
+
requirements:
|
91
|
+
- - ">="
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
requirements: []
|
95
|
+
rubyforge_project:
|
96
|
+
rubygems_version: 2.6.12
|
97
|
+
signing_key:
|
98
|
+
specification_version: 4
|
99
|
+
summary: CI helper for Ruby gems to ensure version bump
|
100
|
+
test_files: []
|