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