vump 1.2.0 → 2.0.0.pre.alpha.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.
- checksums.yaml +5 -5
- data/LICENSE +21 -0
- data/README.md +47 -0
- data/VERSION +1 -1
- data/bin/vump +2 -2
- data/lib/vump/cli/cli.rb +100 -0
- data/lib/vump/cli/reporter.rb +116 -0
- data/lib/vump/git/git.rb +42 -0
- data/lib/vump/logger/logger.rb +34 -0
- data/lib/vump/meta.rb +38 -2
- data/lib/vump/modules/base_file_module.rb +39 -0
- data/lib/vump/modules/base_module.rb +28 -0
- data/lib/vump/modules/package_json.rb +24 -0
- data/lib/vump/modules/package_lock_json.rb +9 -0
- data/lib/vump/modules/sheep_a_changelog.rb +29 -0
- data/lib/vump/modules/version_file.rb +21 -0
- data/lib/vump/semver/semver.rb +18 -6
- data/lib/vump/vump.rb +96 -0
- data/vump.gemspec +17 -13
- metadata +118 -19
- data/README.adoc +0 -87
- data/lib/cli.rb +0 -74
- data/lib/vump.rb +0 -69
- data/lib/vump/semver/monkey/keepachangelog.rb +0 -23
- data/lib/vump/semver/version_modules/file_modules/keepachangelog.rb +0 -50
- data/lib/vump/semver/version_modules/file_modules/npm.rb +0 -29
- data/lib/vump/semver/version_modules/file_modules/npm_lock.rb +0 -15
- data/lib/vump/semver/version_modules/file_modules/version_file.rb +0 -26
- data/lib/vump/semver/version_modules/read_write_version_module.rb +0 -45
- data/lib/vump/semver/version_modules/vcs_modules/git.rb +0 -19
- data/lib/vump/version.rb +0 -4
@@ -0,0 +1,28 @@
|
|
1
|
+
module Vump
|
2
|
+
class BaseModule
|
3
|
+
def initialize(base_path, options = {})
|
4
|
+
@base_path = base_path
|
5
|
+
@options = options
|
6
|
+
end
|
7
|
+
|
8
|
+
def relevant?
|
9
|
+
false
|
10
|
+
end
|
11
|
+
|
12
|
+
def to_stage
|
13
|
+
raise NotImplementedError, "Missing to_stage on #{name}"
|
14
|
+
end
|
15
|
+
|
16
|
+
def read
|
17
|
+
raise NotImplementedError, "Missing read on #{name}"
|
18
|
+
end
|
19
|
+
|
20
|
+
def name
|
21
|
+
self.class.name
|
22
|
+
end
|
23
|
+
|
24
|
+
def write(_version)
|
25
|
+
raise NotImplementedError, "Missing write on #{name}"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'vump/modules/base_file_module'
|
2
|
+
|
3
|
+
module Vump
|
4
|
+
class PackageJson < BaseFileModule
|
5
|
+
def filename
|
6
|
+
'package.json'
|
7
|
+
end
|
8
|
+
|
9
|
+
def name
|
10
|
+
filename
|
11
|
+
end
|
12
|
+
|
13
|
+
def select(contents)
|
14
|
+
@parsed = JSON.parse(contents)
|
15
|
+
@parsed['version']
|
16
|
+
end
|
17
|
+
|
18
|
+
def compose(_contents, version)
|
19
|
+
json = @parsed.clone
|
20
|
+
json['version'] = version
|
21
|
+
JSON.pretty_generate(json) + "\n"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'vump/modules/base_file_module'
|
2
|
+
require 'sheep-a-changelog'
|
3
|
+
|
4
|
+
module Vump
|
5
|
+
class SheepAChangelog < BaseFileModule
|
6
|
+
def filename
|
7
|
+
'CHANGELOG.md'
|
8
|
+
end
|
9
|
+
|
10
|
+
def name
|
11
|
+
'Changelog'
|
12
|
+
end
|
13
|
+
|
14
|
+
def select(contents)
|
15
|
+
doc = ::SheepAChangelog.parse(contents)
|
16
|
+
doc.latest_version(1)
|
17
|
+
end
|
18
|
+
|
19
|
+
def compose(contents, version)
|
20
|
+
doc = ::SheepAChangelog.parse(contents)
|
21
|
+
doc.release(
|
22
|
+
version,
|
23
|
+
@options[:tag_prefix] || 'v',
|
24
|
+
@options[:date] || Time.now
|
25
|
+
)
|
26
|
+
doc.to_s
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'vump/modules/base_file_module'
|
2
|
+
|
3
|
+
module Vump
|
4
|
+
class VersionFile < BaseFileModule
|
5
|
+
def filename
|
6
|
+
'VERSION'
|
7
|
+
end
|
8
|
+
|
9
|
+
def name
|
10
|
+
filename
|
11
|
+
end
|
12
|
+
|
13
|
+
def select(contents)
|
14
|
+
contents.strip
|
15
|
+
end
|
16
|
+
|
17
|
+
def compose(_contents, version)
|
18
|
+
"#{version}\n"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/vump/semver/semver.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
module Vump
|
2
|
-
# Representation of version notation according to https://semver.org/
|
3
2
|
class Semver
|
3
|
+
attr_accessor :major, :patch, :minor, :pre, :build
|
4
|
+
|
4
5
|
def initialize(string = nil)
|
5
6
|
@pre = @build = false
|
6
7
|
@major = @minor = @patch = 0
|
@@ -10,15 +11,15 @@ module Vump
|
|
10
11
|
def load(string)
|
11
12
|
# <numeral>[-<sufix>]
|
12
13
|
version, sufix = string
|
13
|
-
|
14
|
-
|
14
|
+
.match(/([\d\.]+)(?:\-)?(.*)?/)
|
15
|
+
.captures
|
15
16
|
# <sufix>:= [<pre>][+<build>]
|
16
17
|
@pre, @build = sufix.split('+', 2).map { |s| s.empty? ? false : s }
|
17
18
|
# <numeral>:= <major>.<minor>.<patch>
|
18
19
|
@major, @minor, @patch = version
|
19
|
-
|
20
|
-
|
21
|
-
|
20
|
+
.match(/(\d+)\.(\d+)\.(\d+)/)
|
21
|
+
.captures
|
22
|
+
.map(&:to_i)
|
22
23
|
end
|
23
24
|
|
24
25
|
def reset(what)
|
@@ -45,6 +46,17 @@ module Vump
|
|
45
46
|
@major += 1
|
46
47
|
end
|
47
48
|
|
49
|
+
def bump(what)
|
50
|
+
case what
|
51
|
+
when :patch
|
52
|
+
bump_patch
|
53
|
+
when :minor
|
54
|
+
bump_minor
|
55
|
+
when :major
|
56
|
+
bump_major
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
48
60
|
def to_s
|
49
61
|
str = "#{@major}.#{@minor}.#{@patch}"
|
50
62
|
str << "-#{@pre}" if @pre
|
data/lib/vump/vump.rb
ADDED
@@ -0,0 +1,96 @@
|
|
1
|
+
require 'vump/cli/reporter'
|
2
|
+
require 'vump/logger/logger'
|
3
|
+
require 'vump/modules/sheep_a_changelog'
|
4
|
+
require 'vump/modules/version_file'
|
5
|
+
require 'vump/modules/package_json'
|
6
|
+
require 'vump/modules/package_lock_json'
|
7
|
+
require 'vump/git/git'
|
8
|
+
require 'vump/semver/semver'
|
9
|
+
|
10
|
+
module Vump
|
11
|
+
class Vump
|
12
|
+
attr_reader :logger
|
13
|
+
|
14
|
+
def initialize(base_path, arg, options)
|
15
|
+
@base_path = base_path
|
16
|
+
@arg = arg
|
17
|
+
@options = options
|
18
|
+
@logger = ::Vump::Logger.new(@options)
|
19
|
+
@reporter = Reporter.new(@options)
|
20
|
+
@reporter.report_preamble(@base_path, @arg, @options)
|
21
|
+
@options[:logger] = @logger
|
22
|
+
@git = Git.new(@base_path, @options)
|
23
|
+
end
|
24
|
+
|
25
|
+
def all_modules
|
26
|
+
[
|
27
|
+
::Vump::VersionFile,
|
28
|
+
::Vump::SheepAChangelog,
|
29
|
+
::Vump::PackageJson,
|
30
|
+
::Vump::PackageLockJson,
|
31
|
+
]
|
32
|
+
end
|
33
|
+
|
34
|
+
def load_modules
|
35
|
+
version_modules = all_modules.map { |m| m.new(@base_path, @options) }
|
36
|
+
relevant_modules = version_modules.select(&:relevant?)
|
37
|
+
@reporter.add_loaded_modules(version_modules)
|
38
|
+
@reporter.add_relevant_modules(relevant_modules)
|
39
|
+
relevant_modules
|
40
|
+
end
|
41
|
+
|
42
|
+
def read_versions(modules)
|
43
|
+
modules.map do |mod|
|
44
|
+
version = mod.read
|
45
|
+
@reporter.add_read_version(mod, version)
|
46
|
+
version
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def select_version(versions)
|
51
|
+
@reporter.report_module_overview
|
52
|
+
if versions.uniq.length > 1
|
53
|
+
@logger.warn("Inconsitent version records: #{versions}")
|
54
|
+
return false
|
55
|
+
end
|
56
|
+
@logger.info(
|
57
|
+
"Single version extracted from all modules: #{versions.first}"
|
58
|
+
)
|
59
|
+
versions.first
|
60
|
+
end
|
61
|
+
|
62
|
+
def write_versions(modules, version)
|
63
|
+
modules.map do |mod|
|
64
|
+
mod.write(version)
|
65
|
+
@logger.debug("Writing new version \"#{version}\"", mod.class)
|
66
|
+
end
|
67
|
+
@logger.info("All relevant modules written \"#{version}\"")
|
68
|
+
|
69
|
+
if @git.loaded?
|
70
|
+
commit(modules, version) unless @options[:no_git]
|
71
|
+
else
|
72
|
+
@logger.info('Not in a git repository, no stage or commit.')
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def commit(modules, version)
|
77
|
+
files_to_stage = modules.map(&:to_stage).flatten
|
78
|
+
@git.stage(files_to_stage)
|
79
|
+
@git.tag(version) if @git.commit(version)
|
80
|
+
end
|
81
|
+
|
82
|
+
def bump(arg = false, pre = false, build = false)
|
83
|
+
modules = load_modules
|
84
|
+
version = select_version(read_versions(modules))
|
85
|
+
semver = Semver.new(version)
|
86
|
+
semver.bump(arg) if arg
|
87
|
+
semver.pre = pre if pre
|
88
|
+
semver.build = build if build
|
89
|
+
write_versions(modules, semver.to_s)
|
90
|
+
end
|
91
|
+
|
92
|
+
def help
|
93
|
+
@reporter.help
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
data/vump.gemspec
CHANGED
@@ -1,18 +1,16 @@
|
|
1
|
-
|
2
|
-
require
|
1
|
+
$LOAD_PATH.unshift File.expand_path('lib', __dir__)
|
2
|
+
require 'vump/meta'
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
|
-
s.name
|
6
|
-
s.version
|
7
|
-
s.homepage
|
8
|
-
s.license
|
9
|
-
s.author
|
10
|
-
s.email
|
5
|
+
s.name = Vump::Meta.name
|
6
|
+
s.version = Vump::Meta.version
|
7
|
+
s.homepage = Vump::Meta.homepage
|
8
|
+
s.license = Vump::Meta.license
|
9
|
+
s.author = Vump::Meta.author
|
10
|
+
s.email = Vump::Meta.email
|
11
11
|
|
12
|
-
s.summary
|
13
|
-
s.description =
|
14
|
-
Semantic version bumper. CLI tool to easily manage projects using semver and automate menial version raising.
|
15
|
-
DESCRIPTION
|
12
|
+
s.summary = Vump::Meta.summary
|
13
|
+
s.description = Vump::Meta.description
|
16
14
|
|
17
15
|
s.files = Dir['bin/*',
|
18
16
|
'lib/**/*',
|
@@ -21,13 +19,19 @@ DESCRIPTION
|
|
21
19
|
'README*',
|
22
20
|
'VERSION']
|
23
21
|
s.executables = Dir['bin/*'].map { |f| File.basename(f) }
|
24
|
-
s.has_rdoc = 'yard'
|
25
22
|
|
26
23
|
s.required_ruby_version = '>= 2.2'
|
27
24
|
|
25
|
+
s.add_runtime_dependency 'command_line_reporter', '~> 4.0.0'
|
26
|
+
s.add_runtime_dependency 'git', '~> 1.5'
|
28
27
|
s.add_runtime_dependency 'keepachangelog', '~> 0.5.3'
|
28
|
+
s.add_runtime_dependency 'sheep-a-changelog', '~> 0.3.0'
|
29
29
|
|
30
|
+
s.add_development_dependency 'coveralls', '~> 0.8'
|
30
31
|
s.add_development_dependency 'rake', '~> 12.0'
|
31
32
|
s.add_development_dependency 'rspec', '~> 3.6'
|
33
|
+
s.add_development_dependency 'rspec-cheki', '~> 0.1'
|
34
|
+
s.add_development_dependency 'rubocop', '~> 0.64.0'
|
35
|
+
s.add_development_dependency 'simplecov', '~> 0.12'
|
32
36
|
s.add_development_dependency 'yard', '~> 0.9'
|
33
37
|
end
|
metadata
CHANGED
@@ -1,15 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vump
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0.pre.alpha.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jaroslav Šmolík
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-02-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: command_line_reporter
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 4.0.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 4.0.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: git
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.5'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.5'
|
13
41
|
- !ruby/object:Gem::Dependency
|
14
42
|
name: keepachangelog
|
15
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -24,6 +52,34 @@ dependencies:
|
|
24
52
|
- - "~>"
|
25
53
|
- !ruby/object:Gem::Version
|
26
54
|
version: 0.5.3
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: sheep-a-changelog
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.3.0
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.3.0
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: coveralls
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0.8'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0.8'
|
27
83
|
- !ruby/object:Gem::Dependency
|
28
84
|
name: rake
|
29
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,6 +108,48 @@ dependencies:
|
|
52
108
|
- - "~>"
|
53
109
|
- !ruby/object:Gem::Version
|
54
110
|
version: '3.6'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rspec-cheki
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0.1'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0.1'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: rubocop
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: 0.64.0
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: 0.64.0
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: simplecov
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0.12'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0.12'
|
55
153
|
- !ruby/object:Gem::Dependency
|
56
154
|
name: yard
|
57
155
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,29 +164,31 @@ dependencies:
|
|
66
164
|
- - "~>"
|
67
165
|
- !ruby/object:Gem::Version
|
68
166
|
version: '0.9'
|
69
|
-
description:
|
70
|
-
|
167
|
+
description: Semantic version bumper. CLI tool to easily manage projects using semver
|
168
|
+
and automate menial version raising.
|
71
169
|
email: grissius@gmail.com
|
72
170
|
executables:
|
73
171
|
- vump
|
74
172
|
extensions: []
|
75
173
|
extra_rdoc_files: []
|
76
174
|
files:
|
77
|
-
-
|
175
|
+
- LICENSE
|
176
|
+
- README.md
|
78
177
|
- VERSION
|
79
178
|
- bin/vump
|
80
|
-
- lib/cli.rb
|
81
|
-
- lib/vump.rb
|
179
|
+
- lib/vump/cli/cli.rb
|
180
|
+
- lib/vump/cli/reporter.rb
|
181
|
+
- lib/vump/git/git.rb
|
182
|
+
- lib/vump/logger/logger.rb
|
82
183
|
- lib/vump/meta.rb
|
83
|
-
- lib/vump/
|
184
|
+
- lib/vump/modules/base_file_module.rb
|
185
|
+
- lib/vump/modules/base_module.rb
|
186
|
+
- lib/vump/modules/package_json.rb
|
187
|
+
- lib/vump/modules/package_lock_json.rb
|
188
|
+
- lib/vump/modules/sheep_a_changelog.rb
|
189
|
+
- lib/vump/modules/version_file.rb
|
84
190
|
- lib/vump/semver/semver.rb
|
85
|
-
- lib/vump/
|
86
|
-
- lib/vump/semver/version_modules/file_modules/npm.rb
|
87
|
-
- lib/vump/semver/version_modules/file_modules/npm_lock.rb
|
88
|
-
- lib/vump/semver/version_modules/file_modules/version_file.rb
|
89
|
-
- lib/vump/semver/version_modules/read_write_version_module.rb
|
90
|
-
- lib/vump/semver/version_modules/vcs_modules/git.rb
|
91
|
-
- lib/vump/version.rb
|
191
|
+
- lib/vump/vump.rb
|
92
192
|
- vump.gemspec
|
93
193
|
homepage: https://github.com/grissius/vump
|
94
194
|
licenses:
|
@@ -105,12 +205,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
105
205
|
version: '2.2'
|
106
206
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
107
207
|
requirements:
|
108
|
-
- - "
|
208
|
+
- - ">"
|
109
209
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
210
|
+
version: 1.3.1
|
111
211
|
requirements: []
|
112
|
-
|
113
|
-
rubygems_version: 2.5.2.1
|
212
|
+
rubygems_version: 3.0.2
|
114
213
|
signing_key:
|
115
214
|
specification_version: 4
|
116
215
|
summary: Raise version version in root of semver project.
|