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.
@@ -0,0 +1,3 @@
1
+ class Caretaker
2
+ VERSION = '0.2.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,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: []