caretaker 0.2.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/.gitignore +20 -0
- data/.rspec +3 -0
- data/.rubocop.yml +77 -0
- data/.travis.yml +68 -0
- data/CHANGELOG.md +13 -0
- data/CODEOWNERS +7 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/CONTRIBUTING.md +3 -0
- data/Gemfile +6 -0
- data/LICENSE.md +25 -0
- data/README.md +395 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/caretaker.gemspec +30 -0
- data/exe/caretaker +121 -0
- data/lib/caretaker.rb +692 -0
- data/lib/caretaker/version.rb +3 -0
- data/spec/caretaker_spec.rb +5 -0
- data/spec/spec_helper.rb +14 -0
- data/testing/caretaker +124 -0
- metadata +169 -0
data/spec/spec_helper.rb
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
require 'bundler/setup'
|
|
2
|
+
require 'caretaker'
|
|
3
|
+
|
|
4
|
+
RSpec.configure do |config|
|
|
5
|
+
# Enable flags like --only-failures and --next-failure
|
|
6
|
+
config.example_status_persistence_file_path = '.rspec_status'
|
|
7
|
+
|
|
8
|
+
# Disable RSpec exposing methods globally on `Module` and `main`
|
|
9
|
+
config.disable_monkey_patching!
|
|
10
|
+
|
|
11
|
+
config.expect_with :rspec do |c|
|
|
12
|
+
c.syntax = :expect
|
|
13
|
+
end
|
|
14
|
+
end
|
data/testing/caretaker
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
$LOAD_PATH.unshift('./lib')
|
|
4
|
+
|
|
5
|
+
require 'bundler/setup'
|
|
6
|
+
require 'optparse'
|
|
7
|
+
require 'caretaker'
|
|
8
|
+
|
|
9
|
+
# -------------------------------------------------------------------------------- #
|
|
10
|
+
# Send Mssage to Slack #
|
|
11
|
+
# -------------------------------------------------------------------------------- #
|
|
12
|
+
# This function will take the input arguments and then send the message. #
|
|
13
|
+
# -------------------------------------------------------------------------------- #
|
|
14
|
+
|
|
15
|
+
def send_message_to_caretaker(options)
|
|
16
|
+
begin
|
|
17
|
+
caretaker = Caretaker.new(options)
|
|
18
|
+
|
|
19
|
+
caretaker.init_repo if options[:init]
|
|
20
|
+
caretaker.generate_config_file if options[:config]
|
|
21
|
+
caretaker.generate_changelog if options[:generate]
|
|
22
|
+
rescue StandardError => e
|
|
23
|
+
puts "Error: #{e}"
|
|
24
|
+
puts e.backtrace
|
|
25
|
+
exit(1)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# -------------------------------------------------------------------------------- #
|
|
30
|
+
# Process Arguments #
|
|
31
|
+
# -------------------------------------------------------------------------------- #
|
|
32
|
+
# This function will process the input from the command line and work out what it #
|
|
33
|
+
# is that the user wants to see. #
|
|
34
|
+
# #
|
|
35
|
+
# This is the main processing function where all the processing logic is handled. #
|
|
36
|
+
# -------------------------------------------------------------------------------- #
|
|
37
|
+
|
|
38
|
+
def process_arguments
|
|
39
|
+
options = { :generate => true, :init => false, :config => false, :enable_categories => false, :verbose => false }
|
|
40
|
+
# Enforce the presence of
|
|
41
|
+
mandatory = %I[]
|
|
42
|
+
|
|
43
|
+
optparse = OptionParser.new do |opts|
|
|
44
|
+
opts.banner = "Usage: #{$PROGRAM_NAME}"
|
|
45
|
+
|
|
46
|
+
opts.on('-h', '--help', 'Display this screen') do
|
|
47
|
+
puts opts
|
|
48
|
+
exit(1)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
opts.on('-a', '--author string', 'Specify a default author name to use for commits (author name should be your GIthub username)') do |author|
|
|
52
|
+
options[:author] = author
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
opts.on('-c', '--config', 'Generate a .caretaker.cfg config file. [default: false]') do
|
|
56
|
+
options[:config] = true
|
|
57
|
+
options[:generate] = false
|
|
58
|
+
options[:init] = false
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
opts.on('-e', '--enable-categories', 'Enable the splitting of commit messages into categories. [default: false]') do
|
|
62
|
+
options[:enable_categories] = true
|
|
63
|
+
options[:remove_categories] = true
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
opts.on('-i', '--init', 'Initialise the repo to use Caretaker') do
|
|
67
|
+
options[:config] = false
|
|
68
|
+
options[:generate] = false
|
|
69
|
+
options[:init] = true
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
opts.on('-o', '--output string', 'Set the name of the output file. [default: CHANGELOG.md]') do |output|
|
|
73
|
+
options[:output] = output
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
opts.on('-r', '--remove-categories', 'Remove categories from commit messages. --enable-categories sets this to true') do
|
|
77
|
+
options[:remove_categories] = true
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
opts.on('-s', '--silent', 'Turn off all output from Caretaker, aka Silent Mode') do
|
|
81
|
+
options[:silent] = true
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
opts.on('-u', '--url-verification', 'Verify each url to ensure that the links are valid, skip any links that are not') do
|
|
85
|
+
options[:verify_urls] = true
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
opts.on('-w', '--words number', 'Minimum number of words needed to include a commit. [default: 1]') do |words|
|
|
89
|
+
options[:min_words] = words
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
begin
|
|
94
|
+
optparse.parse!
|
|
95
|
+
missing = mandatory.select { |param| options[param].nil? }
|
|
96
|
+
raise OptionParser::MissingArgument.new(missing.join(', ')) unless missing.empty?
|
|
97
|
+
rescue OptionParser::InvalidOption, OptionParser::MissingArgument => e
|
|
98
|
+
puts e.to_s
|
|
99
|
+
puts optparse
|
|
100
|
+
exit
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
exit 0 if send_message_to_caretaker(options)
|
|
104
|
+
|
|
105
|
+
exit 1
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
# -------------------------------------------------------------------------------- #
|
|
109
|
+
# Main() #
|
|
110
|
+
# -------------------------------------------------------------------------------- #
|
|
111
|
+
# The main function where all of the heavy lifting and script config is done. #
|
|
112
|
+
# -------------------------------------------------------------------------------- #
|
|
113
|
+
|
|
114
|
+
def main
|
|
115
|
+
process_arguments
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
main
|
|
119
|
+
|
|
120
|
+
# -------------------------------------------------------------------------------- #
|
|
121
|
+
# End of Script #
|
|
122
|
+
# -------------------------------------------------------------------------------- #
|
|
123
|
+
# This is the end - nothing more to see here. #
|
|
124
|
+
# -------------------------------------------------------------------------------- #
|
metadata
ADDED
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: caretaker
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.2.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Tim Gurney aka Wolf
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: exe
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2020-02-10 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: bundler
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - ">="
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '1.17'
|
|
20
|
+
- - "<"
|
|
21
|
+
- !ruby/object:Gem::Version
|
|
22
|
+
version: '3.0'
|
|
23
|
+
type: :development
|
|
24
|
+
prerelease: false
|
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
26
|
+
requirements:
|
|
27
|
+
- - ">="
|
|
28
|
+
- !ruby/object:Gem::Version
|
|
29
|
+
version: '1.17'
|
|
30
|
+
- - "<"
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '3.0'
|
|
33
|
+
- !ruby/object:Gem::Dependency
|
|
34
|
+
name: date
|
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - "~>"
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: 2.0.0
|
|
40
|
+
type: :development
|
|
41
|
+
prerelease: false
|
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - "~>"
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: 2.0.0
|
|
47
|
+
- !ruby/object:Gem::Dependency
|
|
48
|
+
name: rake
|
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - "~>"
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: '10.0'
|
|
54
|
+
type: :development
|
|
55
|
+
prerelease: false
|
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
57
|
+
requirements:
|
|
58
|
+
- - "~>"
|
|
59
|
+
- !ruby/object:Gem::Version
|
|
60
|
+
version: '10.0'
|
|
61
|
+
- !ruby/object:Gem::Dependency
|
|
62
|
+
name: rspec
|
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
|
64
|
+
requirements:
|
|
65
|
+
- - "~>"
|
|
66
|
+
- !ruby/object:Gem::Version
|
|
67
|
+
version: '3.0'
|
|
68
|
+
type: :development
|
|
69
|
+
prerelease: false
|
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
71
|
+
requirements:
|
|
72
|
+
- - "~>"
|
|
73
|
+
- !ruby/object:Gem::Version
|
|
74
|
+
version: '3.0'
|
|
75
|
+
- !ruby/object:Gem::Dependency
|
|
76
|
+
name: tty-spinner
|
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
|
78
|
+
requirements:
|
|
79
|
+
- - "~>"
|
|
80
|
+
- !ruby/object:Gem::Version
|
|
81
|
+
version: 0.9.0
|
|
82
|
+
type: :development
|
|
83
|
+
prerelease: false
|
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
85
|
+
requirements:
|
|
86
|
+
- - "~>"
|
|
87
|
+
- !ruby/object:Gem::Version
|
|
88
|
+
version: 0.9.0
|
|
89
|
+
- !ruby/object:Gem::Dependency
|
|
90
|
+
name: date
|
|
91
|
+
requirement: !ruby/object:Gem::Requirement
|
|
92
|
+
requirements:
|
|
93
|
+
- - "~>"
|
|
94
|
+
- !ruby/object:Gem::Version
|
|
95
|
+
version: 2.0.0
|
|
96
|
+
type: :runtime
|
|
97
|
+
prerelease: false
|
|
98
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
99
|
+
requirements:
|
|
100
|
+
- - "~>"
|
|
101
|
+
- !ruby/object:Gem::Version
|
|
102
|
+
version: 2.0.0
|
|
103
|
+
- !ruby/object:Gem::Dependency
|
|
104
|
+
name: tty-spinner
|
|
105
|
+
requirement: !ruby/object:Gem::Requirement
|
|
106
|
+
requirements:
|
|
107
|
+
- - "~>"
|
|
108
|
+
- !ruby/object:Gem::Version
|
|
109
|
+
version: 0.9.0
|
|
110
|
+
type: :runtime
|
|
111
|
+
prerelease: false
|
|
112
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
113
|
+
requirements:
|
|
114
|
+
- - "~>"
|
|
115
|
+
- !ruby/object:Gem::Version
|
|
116
|
+
version: 0.9.0
|
|
117
|
+
description: A gem for automatically generating a CHANGELOG.md from git log.
|
|
118
|
+
email:
|
|
119
|
+
- wolf@tgwolf.com
|
|
120
|
+
executables:
|
|
121
|
+
- caretaker
|
|
122
|
+
extensions: []
|
|
123
|
+
extra_rdoc_files: []
|
|
124
|
+
files:
|
|
125
|
+
- ".gitignore"
|
|
126
|
+
- ".rspec"
|
|
127
|
+
- ".rubocop.yml"
|
|
128
|
+
- ".travis.yml"
|
|
129
|
+
- CHANGELOG.md
|
|
130
|
+
- CODEOWNERS
|
|
131
|
+
- CODE_OF_CONDUCT.md
|
|
132
|
+
- CONTRIBUTING.md
|
|
133
|
+
- Gemfile
|
|
134
|
+
- LICENSE.md
|
|
135
|
+
- README.md
|
|
136
|
+
- Rakefile
|
|
137
|
+
- bin/console
|
|
138
|
+
- bin/setup
|
|
139
|
+
- caretaker.gemspec
|
|
140
|
+
- exe/caretaker
|
|
141
|
+
- lib/caretaker.rb
|
|
142
|
+
- lib/caretaker/version.rb
|
|
143
|
+
- spec/caretaker_spec.rb
|
|
144
|
+
- spec/spec_helper.rb
|
|
145
|
+
- testing/caretaker
|
|
146
|
+
homepage: https://github.com/WolfSoftware/caretaker
|
|
147
|
+
licenses:
|
|
148
|
+
- MIT
|
|
149
|
+
metadata: {}
|
|
150
|
+
post_install_message:
|
|
151
|
+
rdoc_options: []
|
|
152
|
+
require_paths:
|
|
153
|
+
- lib
|
|
154
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
155
|
+
requirements:
|
|
156
|
+
- - ">="
|
|
157
|
+
- !ruby/object:Gem::Version
|
|
158
|
+
version: '0'
|
|
159
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
160
|
+
requirements:
|
|
161
|
+
- - ">="
|
|
162
|
+
- !ruby/object:Gem::Version
|
|
163
|
+
version: '0'
|
|
164
|
+
requirements: []
|
|
165
|
+
rubygems_version: 3.1.2
|
|
166
|
+
signing_key:
|
|
167
|
+
specification_version: 4
|
|
168
|
+
summary: An automated changelog generator.
|
|
169
|
+
test_files: []
|