plusbump 2.0.0.beta
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/.rspec +1 -0
- data/Dockerfile +18 -0
- data/Gemfile +4 -0
- data/LICENSE +21 -0
- data/README.md +42 -0
- data/Rakefile +11 -0
- data/bin/console +14 -0
- data/bin/plusbump +49 -0
- data/bin/setup +8 -0
- data/jenkins-pipeline/Jenkinsfile +33 -0
- data/jenkins-pipeline/pipeline.groovy +29 -0
- data/lib/plusbump.rb +101 -0
- data/lib/plusbump/version.rb +3 -0
- data/plusbump.gemspec +31 -0
- metadata +145 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: ec8ef91d65437db4805a4a786e477a761163c07b1e564c02a2238ff9bf74e240
|
4
|
+
data.tar.gz: 24ec388c3fba89941f132e740217238c098e239e0447acafc897d413801b2e08
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d3f01a1020c8b8b7dc83b34bb53fd5e23e043fbcd630a55f233b1cba2102ab2508c8f2a95a0a2cbfc3e6d8e2a8e38ee8600f242a97fd7cef69051fcad54adf5f
|
7
|
+
data.tar.gz: c35ef1df7ecc41f79330f88d6cdfc00f7e5e0b8e716c19e30b4fea2147209da7300f136ce7e243458147c502cef564789097a0eba73258d4e0e8ddf818f73bb3
|
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--require spec_helper
|
data/Dockerfile
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
FROM ruby:2.5
|
2
|
+
RUN ruby --version
|
3
|
+
RUN apt-get update && \
|
4
|
+
apt-get install cmake -y
|
5
|
+
WORKDIR /tmp
|
6
|
+
RUN gem install docopt
|
7
|
+
RUN gem install rugged
|
8
|
+
|
9
|
+
RUN git clone https://github.com/Praqma/PlusBump.git -b rebirth .
|
10
|
+
RUN gem build plusbump.gemspec
|
11
|
+
RUN gem install plusbump-2.0.pre.alpha.gem
|
12
|
+
|
13
|
+
RUN mkdir -p /repo
|
14
|
+
WORKDIR /repo
|
15
|
+
VOLUME /repo
|
16
|
+
|
17
|
+
ENTRYPOINT ["plusbump"]
|
18
|
+
CMD ["--help"]
|
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2018 Praqma
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
---
|
2
|
+
maintainer: jkrag
|
3
|
+
---
|
4
|
+
# Automatic version bumping
|
5
|
+
|
6
|
+
### Initial "requirement" description
|
7
|
+
|
8
|
+
Look at all commits between <ref> and HEAD.
|
9
|
+
|
10
|
+
Look for commit-message mentions of +major or +minor (unless different patterns where specified ). +patch is implicit as the default if none of the others where specified.
|
11
|
+
|
12
|
+
If a version string was specified, bump the provided semver string correctly.
|
13
|
+
I.e. increase the highest bumped level, and reset those below to 0.
|
14
|
+
|
15
|
+
Currently, the bump leaves any part of semver after `-` intact (e.g. 1.3.14-alpha3+as34df32), but I reserve the right to change my mind on this :-D
|
16
|
+
|
17
|
+
If no version string was specified bump the version 0.0.0, i.e. return either 1.0.0, 0.1.0 or 0.0.1
|
18
|
+
|
19
|
+
### Other features
|
20
|
+
The tool already supports a few more features:
|
21
|
+
|
22
|
+
### Helping users
|
23
|
+
If you decide to require bumps on every commit (e.g. instead of assuming +patch as default), then it can be very helpful to users set up a push hook (pre-receive on Git) that rejects commits without a bump.
|
24
|
+
|
25
|
+
I have successfully done this on BitBucket using the "Jira Hooks for BitBucket" plugin (that we were using anyway), and used the following regex:
|
26
|
+
```
|
27
|
+
(^|(.|\n)*\s)\+(major|minor|patch)($|\s(.|\n)*)
|
28
|
+
```
|
29
|
+
|
30
|
+
This RegEx should also be quite usable in other plugins or handwritten hooks as it does not require multiline or other switches to be supported.
|
31
|
+
It allows the `+bump` message to appear anywhere in the commit message as long as it is not adjacent to other text. (i.e. `my+patch` and `+patching` will be rejected.
|
32
|
+
|
33
|
+
|
34
|
+
## CodeScene analysis
|
35
|
+
[ Get more details at **codescene.io**.](https://codescene.io/projects/2928/jobs/latest-successful/results)
|
36
|
+
=======
|
37
|
+
### Developer guide
|
38
|
+
|
39
|
+
#### How to test
|
40
|
+
|
41
|
+
Simply run `rake` for the simple test without output, and `rake doc` for the more verbose output. Test are located in the `spec` folder.
|
42
|
+
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "plusbump"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start(__FILE__)
|
data/bin/plusbump
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#encoding: utf-8
|
3
|
+
require 'docopt'
|
4
|
+
require 'plusbump'
|
5
|
+
|
6
|
+
doc = <<DOCOPT
|
7
|
+
Usage:
|
8
|
+
plusbump -h|--help
|
9
|
+
plusbump <ref> [options]
|
10
|
+
plusbump --latest=<tag-glob> [options]
|
11
|
+
plusbump --version
|
12
|
+
|
13
|
+
Arguments:
|
14
|
+
<ref> A git reference. If specified, PlusBump will search for bumps from HEAD back to this <ref> instead of searching for a tag.
|
15
|
+
|
16
|
+
Options:
|
17
|
+
-h --help Show this screen.
|
18
|
+
|
19
|
+
-l --latest=<tag-glob>
|
20
|
+
|
21
|
+
Specify a glob pattern to search for last matching tag instead of
|
22
|
+
providing a specific ref.
|
23
|
+
Will attempt to use everything after <tag-glob> as the version string
|
24
|
+
so be sure to provide _entire_ prefix.
|
25
|
+
E.g. use "R_" if your versions are "R_1.2.3"
|
26
|
+
|
27
|
+
--version Shows current version of PlusBump
|
28
|
+
--debug Debug flag
|
29
|
+
|
30
|
+
DOCOPT
|
31
|
+
|
32
|
+
# Note: If you are reading the above usage in the source code and not using --help,
|
33
|
+
# then ignore the double escapes in the usage examples.
|
34
|
+
# On the command line you have to write --majorpattern='\+major'
|
35
|
+
# The extra escape is to make it print that way in the usage message.
|
36
|
+
|
37
|
+
begin
|
38
|
+
# Parse Commandline Arguments
|
39
|
+
input = Docopt::docopt(doc, version: PlusBump::VERSION)
|
40
|
+
puts input if input['--debug']
|
41
|
+
rescue Docopt::Exit => e
|
42
|
+
puts e.message
|
43
|
+
exit
|
44
|
+
end
|
45
|
+
|
46
|
+
#TODO: input['--latest'].flatten[0]
|
47
|
+
puts PlusBump.bump(input['<ref>'], input['--latest'], debug: input['--debug'])
|
48
|
+
|
49
|
+
|
data/bin/setup
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
properties([parameters([booleanParam(defaultValue: false, description: '', name: 'isRelease')])])
|
2
|
+
|
3
|
+
node("dockerhost1") {
|
4
|
+
|
5
|
+
stage("checkout") {
|
6
|
+
checkout scm
|
7
|
+
}
|
8
|
+
|
9
|
+
stage("build") {
|
10
|
+
//Let's just use PAC container, it has ll the necessary tools installed
|
11
|
+
docker.image("praqma/pac").inside() {
|
12
|
+
sh 'bundler exec rake'
|
13
|
+
}
|
14
|
+
}
|
15
|
+
|
16
|
+
stage("changelog") {
|
17
|
+
pac()
|
18
|
+
}
|
19
|
+
|
20
|
+
stage("release") {
|
21
|
+
try {
|
22
|
+
if(params?.isRelease) {
|
23
|
+
echo "Building release"
|
24
|
+
} else {
|
25
|
+
echo "Not building release"
|
26
|
+
}
|
27
|
+
|
28
|
+
} finally {
|
29
|
+
echo "Done with release"
|
30
|
+
}
|
31
|
+
}
|
32
|
+
|
33
|
+
}
|
@@ -0,0 +1,29 @@
|
|
1
|
+
multibranchPipelineJob("PlusBump") {
|
2
|
+
factory {
|
3
|
+
workflowBranchProjectFactory {
|
4
|
+
scriptPath('jenkins-pipeline/Jenkinsfile')
|
5
|
+
}
|
6
|
+
}
|
7
|
+
branchSources {
|
8
|
+
git {
|
9
|
+
credentialsId("github")
|
10
|
+
remote("https://github.com/Praqma/PlusBump.git")
|
11
|
+
}
|
12
|
+
}
|
13
|
+
|
14
|
+
configure {
|
15
|
+
def traitBlock = it / 'sources' / 'data' / 'jenkins.branch.BranchSource' / 'source' / 'traits'
|
16
|
+
traitBlock << 'jenkins.plugins.git.traits.CloneOptionTrait' {
|
17
|
+
extension(class: 'hudson.plugins.git.extensions.impl.CloneOption') {
|
18
|
+
shallow(false)
|
19
|
+
noTag(false)
|
20
|
+
reference()
|
21
|
+
depth(0)
|
22
|
+
honorRefspec(false)
|
23
|
+
}
|
24
|
+
}
|
25
|
+
|
26
|
+
traitBlock << 'jenkins.plugins.git.traits.BranchDiscoveryTrait' { }
|
27
|
+
}
|
28
|
+
|
29
|
+
}
|
data/lib/plusbump.rb
ADDED
@@ -0,0 +1,101 @@
|
|
1
|
+
require "plusbump/version"
|
2
|
+
require 'semver'
|
3
|
+
require 'rugged'
|
4
|
+
|
5
|
+
module PlusBump
|
6
|
+
def self.bump(ref, latest, debug: false)
|
7
|
+
|
8
|
+
# Defaults
|
9
|
+
major = /\+major/
|
10
|
+
minor = /\+minor/
|
11
|
+
patch = /\+patch/
|
12
|
+
base = '0.0.0'
|
13
|
+
prefix = ''
|
14
|
+
|
15
|
+
# Init Repo from current directory
|
16
|
+
repository = Rugged::Repository.new(Dir.pwd)
|
17
|
+
tagcollection = Rugged::TagCollection.new(repository)
|
18
|
+
|
19
|
+
|
20
|
+
w = Rugged::Walker.new(repository)
|
21
|
+
# Initialise the walker to start at current HEAD
|
22
|
+
head = repository.lookup(repository.head.target.oid)
|
23
|
+
w.push(head)
|
24
|
+
|
25
|
+
if latest.nil?
|
26
|
+
tail = repository.rev_parse(ref)
|
27
|
+
w.hide(tail)
|
28
|
+
else
|
29
|
+
candidates = []
|
30
|
+
puts "Searching for at tag that matches the glob pattern: " + latest if debug
|
31
|
+
tagcollection.each(latest+'*') do |tag|
|
32
|
+
unless repository.merge_base(tag.target, head).nil?
|
33
|
+
puts "Found matching tag on correct branch: " + tag.name if debug
|
34
|
+
candidates << tag
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
if candidates.empty?
|
39
|
+
puts "No matching tag found for "+latest
|
40
|
+
else
|
41
|
+
candidates.sort! {|a,b| a.target.time <=> b.target.time }
|
42
|
+
latest_match = candidates.last
|
43
|
+
puts "Newest matching tag: #{latest_match.name}" if debug
|
44
|
+
puts "Newest matching tag sha: #{latest_match.target.oid}" if debug
|
45
|
+
#set target of matching commit as the tail of our walker
|
46
|
+
w.hide(latest_match.target)
|
47
|
+
#unless input['<semver_version_string>']
|
48
|
+
base = latest_match.name.sub(latest,'')
|
49
|
+
puts "latest: #{latest}" if debug
|
50
|
+
puts "match.Name: #{latest_match.name}" if debug
|
51
|
+
puts "Base: #{base}" if debug
|
52
|
+
#end
|
53
|
+
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
# Handle X.Y.Z-SPECIAL by saving SPECIAL part for later
|
58
|
+
split = base.split('-')
|
59
|
+
v_number = split[0].split('.')
|
60
|
+
special = ''
|
61
|
+
|
62
|
+
#TODO: Above could probably be re-written to use the semver gem for parsing.
|
63
|
+
|
64
|
+
major_bump = false
|
65
|
+
minor_bump = false
|
66
|
+
patch_bump = false
|
67
|
+
|
68
|
+
#walk through all commits looking for version bump requests
|
69
|
+
w.each do |commit|
|
70
|
+
puts "Commit: " + commit.oid if debug
|
71
|
+
if major =~ commit.message
|
72
|
+
puts "bumps major" if debug
|
73
|
+
major_bump = true
|
74
|
+
elsif minor =~ commit.message
|
75
|
+
puts "bump minor" if debug
|
76
|
+
minor_bump = true
|
77
|
+
else
|
78
|
+
patch_bump = true
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
result = SemVer.new(v_number[0].to_i, v_number[1].to_i, v_number[2].to_i, special)
|
83
|
+
|
84
|
+
if major_bump
|
85
|
+
result.major += 1
|
86
|
+
result.minor = 0
|
87
|
+
result.patch = 0
|
88
|
+
elsif minor_bump
|
89
|
+
result.minor += 1
|
90
|
+
result.patch = 0
|
91
|
+
elsif patch_bump
|
92
|
+
result.patch += 1
|
93
|
+
else
|
94
|
+
puts "No version increment"
|
95
|
+
end
|
96
|
+
|
97
|
+
final_res = prefix + (result.format "%M.%m.%p%s")
|
98
|
+
|
99
|
+
return final_res
|
100
|
+
end
|
101
|
+
end
|
data/plusbump.gemspec
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'plusbump/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "plusbump"
|
8
|
+
spec.version = PlusBump::VERSION
|
9
|
+
spec.authors = ["Jan Krag", "Mads Nielsen"]
|
10
|
+
spec.email = ["jak@praqma.net", "man@praqma.net"]
|
11
|
+
|
12
|
+
spec.summary = %q{PlusBump ruby gem}
|
13
|
+
spec.description = %q{Use this gem to automate the automation of version bumping in git}
|
14
|
+
spec.homepage = "https://github.com/Praqma/PlusBump"
|
15
|
+
spec.license = "MIT"
|
16
|
+
|
17
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
18
|
+
f.match(%r{^(test|spec|features)/})
|
19
|
+
end
|
20
|
+
|
21
|
+
spec.bindir = "bin"
|
22
|
+
spec.executables << 'plusbump'
|
23
|
+
spec.require_paths = ["lib"]
|
24
|
+
|
25
|
+
spec.add_development_dependency "bundler", "~> 1.14"
|
26
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
27
|
+
spec.add_development_dependency "rspec", "~> 3.7"
|
28
|
+
spec.add_runtime_dependency 'docopt', "~> 0.6.1"
|
29
|
+
spec.add_runtime_dependency 'rugged', "~> 0.26"
|
30
|
+
spec.add_runtime_dependency 'semver', "~> 1.0"
|
31
|
+
end
|
metadata
ADDED
@@ -0,0 +1,145 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: plusbump
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 2.0.0.beta
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jan Krag
|
8
|
+
- Mads Nielsen
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2018-10-05 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: bundler
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - "~>"
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '1.14'
|
21
|
+
type: :development
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - "~>"
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '1.14'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: rake
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - "~>"
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '10.0'
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - "~>"
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '10.0'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: rspec
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - "~>"
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '3.7'
|
49
|
+
type: :development
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - "~>"
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '3.7'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: docopt
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - "~>"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 0.6.1
|
63
|
+
type: :runtime
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 0.6.1
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: rugged
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - "~>"
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0.26'
|
77
|
+
type: :runtime
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - "~>"
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0.26'
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
name: semver
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - "~>"
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '1.0'
|
91
|
+
type: :runtime
|
92
|
+
prerelease: false
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - "~>"
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '1.0'
|
98
|
+
description: Use this gem to automate the automation of version bumping in git
|
99
|
+
email:
|
100
|
+
- jak@praqma.net
|
101
|
+
- man@praqma.net
|
102
|
+
executables:
|
103
|
+
- plusbump
|
104
|
+
extensions: []
|
105
|
+
extra_rdoc_files: []
|
106
|
+
files:
|
107
|
+
- ".rspec"
|
108
|
+
- Dockerfile
|
109
|
+
- Gemfile
|
110
|
+
- LICENSE
|
111
|
+
- README.md
|
112
|
+
- Rakefile
|
113
|
+
- bin/console
|
114
|
+
- bin/plusbump
|
115
|
+
- bin/setup
|
116
|
+
- jenkins-pipeline/Jenkinsfile
|
117
|
+
- jenkins-pipeline/pipeline.groovy
|
118
|
+
- lib/plusbump.rb
|
119
|
+
- lib/plusbump/version.rb
|
120
|
+
- plusbump.gemspec
|
121
|
+
homepage: https://github.com/Praqma/PlusBump
|
122
|
+
licenses:
|
123
|
+
- MIT
|
124
|
+
metadata: {}
|
125
|
+
post_install_message:
|
126
|
+
rdoc_options: []
|
127
|
+
require_paths:
|
128
|
+
- lib
|
129
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
130
|
+
requirements:
|
131
|
+
- - ">="
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '0'
|
134
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: 1.3.1
|
139
|
+
requirements: []
|
140
|
+
rubyforge_project:
|
141
|
+
rubygems_version: 2.7.7
|
142
|
+
signing_key:
|
143
|
+
specification_version: 4
|
144
|
+
summary: PlusBump ruby gem
|
145
|
+
test_files: []
|