milestoner 3.0.0 → 4.0.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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +5 -2
- data/README.md +51 -40
- data/bin/milestoner +1 -0
- data/lib/milestoner.rb +0 -3
- data/lib/milestoner/cli.rb +32 -38
- data/lib/milestoner/identity.rb +1 -1
- data/lib/milestoner/tagger.rb +17 -7
- data/lib/tasks/rspec.rake +2 -0
- data/lib/tasks/rubocop.rake +2 -0
- metadata +81 -183
- metadata.gz.sig +0 -0
- data/lib/milestoner/configuration.rb +0 -46
- data/lib/milestoner/errors/configuration.rb +0 -9
- data/lib/milestoner/errors/version.rb +0 -9
- data/lib/tasks/console.rake +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d59ec9f24097f54832599544a5de919b79c5820f
|
4
|
+
data.tar.gz: da3aed2ba4636234804e21a9af13a1133d3e17bd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4c66221673d33f7b09c96b57736bc62b44df5746bb493ec1c7db2a63e441f4b3ceb8db001a53479621963e2138543c19dbd6fbd68f4e4d68ed63c8b7e0ec8bca
|
7
|
+
data.tar.gz: d1b34c04978f023e475c94a948def99ae4177723dd2387de0fc5c8cb1d24fde235b42290818c98c0a026c9f42738757806549515b2b258d853604dd1400ff579
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
@@ -1,2 +1,5 @@
|
|
1
|
-
|
2
|
-
�
|
1
|
+
G�7�
|
2
|
+
`<xC$<��(w~��zF$d��܄t���g'�^0*��^]� Z�?CK!�U�Ă�g��>,� �ʫv�,��I��c�|�- x�P>���=Y:
|
3
|
+
��9�n��A�s��.Q%jiP^�ė�q�~���9b8(ߘ���t;����
|
4
|
+
k�=���Bx����h�%��_�kfEVT�b'���U 2�N.'�
|
5
|
+
p�єH�(({K E�e�J$^��dR�m
|
data/README.md
CHANGED
@@ -33,12 +33,14 @@ A command line interface for releasing Git repository milestones.
|
|
33
33
|
|
34
34
|
# Features
|
35
35
|
|
36
|
-
- Uses [Versionaire](https://github.com/bkuhlmann/versionaire) for
|
36
|
+
- Uses [Versionaire](https://github.com/bkuhlmann/versionaire) for
|
37
|
+
[Semantic Versioning](http://semver.org).
|
37
38
|
- Format: `v<major>.<minor>.<maintenance>`.
|
38
39
|
- Example: `v0.1.0`.
|
39
|
-
- Ensures Git commits since last tag (or initialization of repository) are included within each Git
|
40
|
-
|
41
|
-
|
40
|
+
- Ensures Git commits since last tag (or initialization of repository) are included within each Git
|
41
|
+
tag message.
|
42
|
+
- Ensures Git commit messages are grouped by prefix, in order defined, for each Git tag message.
|
43
|
+
Defaults (can be customized):
|
42
44
|
- Fixed
|
43
45
|
- Added
|
44
46
|
- Updated
|
@@ -47,12 +49,13 @@ A command line interface for releasing Git repository milestones.
|
|
47
49
|
- Ensures Git commit merge messages are excluded within each Git tag message.
|
48
50
|
- Ensures Git commit messages are alphabetically sorted within each Git tag message.
|
49
51
|
- Ensures duplicate Git commit messages are removed (if any) within each Git tag message.
|
50
|
-
- Ensures Git commit messages are sanitized by removing extra spaces and `[ci skip]` text within
|
52
|
+
- Ensures Git commit messages are sanitized by removing extra spaces and `[ci skip]` text within
|
53
|
+
each Git tag message.
|
51
54
|
- Provides optional security for signing Git tags with [GnuPG](https://www.gnupg.org) signing key.
|
52
55
|
|
53
56
|
# Screencasts
|
54
57
|
|
55
|
-
[](https://asciinema.org/a/91752)
|
56
59
|
|
57
60
|
# Requirements
|
58
61
|
|
@@ -67,8 +70,9 @@ For a secure install, type the following (recommended):
|
|
67
70
|
gem cert --add <(curl --location --silent https://www.alchemists.io/gem-public.pem)
|
68
71
|
gem install milestoner --trust-policy MediumSecurity
|
69
72
|
|
70
|
-
NOTE: A HighSecurity trust policy would be best but MediumSecurity enables signed gem verification
|
71
|
-
allowing the installation of unsigned dependencies since they are beyond the scope of this
|
73
|
+
NOTE: A HighSecurity trust policy would be best but MediumSecurity enables signed gem verification
|
74
|
+
while allowing the installation of unsigned dependencies since they are beyond the scope of this
|
75
|
+
gem.
|
72
76
|
|
73
77
|
For an insecure install, type the following (not recommended):
|
74
78
|
|
@@ -81,16 +85,17 @@ For an insecure install, type the following (not recommended):
|
|
81
85
|
From the command line, type: `milestoner help`
|
82
86
|
|
83
87
|
milestoner -C, [--commits] # Show commits for next milestone.
|
84
|
-
milestoner -P, [--publish=
|
85
|
-
milestoner -c, [--config] #
|
86
|
-
milestoner -h, [--help=
|
88
|
+
milestoner -P, [--publish=VERSION] # Tag and push milestone to remote repository.
|
89
|
+
milestoner -c, [--config] # Manage gem configuration.
|
90
|
+
milestoner -h, [--help=COMMAND] # Show this message or get help for a command.
|
87
91
|
milestoner -p, [--push] # Push local tag to remote repository.
|
88
|
-
milestoner -t, [--tag=
|
92
|
+
milestoner -t, [--tag=VERSION] # Tag local repository with new version.
|
89
93
|
milestoner -v, [--version] # Show gem version.
|
90
94
|
|
91
95
|
For config options, type: `milestoner help --config`
|
92
96
|
|
93
97
|
-e, [--edit], [--no-edit] # Edit gem configuration.
|
98
|
+
-i, [--info], [--no-info] # Print gem configuration info.
|
94
99
|
|
95
100
|
For tag options, type: `milestoner help --tag`
|
96
101
|
|
@@ -100,14 +105,14 @@ For publish options, type: `milestoner help --publish`
|
|
100
105
|
|
101
106
|
-s, [--sign], [--no-sign] # Sign tag with GPG key.
|
102
107
|
|
103
|
-
When using Milestoner, the `--publish` command is intended to be the only command necessary for
|
104
|
-
as it handles all of the steps necessary for tagging and pushing a new
|
105
|
-
then the `--tag` and `--push` options are available.
|
108
|
+
When using Milestoner, the `--publish` command is intended to be the only command necessary for
|
109
|
+
publishing a new release as it handles all of the steps necessary for tagging and pushing a new
|
110
|
+
milestone. Should individual steps be needed, then the `--tag` and `--push` options are available.
|
106
111
|
|
107
112
|
## Customization
|
108
113
|
|
109
|
-
Should the default settings not be desired, customization is allowed via the `.milestonerrc` file.
|
110
|
-
can be created at a global and/or local level. Example:
|
114
|
+
Should the default settings not be desired, customization is allowed via the `.milestonerrc` file.
|
115
|
+
The `.milestonerrc` can be created at a global and/or local level. Example:
|
111
116
|
|
112
117
|
- Global: `~/.milestonerrc`
|
113
118
|
- Local: `<project repository root>/.milestonerrc`
|
@@ -118,10 +123,11 @@ Order of precedence for any setting is resolved as follows (with the last taking
|
|
118
123
|
0. Local project repository `.milestonerrc`.
|
119
124
|
0. CLI option. Example: A version passed to either the `--tag` or `--publish` commands.
|
120
125
|
|
121
|
-
Any setting provided to the CLI during runtime would trump a local/global setting and a local
|
122
|
-
global setting. The global setting is the weakest of all but great for
|
123
|
-
applied to *all* projects. It is important to note that
|
124
|
-
|
126
|
+
Any setting provided to the CLI during runtime would trump a local/global setting and a local
|
127
|
+
setting would trump a global setting. The global setting is the weakest of all but great for
|
128
|
+
situations where custom settings should be applied to *all* projects. It is important to note that
|
129
|
+
local settings completely trump any global settings -- there is no inheritance when local *and*
|
130
|
+
global settings exist at the same time.
|
125
131
|
|
126
132
|
The `.milestonerrc` uses the following default settings:
|
127
133
|
|
@@ -136,16 +142,19 @@ The `.milestonerrc` uses the following default settings:
|
|
136
142
|
|
137
143
|
Each `.milestonerrc` setting can be configured as follows:
|
138
144
|
|
139
|
-
- `version`: Useful if desired to have the current version checked into source code per project. The
|
140
|
-
will be used to tag the repository. If the version is a duplicate, an error will
|
141
|
-
it *must* be semantic: `<major>.<minor>.<maintenance>`.
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
145
|
+
- `version`: Useful if desired to have the current version checked into source code per project. The
|
146
|
+
version, if set, will be used to tag the repository. If the version is a duplicate, an error will
|
147
|
+
be thrown. When supplying a version, it *must* be semantic: `<major>.<minor>.<maintenance>`.
|
148
|
+
Example: `0.1.0`.
|
149
|
+
- `git_commit_prefixes`: Should the default prefixes not be desired, you can define Git commit
|
150
|
+
prefixes that match your style. *NOTE: Prefix order is important with the first prefix defined
|
151
|
+
taking precedence over the second and so forth.* Special characters are allowed for prefixes but
|
152
|
+
should be enclosed in quotes if used. To disable prefix usage completely, use an empty array.
|
153
|
+
Example: `:git_commit_prefixes: []`.
|
154
|
+
- `git_tag_sign`: Defaults to `false` but can be enabled by setting to `true`. When enabled, a Git
|
155
|
+
tag will require GPG signing for enhanced security and include a signed signature as part of the
|
156
|
+
Git tag. This is useful for public milestones where the author of a milestone can be verified to
|
157
|
+
ensure milestone integrity/security.
|
149
158
|
|
150
159
|
# Security
|
151
160
|
|
@@ -172,8 +181,9 @@ Add your key to your global Git configuration in the `[user]` section. Example:
|
|
172
181
|
[user]
|
173
182
|
signingkey = <your GPG key>
|
174
183
|
|
175
|
-
Now, when publishing a new milestone (i.e. `milestoner --publish <version> --sign`), signing of your
|
176
|
-
automatically. You will be prompted for the GPG Passphrase each time but that is
|
184
|
+
Now, when publishing a new milestone (i.e. `milestoner --publish <version> --sign`), signing of your
|
185
|
+
Git tag will happen automatically. You will be prompted for the GPG Passphrase each time but that is
|
186
|
+
to be expected.
|
177
187
|
|
178
188
|
# Tests
|
179
189
|
|
@@ -185,14 +195,14 @@ To test, run:
|
|
185
195
|
|
186
196
|
Read [Semantic Versioning](http://semver.org) for details. Briefly, it means:
|
187
197
|
|
188
|
-
- Patch (x.y.Z) - Incremented for small, backwards compatible bug fixes.
|
189
|
-
- Minor (x.Y.z) - Incremented for new, backwards compatible public API enhancements
|
198
|
+
- Patch (x.y.Z) - Incremented for small, backwards compatible, bug fixes.
|
199
|
+
- Minor (x.Y.z) - Incremented for new, backwards compatible, public API enhancements/fixes.
|
190
200
|
- Major (X.y.z) - Incremented for any backwards incompatible public API changes.
|
191
201
|
|
192
202
|
# Code of Conduct
|
193
203
|
|
194
|
-
Please note that this project is released with a [CODE OF CONDUCT](CODE_OF_CONDUCT.md). By
|
195
|
-
you agree to abide by its terms.
|
204
|
+
Please note that this project is released with a [CODE OF CONDUCT](CODE_OF_CONDUCT.md). By
|
205
|
+
participating in this project you agree to abide by its terms.
|
196
206
|
|
197
207
|
# Contributions
|
198
208
|
|
@@ -201,13 +211,14 @@ Read [CONTRIBUTING](CONTRIBUTING.md) for details.
|
|
201
211
|
# License
|
202
212
|
|
203
213
|
Copyright (c) 2015 [Alchemists](https://www.alchemists.io).
|
204
|
-
Read
|
214
|
+
Read [LICENSE](LICENSE.md) for details.
|
205
215
|
|
206
216
|
# History
|
207
217
|
|
208
|
-
Read
|
218
|
+
Read [CHANGES](CHANGES.md) for details.
|
209
219
|
Built with [Gemsmith](https://github.com/bkuhlmann/gemsmith).
|
210
220
|
|
211
221
|
# Credits
|
212
222
|
|
213
|
-
Developed by [Brooke Kuhlmann](https://www.alchemists.io) at
|
223
|
+
Developed by [Brooke Kuhlmann](https://www.alchemists.io) at
|
224
|
+
[Alchemists](https://www.alchemists.io).
|
data/bin/milestoner
CHANGED
data/lib/milestoner.rb
CHANGED
@@ -1,11 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "milestoner/errors/base"
|
4
|
-
require "milestoner/errors/configuration"
|
5
4
|
require "milestoner/errors/duplicate_tag"
|
6
5
|
require "milestoner/errors/git"
|
7
|
-
require "milestoner/errors/version"
|
8
|
-
require "milestoner/configuration"
|
9
6
|
require "milestoner/git"
|
10
7
|
require "milestoner/identity"
|
11
8
|
require "milestoner/publisher"
|
data/lib/milestoner/cli.rb
CHANGED
@@ -4,6 +4,7 @@ require "yaml"
|
|
4
4
|
require "thor"
|
5
5
|
require "thor/actions"
|
6
6
|
require "thor_plus/actions"
|
7
|
+
require "runcom"
|
7
8
|
|
8
9
|
module Milestoner
|
9
10
|
# The Command Line Interface (CLI) for the gem.
|
@@ -13,27 +14,36 @@ module Milestoner
|
|
13
14
|
|
14
15
|
package_name Identity.version_label
|
15
16
|
|
17
|
+
def self.defaults
|
18
|
+
{
|
19
|
+
version: "0.1.0",
|
20
|
+
git_commit_prefixes: %w[Fixed Added Updated Removed Refactored],
|
21
|
+
git_tag_sign: false
|
22
|
+
}
|
23
|
+
end
|
24
|
+
|
25
|
+
# rubocop:disable Metrics/AbcSize
|
16
26
|
def initialize args = [], options = {}, config = {}
|
17
27
|
super args, options, config
|
18
|
-
@configuration = Configuration.new Identity.file_name, defaults: defaults
|
19
|
-
@tagger = Tagger.new configuration.
|
20
|
-
commit_prefixes: configuration.
|
28
|
+
@configuration = Runcom::Configuration.new file_name: Identity.file_name, defaults: self.class.defaults
|
29
|
+
@tagger = Tagger.new configuration.to_h[:version],
|
30
|
+
commit_prefixes: configuration.to_h[:git_commit_prefixes]
|
21
31
|
@pusher = Pusher.new
|
22
32
|
@publisher = Publisher.new tagger: tagger, pusher: pusher
|
23
33
|
end
|
24
34
|
|
25
35
|
desc "-C, [--commits]", "Show commits for next milestone."
|
26
|
-
map %w
|
36
|
+
map %w[-C --commits] => :commits
|
27
37
|
def commits
|
28
38
|
tagger.commit_list.each { |commit| say commit }
|
29
39
|
rescue StandardError => exception
|
30
40
|
error exception.message
|
31
41
|
end
|
32
42
|
|
33
|
-
desc "-t, [--tag=
|
34
|
-
map %w
|
43
|
+
desc "-t, [--tag=VERSION]", "Tag local repository with new version."
|
44
|
+
map %w[-t --tag] => :tag
|
35
45
|
method_option :sign, aliases: "-s", desc: "Sign tag with GPG key.", type: :boolean, default: false
|
36
|
-
def tag version = configuration.
|
46
|
+
def tag version = configuration.to_h[:version]
|
37
47
|
tagger.create version, sign: sign_tag?(options[:sign])
|
38
48
|
say "Repository tagged: #{tagger.version_label}."
|
39
49
|
rescue StandardError => exception
|
@@ -41,7 +51,7 @@ module Milestoner
|
|
41
51
|
end
|
42
52
|
|
43
53
|
desc "-p, [--push]", "Push local tag to remote repository."
|
44
|
-
map %w
|
54
|
+
map %w[-p --push] => :push
|
45
55
|
def push
|
46
56
|
pusher.push
|
47
57
|
info "Tags pushed to remote repository."
|
@@ -49,10 +59,10 @@ module Milestoner
|
|
49
59
|
error exception.message
|
50
60
|
end
|
51
61
|
|
52
|
-
desc "-P, [--publish=
|
53
|
-
map %w
|
62
|
+
desc "-P, [--publish=VERSION]", "Tag and push milestone to remote repository."
|
63
|
+
map %w[-P --publish] => :publish
|
54
64
|
method_option :sign, aliases: "-s", desc: "Sign tag with GPG key.", type: :boolean, default: false
|
55
|
-
def publish version = configuration.
|
65
|
+
def publish version = configuration.to_h[:version]
|
56
66
|
publisher.publish version, sign: sign_tag?(options[:sign])
|
57
67
|
info "Repository tagged and pushed: #{tagger.version_label}."
|
58
68
|
info "Milestone published!"
|
@@ -60,51 +70,35 @@ module Milestoner
|
|
60
70
|
error exception.message
|
61
71
|
end
|
62
72
|
|
63
|
-
desc "-c, [--config]", "
|
64
|
-
map %w
|
73
|
+
desc "-c, [--config]", "Manage gem configuration."
|
74
|
+
map %w[-c --config] => :config
|
65
75
|
method_option :edit, aliases: "-e", desc: "Edit gem configuration.", type: :boolean, default: false
|
76
|
+
method_option :info, aliases: "-i", desc: "Print gem configuration info.", type: :boolean, default: false
|
66
77
|
def config
|
67
|
-
if options
|
68
|
-
|
69
|
-
else
|
70
|
-
print_config_info
|
78
|
+
if options.edit? then `#{editor} #{configuration.computed_path}`
|
79
|
+
elsif options.info? then say("Using: #{configuration.computed_path}.")
|
80
|
+
else help(:config)
|
71
81
|
end
|
72
82
|
end
|
73
83
|
|
74
84
|
desc "-v, [--version]", "Show gem version."
|
75
|
-
map %w
|
85
|
+
map %w[-v --version] => :version
|
76
86
|
def version
|
77
87
|
say Identity.version_label
|
78
88
|
end
|
79
89
|
|
80
|
-
desc "-h, [--help=
|
81
|
-
map %w
|
90
|
+
desc "-h, [--help=COMMAND]", "Show this message or get help for a command."
|
91
|
+
map %w[-h --help] => :help
|
82
92
|
def help task = nil
|
83
|
-
say
|
93
|
+
say and super
|
84
94
|
end
|
85
95
|
|
86
96
|
private
|
87
97
|
|
88
98
|
attr_reader :configuration, :tagger, :pusher, :publisher
|
89
99
|
|
90
|
-
def defaults
|
91
|
-
{
|
92
|
-
version: "0.1.0",
|
93
|
-
git_commit_prefixes: %w(Fixed Added Updated Removed Refactored),
|
94
|
-
git_tag_sign: false
|
95
|
-
}
|
96
|
-
end
|
97
|
-
|
98
100
|
def sign_tag? sign
|
99
|
-
sign | configuration.
|
100
|
-
end
|
101
|
-
|
102
|
-
def print_config_info
|
103
|
-
case
|
104
|
-
when configuration.local? then say("Use local configuration: #{configuration.computed_file_path}.")
|
105
|
-
when configuration.global? then say("Using global configuration: #{configuration.computed_file_path}.")
|
106
|
-
else say("Global and local gem configuration not defined, using defaults instead.")
|
107
|
-
end
|
101
|
+
sign | configuration.to_h[:git_tag_sign]
|
108
102
|
end
|
109
103
|
end
|
110
104
|
end
|
data/lib/milestoner/identity.rb
CHANGED
data/lib/milestoner/tagger.rb
CHANGED
@@ -20,7 +20,7 @@ module Milestoner
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def commit_prefix_regex
|
23
|
-
return
|
23
|
+
return Regexp.new("") if commit_prefixes.empty?
|
24
24
|
Regexp.union commit_prefixes
|
25
25
|
end
|
26
26
|
|
@@ -65,12 +65,21 @@ module Milestoner
|
|
65
65
|
|
66
66
|
attr_reader :git
|
67
67
|
|
68
|
-
def
|
69
|
-
|
70
|
-
|
71
|
-
|
68
|
+
def git_log_command
|
69
|
+
"git log --oneline --no-merges --format='%s'"
|
70
|
+
end
|
71
|
+
|
72
|
+
def git_tag_command
|
73
|
+
"$(git describe --abbrev=0 --tags --always)..HEAD"
|
74
|
+
end
|
72
75
|
|
73
|
-
|
76
|
+
def git_commits_command
|
77
|
+
return "#{git_log_command} #{git_tag_command}" if tagged?
|
78
|
+
git_log_command
|
79
|
+
end
|
80
|
+
|
81
|
+
def raw_commits
|
82
|
+
`#{git_commits_command}`.split("\n")
|
74
83
|
end
|
75
84
|
|
76
85
|
def build_commit_prefix_groups
|
@@ -107,7 +116,8 @@ module Milestoner
|
|
107
116
|
def git_tag sign: false
|
108
117
|
message_file = Tempfile.new Identity.name
|
109
118
|
File.open(message_file, "w") { |file| file.write git_message }
|
110
|
-
|
119
|
+
status = system "git tag #{git_options message_file, sign: sign}"
|
120
|
+
fail(Errors::Git, "Unable to create tag: #{version.label}.") unless status
|
111
121
|
ensure
|
112
122
|
message_file.close
|
113
123
|
message_file.unlink
|
data/lib/tasks/rspec.rake
CHANGED
data/lib/tasks/rubocop.rake
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: milestoner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brooke Kuhlmann
|
@@ -12,25 +12,25 @@ cert_chain:
|
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
13
|
MIIDeDCCAmCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBBMQ8wDQYDVQQDDAZicm9v
|
14
14
|
a2UxGjAYBgoJkiaJk/IsZAEZFgphbGNoZW1pc3RzMRIwEAYKCZImiZPyLGQBGRYC
|
15
|
-
|
15
|
+
aW8wHhcNMTYxMDE5MTY0NDEzWhcNMTcxMDE5MTY0NDEzWjBBMQ8wDQYDVQQDDAZi
|
16
16
|
cm9va2UxGjAYBgoJkiaJk/IsZAEZFgphbGNoZW1pc3RzMRIwEAYKCZImiZPyLGQB
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
17
|
+
GRYCaW8wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCgryPL4/IbWDcL
|
18
|
+
fnqpnoJALqj+ega7hSsvvD8sac57HPNLeKcOmSafFiQLAnTmmE132ZlFc8kyZRVn
|
19
|
+
zmqSESowO5jd+ggFuy1ySqQJXhwgik04KedKRUjpIDZePrjw+M5UJT1qzKCKL2xI
|
20
|
+
nx5cOKP1fSWJ1RRu8JhaDeSloGtYMdw2c28wnKPNIsWDood4xhbLcY9IqeISft2e
|
21
|
+
oTAHTHandHbvt24X3/n67ceNjLBbsVZPXCC1C8C8ccjHjA4Tm2uiFoDwThMcPggg
|
22
|
+
90H6fh0vLFcNAobdPEchbge8tWtfmMPz2+C4yklANn81GA+ANsBS1uwx6mxJoMQU
|
23
|
+
BNVp0aLvAgMBAAGjezB5MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW
|
24
|
+
BBRS85Rn1BaqeIONByw4t46DMDMzHDAfBgNVHREEGDAWgRRicm9va2VAYWxjaGVt
|
25
25
|
aXN0cy5pbzAfBgNVHRIEGDAWgRRicm9va2VAYWxjaGVtaXN0cy5pbzANBgkqhkiG
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
26
|
+
9w0BAQUFAAOCAQEAZMb57Y4wdpbX8XxTukEO7VC1pndccUsxdbziGsAOiuHET3Aq
|
27
|
+
ygLvrfdYrN88/w+qxncW5bxbO3a6UGkuhIFUPM8zRSE/rh6bCcJljTJrExVt42eV
|
28
|
+
aYCb7WJNsx3eNXHn3uQodq3tD+lmNJzz2bFeT3smGSKEnALBjqorO/2mpDh4FJ3S
|
29
|
+
4CcDYsJ1ywep8LDJDBBGdKz9moL+axryzpeTpgTT/fFYFzRzWrURPyDvPOikh9TX
|
30
|
+
n/LUZ1dKhIHzfKx1B4+TEIefArObGfkLIDM8+Dq1RX7TF1k81Men7iu4MgE9bYBn
|
31
|
+
3dE+xI3FdB5gWcdWxdtgRCmWjtXeYYyb4z6NQQ==
|
32
32
|
-----END CERTIFICATE-----
|
33
|
-
date: 2016-
|
33
|
+
date: 2016-11-05 00:00:00.000000000 Z
|
34
34
|
dependencies:
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
36
|
name: thor
|
@@ -52,323 +52,225 @@ dependencies:
|
|
52
52
|
requirements:
|
53
53
|
- - "~>"
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: '
|
55
|
+
version: '4.0'
|
56
56
|
type: :runtime
|
57
57
|
prerelease: false
|
58
58
|
version_requirements: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
60
|
- - "~>"
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version: '
|
62
|
+
version: '4.0'
|
63
63
|
- !ruby/object:Gem::Dependency
|
64
|
-
name:
|
64
|
+
name: runcom
|
65
65
|
requirement: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
67
|
- - "~>"
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: '
|
69
|
+
version: '0.2'
|
70
70
|
type: :runtime
|
71
71
|
prerelease: false
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
74
|
- - "~>"
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version: '
|
76
|
+
version: '0.2'
|
77
77
|
- !ruby/object:Gem::Dependency
|
78
|
-
name:
|
78
|
+
name: versionaire
|
79
79
|
requirement: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
|
-
- - "
|
81
|
+
- - "~>"
|
82
82
|
- !ruby/object:Gem::Version
|
83
|
-
version: '0'
|
84
|
-
type: :
|
83
|
+
version: '2.0'
|
84
|
+
type: :runtime
|
85
85
|
prerelease: false
|
86
86
|
version_requirements: !ruby/object:Gem::Requirement
|
87
87
|
requirements:
|
88
|
-
- - "
|
88
|
+
- - "~>"
|
89
89
|
- !ruby/object:Gem::Version
|
90
|
-
version: '0'
|
90
|
+
version: '2.0'
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
|
-
name:
|
92
|
+
name: rake
|
93
93
|
requirement: !ruby/object:Gem::Requirement
|
94
94
|
requirements:
|
95
95
|
- - "~>"
|
96
96
|
- !ruby/object:Gem::Version
|
97
|
-
version: '
|
97
|
+
version: '11.0'
|
98
98
|
type: :development
|
99
99
|
prerelease: false
|
100
100
|
version_requirements: !ruby/object:Gem::Requirement
|
101
101
|
requirements:
|
102
102
|
- - "~>"
|
103
103
|
- !ruby/object:Gem::Version
|
104
|
-
version: '
|
104
|
+
version: '11.0'
|
105
105
|
- !ruby/object:Gem::Dependency
|
106
106
|
name: pry
|
107
107
|
requirement: !ruby/object:Gem::Requirement
|
108
108
|
requirements:
|
109
|
-
- - "
|
109
|
+
- - "~>"
|
110
110
|
- !ruby/object:Gem::Version
|
111
|
-
version: '0'
|
111
|
+
version: '0.10'
|
112
112
|
type: :development
|
113
113
|
prerelease: false
|
114
114
|
version_requirements: !ruby/object:Gem::Requirement
|
115
115
|
requirements:
|
116
|
-
- - "
|
116
|
+
- - "~>"
|
117
117
|
- !ruby/object:Gem::Version
|
118
|
-
version: '0'
|
118
|
+
version: '0.10'
|
119
119
|
- !ruby/object:Gem::Dependency
|
120
120
|
name: pry-byebug
|
121
121
|
requirement: !ruby/object:Gem::Requirement
|
122
122
|
requirements:
|
123
|
-
- - "
|
124
|
-
- !ruby/object:Gem::Version
|
125
|
-
version: '0'
|
126
|
-
type: :development
|
127
|
-
prerelease: false
|
128
|
-
version_requirements: !ruby/object:Gem::Requirement
|
129
|
-
requirements:
|
130
|
-
- - ">="
|
131
|
-
- !ruby/object:Gem::Version
|
132
|
-
version: '0'
|
133
|
-
- !ruby/object:Gem::Dependency
|
134
|
-
name: pry-remote
|
135
|
-
requirement: !ruby/object:Gem::Requirement
|
136
|
-
requirements:
|
137
|
-
- - ">="
|
123
|
+
- - "~>"
|
138
124
|
- !ruby/object:Gem::Version
|
139
|
-
version: '
|
125
|
+
version: '3.4'
|
140
126
|
type: :development
|
141
127
|
prerelease: false
|
142
128
|
version_requirements: !ruby/object:Gem::Requirement
|
143
129
|
requirements:
|
144
|
-
- - "
|
130
|
+
- - "~>"
|
145
131
|
- !ruby/object:Gem::Version
|
146
|
-
version: '
|
132
|
+
version: '3.4'
|
147
133
|
- !ruby/object:Gem::Dependency
|
148
134
|
name: pry-state
|
149
135
|
requirement: !ruby/object:Gem::Requirement
|
150
136
|
requirements:
|
151
|
-
- - "
|
152
|
-
- !ruby/object:Gem::Version
|
153
|
-
version: '0'
|
154
|
-
type: :development
|
155
|
-
prerelease: false
|
156
|
-
version_requirements: !ruby/object:Gem::Requirement
|
157
|
-
requirements:
|
158
|
-
- - ">="
|
159
|
-
- !ruby/object:Gem::Version
|
160
|
-
version: '0'
|
161
|
-
- !ruby/object:Gem::Dependency
|
162
|
-
name: pry-rescue
|
163
|
-
requirement: !ruby/object:Gem::Requirement
|
164
|
-
requirements:
|
165
|
-
- - ">="
|
166
|
-
- !ruby/object:Gem::Version
|
167
|
-
version: '0'
|
168
|
-
type: :development
|
169
|
-
prerelease: false
|
170
|
-
version_requirements: !ruby/object:Gem::Requirement
|
171
|
-
requirements:
|
172
|
-
- - ">="
|
173
|
-
- !ruby/object:Gem::Version
|
174
|
-
version: '0'
|
175
|
-
- !ruby/object:Gem::Dependency
|
176
|
-
name: pry-stack_explorer
|
177
|
-
requirement: !ruby/object:Gem::Requirement
|
178
|
-
requirements:
|
179
|
-
- - ">="
|
137
|
+
- - "~>"
|
180
138
|
- !ruby/object:Gem::Version
|
181
|
-
version: '0'
|
139
|
+
version: '0.1'
|
182
140
|
type: :development
|
183
141
|
prerelease: false
|
184
142
|
version_requirements: !ruby/object:Gem::Requirement
|
185
143
|
requirements:
|
186
|
-
- - "
|
144
|
+
- - "~>"
|
187
145
|
- !ruby/object:Gem::Version
|
188
|
-
version: '0'
|
146
|
+
version: '0.1'
|
189
147
|
- !ruby/object:Gem::Dependency
|
190
148
|
name: bond
|
191
149
|
requirement: !ruby/object:Gem::Requirement
|
192
150
|
requirements:
|
193
|
-
- - "
|
151
|
+
- - "~>"
|
194
152
|
- !ruby/object:Gem::Version
|
195
|
-
version: '0'
|
153
|
+
version: '0.5'
|
196
154
|
type: :development
|
197
155
|
prerelease: false
|
198
156
|
version_requirements: !ruby/object:Gem::Requirement
|
199
157
|
requirements:
|
200
|
-
- - "
|
158
|
+
- - "~>"
|
201
159
|
- !ruby/object:Gem::Version
|
202
|
-
version: '0'
|
160
|
+
version: '0.5'
|
203
161
|
- !ruby/object:Gem::Dependency
|
204
162
|
name: wirb
|
205
163
|
requirement: !ruby/object:Gem::Requirement
|
206
164
|
requirements:
|
207
|
-
- - "
|
165
|
+
- - "~>"
|
208
166
|
- !ruby/object:Gem::Version
|
209
|
-
version: '0'
|
167
|
+
version: '2.0'
|
210
168
|
type: :development
|
211
169
|
prerelease: false
|
212
170
|
version_requirements: !ruby/object:Gem::Requirement
|
213
171
|
requirements:
|
214
|
-
- - "
|
172
|
+
- - "~>"
|
215
173
|
- !ruby/object:Gem::Version
|
216
|
-
version: '0'
|
174
|
+
version: '2.0'
|
217
175
|
- !ruby/object:Gem::Dependency
|
218
176
|
name: hirb
|
219
177
|
requirement: !ruby/object:Gem::Requirement
|
220
178
|
requirements:
|
221
|
-
- - "
|
179
|
+
- - "~>"
|
222
180
|
- !ruby/object:Gem::Version
|
223
|
-
version: '0'
|
181
|
+
version: '0.7'
|
224
182
|
type: :development
|
225
183
|
prerelease: false
|
226
184
|
version_requirements: !ruby/object:Gem::Requirement
|
227
185
|
requirements:
|
228
|
-
- - "
|
186
|
+
- - "~>"
|
229
187
|
- !ruby/object:Gem::Version
|
230
|
-
version: '0'
|
188
|
+
version: '0.7'
|
231
189
|
- !ruby/object:Gem::Dependency
|
232
190
|
name: awesome_print
|
233
191
|
requirement: !ruby/object:Gem::Requirement
|
234
192
|
requirements:
|
235
|
-
- - "
|
193
|
+
- - "~>"
|
236
194
|
- !ruby/object:Gem::Version
|
237
|
-
version: '
|
195
|
+
version: '1.7'
|
238
196
|
type: :development
|
239
197
|
prerelease: false
|
240
198
|
version_requirements: !ruby/object:Gem::Requirement
|
241
199
|
requirements:
|
242
|
-
- - "
|
200
|
+
- - "~>"
|
243
201
|
- !ruby/object:Gem::Version
|
244
|
-
version: '
|
202
|
+
version: '1.7'
|
245
203
|
- !ruby/object:Gem::Dependency
|
246
204
|
name: rspec
|
247
205
|
requirement: !ruby/object:Gem::Requirement
|
248
206
|
requirements:
|
249
|
-
- - "
|
250
|
-
- !ruby/object:Gem::Version
|
251
|
-
version: '0'
|
252
|
-
type: :development
|
253
|
-
prerelease: false
|
254
|
-
version_requirements: !ruby/object:Gem::Requirement
|
255
|
-
requirements:
|
256
|
-
- - ">="
|
257
|
-
- !ruby/object:Gem::Version
|
258
|
-
version: '0'
|
259
|
-
- !ruby/object:Gem::Dependency
|
260
|
-
name: rb-fsevent
|
261
|
-
requirement: !ruby/object:Gem::Requirement
|
262
|
-
requirements:
|
263
|
-
- - ">="
|
207
|
+
- - "~>"
|
264
208
|
- !ruby/object:Gem::Version
|
265
|
-
version: '
|
209
|
+
version: '3.5'
|
266
210
|
type: :development
|
267
211
|
prerelease: false
|
268
212
|
version_requirements: !ruby/object:Gem::Requirement
|
269
213
|
requirements:
|
270
|
-
- - "
|
214
|
+
- - "~>"
|
271
215
|
- !ruby/object:Gem::Version
|
272
|
-
version: '
|
216
|
+
version: '3.5'
|
273
217
|
- !ruby/object:Gem::Dependency
|
274
218
|
name: guard-rspec
|
275
219
|
requirement: !ruby/object:Gem::Requirement
|
276
220
|
requirements:
|
277
|
-
- - "
|
278
|
-
- !ruby/object:Gem::Version
|
279
|
-
version: '0'
|
280
|
-
type: :development
|
281
|
-
prerelease: false
|
282
|
-
version_requirements: !ruby/object:Gem::Requirement
|
283
|
-
requirements:
|
284
|
-
- - ">="
|
285
|
-
- !ruby/object:Gem::Version
|
286
|
-
version: '0'
|
287
|
-
- !ruby/object:Gem::Dependency
|
288
|
-
name: terminal-notifier
|
289
|
-
requirement: !ruby/object:Gem::Requirement
|
290
|
-
requirements:
|
291
|
-
- - ">="
|
292
|
-
- !ruby/object:Gem::Version
|
293
|
-
version: '0'
|
294
|
-
type: :development
|
295
|
-
prerelease: false
|
296
|
-
version_requirements: !ruby/object:Gem::Requirement
|
297
|
-
requirements:
|
298
|
-
- - ">="
|
299
|
-
- !ruby/object:Gem::Version
|
300
|
-
version: '0'
|
301
|
-
- !ruby/object:Gem::Dependency
|
302
|
-
name: terminal-notifier-guard
|
303
|
-
requirement: !ruby/object:Gem::Requirement
|
304
|
-
requirements:
|
305
|
-
- - ">="
|
221
|
+
- - "~>"
|
306
222
|
- !ruby/object:Gem::Version
|
307
|
-
version: '
|
223
|
+
version: '4.7'
|
308
224
|
type: :development
|
309
225
|
prerelease: false
|
310
226
|
version_requirements: !ruby/object:Gem::Requirement
|
311
227
|
requirements:
|
312
|
-
- - "
|
228
|
+
- - "~>"
|
313
229
|
- !ruby/object:Gem::Version
|
314
|
-
version: '
|
230
|
+
version: '4.7'
|
315
231
|
- !ruby/object:Gem::Dependency
|
316
232
|
name: climate_control
|
317
233
|
requirement: !ruby/object:Gem::Requirement
|
318
234
|
requirements:
|
319
|
-
- - "
|
320
|
-
- !ruby/object:Gem::Version
|
321
|
-
version: '0'
|
322
|
-
type: :development
|
323
|
-
prerelease: false
|
324
|
-
version_requirements: !ruby/object:Gem::Requirement
|
325
|
-
requirements:
|
326
|
-
- - ">="
|
327
|
-
- !ruby/object:Gem::Version
|
328
|
-
version: '0'
|
329
|
-
- !ruby/object:Gem::Dependency
|
330
|
-
name: greenletters
|
331
|
-
requirement: !ruby/object:Gem::Requirement
|
332
|
-
requirements:
|
333
|
-
- - ">="
|
235
|
+
- - "~>"
|
334
236
|
- !ruby/object:Gem::Version
|
335
|
-
version: '0'
|
237
|
+
version: '0.0'
|
336
238
|
type: :development
|
337
239
|
prerelease: false
|
338
240
|
version_requirements: !ruby/object:Gem::Requirement
|
339
241
|
requirements:
|
340
|
-
- - "
|
242
|
+
- - "~>"
|
341
243
|
- !ruby/object:Gem::Version
|
342
|
-
version: '0'
|
244
|
+
version: '0.0'
|
343
245
|
- !ruby/object:Gem::Dependency
|
344
246
|
name: rubocop
|
345
247
|
requirement: !ruby/object:Gem::Requirement
|
346
248
|
requirements:
|
347
|
-
- - "
|
249
|
+
- - "~>"
|
348
250
|
- !ruby/object:Gem::Version
|
349
|
-
version: '0'
|
251
|
+
version: '0.45'
|
350
252
|
type: :development
|
351
253
|
prerelease: false
|
352
254
|
version_requirements: !ruby/object:Gem::Requirement
|
353
255
|
requirements:
|
354
|
-
- - "
|
256
|
+
- - "~>"
|
355
257
|
- !ruby/object:Gem::Version
|
356
|
-
version: '0'
|
258
|
+
version: '0.45'
|
357
259
|
- !ruby/object:Gem::Dependency
|
358
260
|
name: codeclimate-test-reporter
|
359
261
|
requirement: !ruby/object:Gem::Requirement
|
360
262
|
requirements:
|
361
|
-
- - "
|
263
|
+
- - "~>"
|
362
264
|
- !ruby/object:Gem::Version
|
363
|
-
version: '0'
|
265
|
+
version: '0.6'
|
364
266
|
type: :development
|
365
267
|
prerelease: false
|
366
268
|
version_requirements: !ruby/object:Gem::Requirement
|
367
269
|
requirements:
|
368
|
-
- - "
|
270
|
+
- - "~>"
|
369
271
|
- !ruby/object:Gem::Version
|
370
|
-
version: '0'
|
371
|
-
description:
|
272
|
+
version: '0.6'
|
273
|
+
description:
|
372
274
|
email:
|
373
275
|
- brooke@alchemists.io
|
374
276
|
executables:
|
@@ -383,18 +285,14 @@ files:
|
|
383
285
|
- bin/milestoner
|
384
286
|
- lib/milestoner.rb
|
385
287
|
- lib/milestoner/cli.rb
|
386
|
-
- lib/milestoner/configuration.rb
|
387
288
|
- lib/milestoner/errors/base.rb
|
388
|
-
- lib/milestoner/errors/configuration.rb
|
389
289
|
- lib/milestoner/errors/duplicate_tag.rb
|
390
290
|
- lib/milestoner/errors/git.rb
|
391
|
-
- lib/milestoner/errors/version.rb
|
392
291
|
- lib/milestoner/git.rb
|
393
292
|
- lib/milestoner/identity.rb
|
394
293
|
- lib/milestoner/publisher.rb
|
395
294
|
- lib/milestoner/pusher.rb
|
396
295
|
- lib/milestoner/tagger.rb
|
397
|
-
- lib/tasks/console.rake
|
398
296
|
- lib/tasks/rspec.rake
|
399
297
|
- lib/tasks/rubocop.rake
|
400
298
|
homepage: https://github.com/bkuhlmann/milestoner
|
@@ -417,7 +315,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
417
315
|
version: '0'
|
418
316
|
requirements: []
|
419
317
|
rubyforge_project:
|
420
|
-
rubygems_version: 2.6.
|
318
|
+
rubygems_version: 2.6.8
|
421
319
|
signing_key:
|
422
320
|
specification_version: 4
|
423
321
|
summary: A command line interface for releasing Git repository milestones.
|
metadata.gz.sig
CHANGED
Binary file
|
@@ -1,46 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Milestoner
|
4
|
-
# Default configuration for gem with support for custom settings.
|
5
|
-
class Configuration
|
6
|
-
def initialize file_name = Identity.file_name, defaults: {}
|
7
|
-
@file_name = file_name
|
8
|
-
@defaults = defaults
|
9
|
-
end
|
10
|
-
|
11
|
-
def local_file_path
|
12
|
-
File.join Dir.pwd, file_name
|
13
|
-
end
|
14
|
-
|
15
|
-
def global_file_path
|
16
|
-
File.join ENV["HOME"], file_name
|
17
|
-
end
|
18
|
-
|
19
|
-
def global?
|
20
|
-
File.exist? global_file_path
|
21
|
-
end
|
22
|
-
|
23
|
-
def local?
|
24
|
-
File.exist? local_file_path
|
25
|
-
end
|
26
|
-
|
27
|
-
def computed_file_path
|
28
|
-
File.exist?(local_file_path) ? local_file_path : global_file_path
|
29
|
-
end
|
30
|
-
|
31
|
-
def settings
|
32
|
-
defaults.merge(load_settings).reject { |_, value| value.nil? }
|
33
|
-
end
|
34
|
-
|
35
|
-
private
|
36
|
-
|
37
|
-
attr_reader :file_name, :defaults
|
38
|
-
|
39
|
-
def load_settings
|
40
|
-
yaml = YAML.load_file computed_file_path
|
41
|
-
yaml.is_a?(Hash) ? yaml : {}
|
42
|
-
rescue
|
43
|
-
defaults
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|