milestoner 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/README.md +71 -17
- data/bin/milestoner +1 -1
- data/lib/milestoner.rb +7 -1
- data/lib/milestoner/aids/git.rb +10 -0
- data/lib/milestoner/cli.rb +48 -29
- data/lib/milestoner/configuration.rb +36 -0
- data/lib/milestoner/errors/base.rb +10 -0
- data/lib/milestoner/errors/configuration.rb +7 -0
- data/lib/milestoner/errors/duplicate_tag.rb +7 -0
- data/lib/milestoner/errors/git.rb +10 -0
- data/lib/milestoner/errors/version.rb +7 -0
- data/lib/milestoner/identity.rb +6 -2
- data/lib/milestoner/pusher.rb +3 -0
- data/lib/milestoner/tagger.rb +33 -26
- metadata +9 -3
- metadata.gz.sig +0 -0
- data/lib/milestoner/exceptions.rb +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2f8ac8304b27843a087593b12cf0ed45945701bc
|
4
|
+
data.tar.gz: 2fc0db25d0afba6db7131dc340d3404b478e19a2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1eebacca1ca1eb38c801ffbd1ee35ad749e07a6f64394faa381385a325f83a11f6ad2fbdb533b313109e267775ce9fca4057f6eebf076929c205ead896cd57b4
|
7
|
+
data.tar.gz: bf566fa3250f24929aa519d647f64b2b77e47e0c6c235a79d70e68060d0bbf61d562bf91454988f187834d8e43c70cf9b77081240b1e226d7e12bdcad74bde83
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/README.md
CHANGED
@@ -16,6 +16,8 @@ A tool for automating and releasing Git repository milestones.
|
|
16
16
|
- [Requirements](#requirements)
|
17
17
|
- [Setup](#setup)
|
18
18
|
- [Usage](#usage)
|
19
|
+
- [Command Line Interface (CLI)](#command-line-interface-cli)
|
20
|
+
- [Customization](#customization)
|
19
21
|
- [Tests](#tests)
|
20
22
|
- [Versioning](#versioning)
|
21
23
|
- [Code of Conduct](#code-of-conduct)
|
@@ -28,15 +30,19 @@ A tool for automating and releasing Git repository milestones.
|
|
28
30
|
|
29
31
|
# Features
|
30
32
|
|
31
|
-
-
|
32
|
-
|
33
|
-
-
|
34
|
-
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
- Ensures
|
39
|
-
-
|
33
|
+
- Ensures [Semantic Versioning](http://semver.org) of Git repository tags:
|
34
|
+
- Format: `v<major>.<minor>.</maintenance>`.
|
35
|
+
- Example: `v0.1.0`.
|
36
|
+
- Ensures Git commits since last tag (or since initialization of repository if no tags exist) are included within each
|
37
|
+
Git tag message.
|
38
|
+
- Ensures Git commit messages are grouped by prefix, in order defined, for each Git tag message (prefixes can be
|
39
|
+
customized): "Fixed", "Added", "Updated", "Removed", "Refactored".
|
40
|
+
- Ensures Git commit messages are alphabetically sorted within each Git tag message.
|
41
|
+
- Ensures duplicate Git commit messages are removed (if any) within each Git tag message.
|
42
|
+
- Ensures Git commit messages are sanitized by removing extra spaces and `[ci skip]` text within each Git tag message.
|
43
|
+
- Provides optional security for signing Git tags with [GnuPG](https://www.gnupg.org) signing key.
|
44
|
+
|
45
|
+
[![asciicast](https://asciinema.org/a/ecyzvq1uvy3mn6mrknd36f5b7.png)](https://asciinema.org/a/ecyzvq1uvy3mn6mrknd36f5b7)
|
40
46
|
|
41
47
|
# Requirements
|
42
48
|
|
@@ -48,7 +54,7 @@ A tool for automating and releasing Git repository milestones.
|
|
48
54
|
|
49
55
|
For a secure install, type the following (recommended):
|
50
56
|
|
51
|
-
gem cert --add <(curl -Ls
|
57
|
+
gem cert --add <(curl -Ls https://www.alchemists.io/gem-public.pem)
|
52
58
|
gem install milestoner --trust-policy MediumSecurity
|
53
59
|
|
54
60
|
NOTE: A HighSecurity trust policy would be best but MediumSecurity enables signed gem verification while
|
@@ -60,20 +66,23 @@ For an insecure install, type the following (not recommended):
|
|
60
66
|
|
61
67
|
# Usage
|
62
68
|
|
63
|
-
|
69
|
+
## Command Line Interface (CLI)
|
70
|
+
|
71
|
+
From the command line, type: `milestoner help`
|
64
72
|
|
65
|
-
milestoner -P, [--publish=PUBLISH] # Tag and push to remote repository.
|
66
|
-
milestoner -c, [--commits] # Show
|
73
|
+
milestoner -P, [--publish=PUBLISH] # Tag and push milestone to remote repository.
|
74
|
+
milestoner -c, [--commits] # Show commits for next milestone.
|
75
|
+
milestoner -e, [--edit] # Edit Milestoner settings in default editor.
|
67
76
|
milestoner -h, [--help=HELP] # Show this message or get help for a command.
|
68
|
-
milestoner -p, [--push] # Push
|
77
|
+
milestoner -p, [--push] # Push local tag to remote repository.
|
69
78
|
milestoner -t, [--tag=TAG] # Tag local repository with new version.
|
70
|
-
milestoner -v, [--version] # Show version.
|
79
|
+
milestoner -v, [--version] # Show Milestoner version.
|
71
80
|
|
72
|
-
For tag options, type: milestoner help tag
|
81
|
+
For tag options, type: `milestoner help tag`
|
73
82
|
|
74
83
|
-s, [--sign], [--no-sign] # Sign tag with GPG key.
|
75
84
|
|
76
|
-
For publish options, type: milestoner help publish
|
85
|
+
For publish options, type: `milestoner help publish`
|
77
86
|
|
78
87
|
-s, [--sign], [--no-sign] # Sign tag with GPG key.
|
79
88
|
|
@@ -81,6 +90,51 @@ When using Milestoner, the `--publish` command is intended to be the only comman
|
|
81
90
|
release as it handles all of the steps necessary for tagging and pushing a new release. Should individual steps
|
82
91
|
be needed, then the `--tag` and `--push` options are available.
|
83
92
|
|
93
|
+
## Customization
|
94
|
+
|
95
|
+
Should the default settings not be desired, customization is allowed via the `.milestonerrc` file. The `.milestonerrc`
|
96
|
+
can be created at a global and/or local level. Example:
|
97
|
+
|
98
|
+
- Global: `~/.milestonerrc`
|
99
|
+
- Local: `<project repository root>/.milestonerrc`
|
100
|
+
|
101
|
+
Order of precedence for any setting is resolved as follows (with the first taking top priority):
|
102
|
+
|
103
|
+
0. CLI option. Example: A version passed to either the `--tag` or `--publish` commands.
|
104
|
+
0. Local project repository `.milestonerrc`.
|
105
|
+
0. Global `~/.milestonerrc`.
|
106
|
+
|
107
|
+
Any setting provided to the CLI during runtime would trump a local/global setting and a local setting would trump a
|
108
|
+
global setting. The global setting is the weakest of all but great for situations where custom settings should be
|
109
|
+
applied to *all* projects. It is important to note that local settings completely trump any global settings -- there is
|
110
|
+
no inheritance when local *and* global settings exist at the same time.
|
111
|
+
|
112
|
+
The `.milestonerrc` uses the following default settings:
|
113
|
+
|
114
|
+
---
|
115
|
+
:version: ""
|
116
|
+
:git_commit_prefixes:
|
117
|
+
- Fixed
|
118
|
+
- Added
|
119
|
+
- Updated
|
120
|
+
- Removed
|
121
|
+
- Refactored
|
122
|
+
:git_tag_sign: false
|
123
|
+
|
124
|
+
Each `.milestonerrc` setting can be configured as follows:
|
125
|
+
|
126
|
+
- `version`: By default it is left blank so you'll be prompted by the CLI. However, it can be nice to bump this version
|
127
|
+
prior to each release and have the current version checked into source code at a per project level. The version, if
|
128
|
+
set, will be used to tag the repository. If the version is a duplicate, an error will be thrown. When supplying a
|
129
|
+
version, use this format: `<major>.<minor>.</maintenance>`. Example: `0.1.0`.
|
130
|
+
- `git_commit_prefixes`: Should the default prefixes not be desired, you can define Git commit prefixes that match your
|
131
|
+
style. *NOTE: Prefix order is important with the first prefix defined taking precedence over the second and so forth.*
|
132
|
+
Special characters are allowed for prefixes but should be enclosed in quotes if used. To disable prefix usage
|
133
|
+
completely, use an empty array. Example: `:git_commit_prefixes: []`.
|
134
|
+
- `git_tag_sign`: Defaults to `false` but can be enabled by setting to `true`. When enabled, a Git tag will require GPG
|
135
|
+
signing for enhanced security and include a signed signature as part of the Git tag. This is useful for public
|
136
|
+
milestones where the author of a milestone can be verified to ensure milestone integrity/security.
|
137
|
+
|
84
138
|
# Tests
|
85
139
|
|
86
140
|
To test, run:
|
data/bin/milestoner
CHANGED
data/lib/milestoner.rb
CHANGED
@@ -1,4 +1,10 @@
|
|
1
|
+
require "milestoner/aids/git"
|
2
|
+
require "milestoner/errors/base"
|
3
|
+
require "milestoner/errors/configuration"
|
4
|
+
require "milestoner/errors/duplicate_tag"
|
5
|
+
require "milestoner/errors/git"
|
6
|
+
require "milestoner/errors/version"
|
7
|
+
require "milestoner/configuration"
|
1
8
|
require "milestoner/identity"
|
2
|
-
require "milestoner/exceptions"
|
3
9
|
require "milestoner/pusher"
|
4
10
|
require "milestoner/tagger"
|
data/lib/milestoner/cli.rb
CHANGED
@@ -9,58 +9,63 @@ module Milestoner
|
|
9
9
|
include Thor::Actions
|
10
10
|
include ThorPlus::Actions
|
11
11
|
|
12
|
-
package_name Milestoner::Identity.
|
12
|
+
package_name Milestoner::Identity.version_label
|
13
13
|
|
14
14
|
def initialize args = [], options = {}, config = {}
|
15
15
|
super args, options, config
|
16
|
+
@configuration = Milestoner::Configuration.new Milestoner::Identity.file_name, defaults: defaults
|
17
|
+
@tagger = Milestoner::Tagger.new configuration.settings[:version],
|
18
|
+
commit_prefixes: configuration.settings[:git_commit_prefixes]
|
19
|
+
@pusher = Milestoner::Pusher.new
|
16
20
|
end
|
17
21
|
|
18
|
-
desc "-c, [--commits]", "Show
|
22
|
+
desc "-c, [--commits]", "Show commits for next milestone."
|
19
23
|
map %w(-c --commits) => :commits
|
20
|
-
def commits
|
21
|
-
tagger = Milestoner::Tagger.new version
|
22
|
-
say "Milestone #{version} Commits:"
|
24
|
+
def commits
|
23
25
|
tagger.commit_list.each { |commit| say commit }
|
26
|
+
rescue Milestoner::Errors::Base => base_error
|
27
|
+
error base_error.message
|
24
28
|
end
|
25
29
|
|
26
30
|
desc "-t, [--tag=TAG]", "Tag local repository with new version."
|
27
31
|
map %w(-t --tag) => :tag
|
28
32
|
method_option :sign, aliases: "-s", desc: "Sign tag with GPG key.", type: :boolean, default: false
|
29
|
-
def tag version
|
30
|
-
tagger
|
31
|
-
tagger.create sign: options[:sign]
|
33
|
+
def tag version = configuration.settings[:version]
|
34
|
+
tagger.create version, sign: sign_tag?(options[:sign])
|
32
35
|
say "Repository tagged: #{tagger.version_label}."
|
33
|
-
rescue Milestoner::
|
34
|
-
error
|
35
|
-
rescue Milestoner::DuplicateTagError => tag_error
|
36
|
-
error tag_error.message
|
36
|
+
rescue Milestoner::Errors::Base => base_error
|
37
|
+
error base_error.message
|
37
38
|
end
|
38
39
|
|
39
|
-
desc "-p, [--push]", "Push
|
40
|
+
desc "-p, [--push]", "Push local tag to remote repository."
|
40
41
|
map %w(-p --push) => :push
|
41
42
|
def push
|
42
|
-
pusher = Milestoner::Pusher.new
|
43
43
|
pusher.push
|
44
44
|
info "Tags pushed to remote repository."
|
45
|
+
rescue Milestoner::Errors::Base => base_error
|
46
|
+
error base_error.message
|
45
47
|
end
|
46
48
|
|
47
|
-
desc "-P, [--publish=PUBLISH]", "Tag and push to remote repository."
|
49
|
+
desc "-P, [--publish=PUBLISH]", "Tag and push milestone to remote repository."
|
48
50
|
map %w(-P --publish) => :publish
|
49
51
|
method_option :sign, aliases: "-s", desc: "Sign tag with GPG key.", type: :boolean, default: false
|
50
|
-
def publish version
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
rescue Milestoner::VersionError => version_error
|
55
|
-
error version_error.message
|
56
|
-
rescue Milestoner::DuplicateTagError => tag_error
|
57
|
-
error tag_error.message
|
52
|
+
def publish version = configuration.settings[:version]
|
53
|
+
tag_and_push version, options
|
54
|
+
rescue Milestoner::Errors::Base => base_error
|
55
|
+
error base_error.message
|
58
56
|
end
|
59
57
|
|
60
|
-
desc "-
|
58
|
+
desc "-e, [--edit]", "Edit #{Milestoner::Identity.label} settings in default editor."
|
59
|
+
map %w(-e --edit) => :edit
|
60
|
+
def edit
|
61
|
+
info "Editing: #{configuration.computed_file_path}..."
|
62
|
+
`#{editor} #{configuration.computed_file_path}`
|
63
|
+
end
|
64
|
+
|
65
|
+
desc "-v, [--version]", "Show #{Milestoner::Identity.label} version."
|
61
66
|
map %w(-v --version) => :version
|
62
67
|
def version
|
63
|
-
say Milestoner::Identity.
|
68
|
+
say Milestoner::Identity.version_label
|
64
69
|
end
|
65
70
|
|
66
71
|
desc "-h, [--help=HELP]", "Show this message or get help for a command."
|
@@ -71,10 +76,24 @@ module Milestoner
|
|
71
76
|
|
72
77
|
private
|
73
78
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
79
|
+
attr_reader :configuration, :tagger, :pusher
|
80
|
+
|
81
|
+
def defaults
|
82
|
+
{
|
83
|
+
version: "",
|
84
|
+
git_commit_prefixes: %w(Fixed Added Updated Removed Refactored),
|
85
|
+
git_tag_sign: false
|
86
|
+
}
|
87
|
+
end
|
88
|
+
|
89
|
+
def sign_tag? sign
|
90
|
+
sign | configuration.settings[:git_tag_sign]
|
91
|
+
end
|
92
|
+
|
93
|
+
def tag_and_push version, options
|
94
|
+
if tagger.create(version, sign: sign_tag?(options[:sign])) && pusher.push
|
95
|
+
info "Repository tagged and pushed: #{tagger.version_label}."
|
96
|
+
info "Milestone published!"
|
78
97
|
else
|
79
98
|
tagger.destroy
|
80
99
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Milestoner
|
2
|
+
# Default configuration for gem with support for custom settings.
|
3
|
+
class Configuration
|
4
|
+
def initialize file_name = ".unknownrc", defaults: {}
|
5
|
+
@file_name = file_name
|
6
|
+
@defaults = defaults
|
7
|
+
end
|
8
|
+
|
9
|
+
def local_file_path
|
10
|
+
File.join Dir.pwd, file_name
|
11
|
+
end
|
12
|
+
|
13
|
+
def global_file_path
|
14
|
+
File.join ENV["HOME"], file_name
|
15
|
+
end
|
16
|
+
|
17
|
+
def computed_file_path
|
18
|
+
File.exist?(local_file_path) ? local_file_path : global_file_path
|
19
|
+
end
|
20
|
+
|
21
|
+
def settings
|
22
|
+
defaults.merge(load_settings).reject { |_, value| value.nil? }
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
attr_reader :file_name, :defaults
|
28
|
+
|
29
|
+
def load_settings
|
30
|
+
yaml = YAML.load_file computed_file_path
|
31
|
+
yaml.is_a?(Hash) ? yaml : {}
|
32
|
+
rescue
|
33
|
+
defaults
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/milestoner/identity.rb
CHANGED
data/lib/milestoner/pusher.rb
CHANGED
@@ -1,11 +1,14 @@
|
|
1
1
|
module Milestoner
|
2
2
|
# Handles publishing of Git tags to remote repository.
|
3
3
|
class Pusher
|
4
|
+
include Aids::Git
|
5
|
+
|
4
6
|
def initialize kernel: Kernel
|
5
7
|
@kernel = kernel
|
6
8
|
end
|
7
9
|
|
8
10
|
def push
|
11
|
+
fail(Errors::Git) unless git_supported?
|
9
12
|
kernel.system "git push --tags"
|
10
13
|
end
|
11
14
|
|
data/lib/milestoner/tagger.rb
CHANGED
@@ -1,42 +1,45 @@
|
|
1
1
|
module Milestoner
|
2
2
|
# Handles the tagging of a project repository.
|
3
3
|
class Tagger
|
4
|
-
|
4
|
+
include Aids::Git
|
5
5
|
|
6
|
-
|
7
|
-
%w(Fixed Added Updated Removed Refactored) # Order is important for controlling the sort.
|
8
|
-
end
|
9
|
-
|
10
|
-
def self.commit_prefix_regex
|
11
|
-
/\A(#{commit_prefixes.join "|"})/
|
12
|
-
end
|
6
|
+
attr_reader :version_number, :commit_prefixes
|
13
7
|
|
14
8
|
def self.version_regex
|
15
9
|
/\A\d{1}\.\d{1}\.\d{1}\z/
|
16
10
|
end
|
17
11
|
|
18
|
-
def initialize version
|
19
|
-
@
|
12
|
+
def initialize version = nil, commit_prefixes: []
|
13
|
+
@version_number = version
|
14
|
+
@commit_prefixes = commit_prefixes
|
20
15
|
end
|
21
16
|
|
22
17
|
def version_label
|
23
|
-
"v#{
|
18
|
+
"v#{version_number}"
|
24
19
|
end
|
25
20
|
|
26
21
|
def version_message
|
27
|
-
"Version #{
|
22
|
+
"Version #{version_number}."
|
23
|
+
end
|
24
|
+
|
25
|
+
def commit_prefix_regex
|
26
|
+
return // if commit_prefixes.empty?
|
27
|
+
Regexp.union commit_prefixes
|
28
28
|
end
|
29
29
|
|
30
30
|
def tagged?
|
31
|
+
fail(Errors::Git) unless git_supported?
|
31
32
|
response = `git tag`
|
32
33
|
!(response.nil? || response.empty?)
|
33
34
|
end
|
34
35
|
|
35
36
|
def duplicate?
|
37
|
+
fail(Errors::Git) unless git_supported?
|
36
38
|
system "git rev-parse #{version_label} > /dev/null 2>&1"
|
37
39
|
end
|
38
40
|
|
39
41
|
def commits
|
42
|
+
fail(Errors::Git) unless git_supported?
|
40
43
|
groups = build_commit_prefix_groups
|
41
44
|
group_by_commit_prefix! groups
|
42
45
|
sort_by_commit_prefix! groups
|
@@ -47,20 +50,15 @@ module Milestoner
|
|
47
50
|
commits.map { |commit| "- #{commit}" }
|
48
51
|
end
|
49
52
|
|
50
|
-
def create sign: false
|
51
|
-
fail(
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
File.open(message_file, "w") { |file| file.write tag_message }
|
56
|
-
`git tag #{tag_options message_file, sign: sign}`
|
57
|
-
ensure
|
58
|
-
message_file.close
|
59
|
-
message_file.unlink
|
60
|
-
end
|
53
|
+
def create version = version_number, sign: false
|
54
|
+
fail(Errors::Git) unless git_supported?
|
55
|
+
@version_number = validate_version version
|
56
|
+
fail(Errors::DuplicateTag, "Duplicate tag exists: #{version_label}.") if duplicate?
|
57
|
+
create_tag sign: sign
|
61
58
|
end
|
62
59
|
|
63
60
|
def destroy
|
61
|
+
fail(Errors::Git) unless git_supported?
|
64
62
|
`git tag --delete #{version_label}`
|
65
63
|
end
|
66
64
|
|
@@ -68,7 +66,7 @@ module Milestoner
|
|
68
66
|
|
69
67
|
def validate_version version
|
70
68
|
message = "Invalid version: #{version}. Use: <major>.<minor>.<maintenance>."
|
71
|
-
fail(
|
69
|
+
fail(Errors::Version, message) unless version.match(self.class.version_regex)
|
72
70
|
version
|
73
71
|
end
|
74
72
|
|
@@ -81,7 +79,7 @@ module Milestoner
|
|
81
79
|
end
|
82
80
|
|
83
81
|
def build_commit_prefix_groups
|
84
|
-
groups =
|
82
|
+
groups = commit_prefixes.map.with_object({}) { |prefix, group| group.merge! prefix => [] }
|
85
83
|
groups.merge! "Other" => []
|
86
84
|
end
|
87
85
|
|
@@ -91,7 +89,7 @@ module Milestoner
|
|
91
89
|
|
92
90
|
def group_by_commit_prefix! groups = {}
|
93
91
|
raw_commits.each do |commit|
|
94
|
-
prefix = commit[
|
92
|
+
prefix = commit[commit_prefix_regex]
|
95
93
|
key = groups.key?(prefix) ? prefix : "Other"
|
96
94
|
groups[key] << sanitize_commit(commit)
|
97
95
|
end
|
@@ -110,5 +108,14 @@ module Milestoner
|
|
110
108
|
return options.gsub("--sign ", "") unless sign
|
111
109
|
options
|
112
110
|
end
|
111
|
+
|
112
|
+
def create_tag sign: false
|
113
|
+
message_file = Tempfile.new Milestoner::Identity.name
|
114
|
+
File.open(message_file, "w") { |file| file.write tag_message }
|
115
|
+
`git tag #{tag_options message_file, sign: sign}`
|
116
|
+
ensure
|
117
|
+
message_file.close
|
118
|
+
message_file.unlink
|
119
|
+
end
|
113
120
|
end
|
114
121
|
end
|
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: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brooke Kuhlmann
|
@@ -30,7 +30,7 @@ cert_chain:
|
|
30
30
|
aSif+qBc6oHD7EQWPF5cZkzkIURuwNwPBngZGxIKaMAgRhjGFXzUMAaq++r59cS9
|
31
31
|
xTfQ4k6fglKEgpnLAXiKdo2c8Ym+X4rIKFfedQ==
|
32
32
|
-----END CERTIFICATE-----
|
33
|
-
date: 2015-09-
|
33
|
+
date: 2015-09-13 00:00:00.000000000 Z
|
34
34
|
dependencies:
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
36
|
name: thor
|
@@ -312,8 +312,14 @@ files:
|
|
312
312
|
- README.md
|
313
313
|
- bin/milestoner
|
314
314
|
- lib/milestoner.rb
|
315
|
+
- lib/milestoner/aids/git.rb
|
315
316
|
- lib/milestoner/cli.rb
|
316
|
-
- lib/milestoner/
|
317
|
+
- lib/milestoner/configuration.rb
|
318
|
+
- lib/milestoner/errors/base.rb
|
319
|
+
- lib/milestoner/errors/configuration.rb
|
320
|
+
- lib/milestoner/errors/duplicate_tag.rb
|
321
|
+
- lib/milestoner/errors/git.rb
|
322
|
+
- lib/milestoner/errors/version.rb
|
317
323
|
- lib/milestoner/identity.rb
|
318
324
|
- lib/milestoner/pusher.rb
|
319
325
|
- lib/milestoner/tagger.rb
|
metadata.gz.sig
CHANGED
Binary file
|