pedrozath-mercenary 0.3.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: abfc352cd1288064314d2d38a2a8fb159167944af3ed6321b1ac582e11381f9f
4
+ data.tar.gz: 17d7e7f5ed239b55dc7ed7f58364aa109e0f9747514465fb9d920101c86bbd69
5
+ SHA512:
6
+ metadata.gz: 574871d15def1f7ac1a920b0f19bf6b6d20c97f3da6387f080ea01fef30f505d842f273ad2c287eade19d1633e962ff6b8f07ef311718ce244b824ce2aaf9efb
7
+ data.tar.gz: d6d092702829952e1a0989b617b1edc37122d319cbb151cfc85977325cd6e11bb9a16d7ff1f5d510a91853c69834cd447428d446db2aa3bda1217657564c2411
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format progress
data/.rubocop.yml ADDED
@@ -0,0 +1,174 @@
1
+ ---
2
+ AllCops:
3
+ TargetRubyVersion: 2.0
4
+ Exclude:
5
+ - vendor/**/*
6
+ Layout/AlignArray:
7
+ Enabled: false
8
+ Layout/AlignHash:
9
+ EnforcedHashRocketStyle: table
10
+ Layout/AlignParameters:
11
+ Enabled: false
12
+ Layout/EmptyLinesAroundAccessModifier:
13
+ Enabled: false
14
+ Layout/EmptyLinesAroundModuleBody:
15
+ Enabled: false
16
+ Layout/EndOfLine:
17
+ EnforcedStyle: native
18
+ Layout/ExtraSpacing:
19
+ AllowForAlignment: true
20
+ Layout/FirstParameterIndentation:
21
+ EnforcedStyle: consistent
22
+ Layout/IndentationWidth:
23
+ Severity: error
24
+ Layout/IndentArray:
25
+ EnforcedStyle: consistent
26
+ Layout/IndentHash:
27
+ EnforcedStyle: consistent
28
+ Layout/IndentHeredoc:
29
+ Enabled: false
30
+ Exclude:
31
+ - spec/**/*
32
+ Layout/MultilineMethodCallIndentation:
33
+ EnforcedStyle: indented
34
+ Layout/MultilineOperationIndentation:
35
+ EnforcedStyle: indented
36
+ Layout/SpaceAroundOperators:
37
+ Enabled: true
38
+ Layout/SpaceInsideBrackets:
39
+ Enabled: false
40
+ Lint/AssignmentInCondition:
41
+ Exclude:
42
+ - lib/mercenary/command.rb
43
+ - lib/mercenary/option.rb
44
+ - lib/mercenary/presenter.rb
45
+ Lint/DuplicateMethods:
46
+ Exclude:
47
+ - lib/mercenary/command.rb
48
+ Lint/EndAlignment:
49
+ Severity: error
50
+ Lint/HandleExceptions:
51
+ Exclude:
52
+ - lib/mercenary/option.rb
53
+ Lint/RescueWithoutErrorClass:
54
+ Enabled: false
55
+ Exclude:
56
+ - lib/mercenary/program.rb
57
+ Lint/UselessAssignment:
58
+ Exclude:
59
+ - lib/mercenary/presenter.rb
60
+ Lint/UnreachableCode:
61
+ Severity: error
62
+ Lint/UselessAccessModifier:
63
+ Enabled: false
64
+ Lint/Void:
65
+ Enabled: false
66
+ Metrics/AbcSize:
67
+ Max: 21
68
+ Exclude:
69
+ - lib/mercenary/program.rb
70
+ Metrics/BlockLength:
71
+ Exclude:
72
+ - examples/**/*
73
+ - spec/**/*
74
+ Metrics/ClassLength:
75
+ Max: 300
76
+ Metrics/CyclomaticComplexity:
77
+ Max: 9
78
+ Metrics/LineLength:
79
+ Exclude:
80
+ - lib/mercenary/command.rb
81
+ - lib/mercenary/presenter.rb
82
+ - lib/mercenary/program.rb
83
+ - examples/**/*
84
+ - spec/**/*
85
+ - mercenary.gemspec
86
+ Max: 90
87
+ Severity: warning
88
+ Metrics/MethodLength:
89
+ Exclude:
90
+ - lib/mercenary/program.rb
91
+ CountComments: false
92
+ Max: 20
93
+ Severity: error
94
+ Metrics/ModuleLength:
95
+ Max: 240
96
+ Metrics/ParameterLists:
97
+ Max: 4
98
+ Metrics/PerceivedComplexity:
99
+ Max: 8
100
+ Naming/FileName:
101
+ Enabled: false
102
+ Naming/HeredocDelimiterNaming:
103
+ Enabled: false
104
+ Naming/PredicateName:
105
+ Exclude:
106
+ - lib/mercenary/command.rb
107
+ Style/Alias:
108
+ Enabled: false
109
+ Style/AndOr:
110
+ Severity: error
111
+ Style/Attr:
112
+ Enabled: false
113
+ Style/BracesAroundHashParameters:
114
+ Enabled: false
115
+ Style/ClassAndModuleChildren:
116
+ Enabled: false
117
+ Style/FrozenStringLiteralComment:
118
+ Exclude:
119
+ - lib/mercenary/command.rb
120
+ Enabled: true
121
+ EnforcedStyle: always
122
+ Style/Documentation:
123
+ Enabled: false
124
+ Style/DoubleNegation:
125
+ Enabled: false
126
+ Style/Encoding:
127
+ EnforcedStyle: when_needed
128
+ Style/GuardClause:
129
+ Enabled: false
130
+ Style/HashSyntax:
131
+ EnforcedStyle: hash_rockets
132
+ Severity: error
133
+ Style/IfUnlessModifier:
134
+ Enabled: false
135
+ Style/InverseMethods:
136
+ Enabled: false
137
+ Style/MethodMissing:
138
+ Exclude:
139
+ - lib/mercenary/presenter.rb
140
+ Style/ModuleFunction:
141
+ Enabled: false
142
+ Style/MultilineTernaryOperator:
143
+ Severity: error
144
+ Style/PercentLiteralDelimiters:
145
+ PreferredDelimiters:
146
+ "%q": "{}"
147
+ "%Q": "{}"
148
+ "%r": "!!"
149
+ "%s": "()"
150
+ "%w": "()"
151
+ "%W": "()"
152
+ "%x": "()"
153
+ Style/RedundantReturn:
154
+ Enabled: false
155
+ Style/RedundantSelf:
156
+ Enabled: false
157
+ Style/RegexpLiteral:
158
+ EnforcedStyle: percent_r
159
+ Style/RescueModifier:
160
+ Enabled: false
161
+ Style/SignalException:
162
+ EnforcedStyle: only_raise
163
+ Style/SingleLineMethods:
164
+ Enabled: false
165
+ Style/StringLiterals:
166
+ EnforcedStyle: double_quotes
167
+ Style/StringLiteralsInInterpolation:
168
+ EnforcedStyle: double_quotes
169
+ Style/SymbolArray:
170
+ Enabled: false
171
+ Style/TrailingCommaInLiteral:
172
+ EnforcedStyleForMultiline: consistent_comma
173
+ Style/UnneededCapitalW:
174
+ Enabled: false
data/.travis.yml ADDED
@@ -0,0 +1,17 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.0
4
+ - 2.1
5
+ - 2.2
6
+ - 2.3
7
+ - 2.4
8
+ sudo: false
9
+ cache: bundler
10
+ before_script: bundle update
11
+ script: script/cibuild
12
+ notifications:
13
+ email:
14
+ recipients:
15
+ - mercenary@jekyllrb.com
16
+ on_success: change
17
+ on_failure: change
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ # Specify your gem's dependencies in mercenary.gemspec
6
+ gemspec
data/History.markdown ADDED
@@ -0,0 +1,115 @@
1
+ ## HEAD
2
+
3
+ ### Development Fixes
4
+
5
+ * Adopt Jekyll's rubocop config for consistency (#51)
6
+
7
+ ## 0.3.6 / 2016-04-07
8
+
9
+ ### Bug Fixes
10
+
11
+ * Presenter: Options should include those from parent command (#42)
12
+
13
+ ## 0.3.5 / 2014-11-12
14
+
15
+ ### Bug Fixes
16
+
17
+ * Capture `OptionsParser::InvalidOption` and show a nice error message (#38)
18
+ * Absolute paths for requires and autoloads (#39)
19
+
20
+ ### Development Fixes
21
+
22
+ * Bump to RSpec 3 (#40)
23
+
24
+ ## 0.3.4 / 2014-07-11
25
+
26
+ ### Bug Fixes
27
+
28
+ * Use option object as key in the command's `@map` hash (#35)
29
+
30
+ ## 0.3.3 / 2014-05-07
31
+
32
+ ### Bug Fixes
33
+
34
+ * The `--version` flag should not exit with code 1, but instead code 0. (#33)
35
+
36
+ ## 0.3.2 / 2014-03-18
37
+
38
+ ### Bug Fixes
39
+
40
+ * Remove duplicate commands from help output; show aliases w/command names (#29)
41
+
42
+ ## 0.3.1 / 2014-02-21
43
+
44
+ ### Minor Enhancements
45
+
46
+ * Add `-t/--trace` to list of options in help message (#19)
47
+
48
+ ### Bug Fixes
49
+
50
+ * `Mercenary::Option` now accepts return values in the form of Class constants (#22)
51
+
52
+ ## 0.3.0 / 2014-02-20
53
+
54
+ ### Major Enhancements
55
+
56
+ * Officially drop 1.8.7 support (#14)
57
+ * Allow Commands to set their own versions (#17)
58
+ * Show subcommands, options and usage in help and attach to all commands (#18)
59
+ * Add `-t, --trace` to allow full exception backtrace to print, otherwise print just the error message (#19)
60
+
61
+ ### Minor Enhancements
62
+
63
+ * Logging state is maintained throughout process (#12)
64
+ * Tidy up Command#logger output (#21)
65
+
66
+ ### Development Fixes
67
+
68
+ * Added specs for `Program` (#13)
69
+
70
+ ## 0.2.1 / 2013-12-25
71
+
72
+ ### Bug Fixes
73
+
74
+ * Added missing comma to fix '-v' and '--version' options (#9)
75
+
76
+ ## 0.2.0 / 2013-11-30
77
+
78
+ ### Major Enhancements
79
+
80
+ * Add `Command#default_command` to specify a default command if none is given by the user at runtime (#7)
81
+
82
+ ### Minor Enhancements
83
+
84
+ * Add `Command#execute` to execute the actions of a command (#6)
85
+
86
+ ### Development Fixes
87
+
88
+ * Add standard GitHub bootstrap and cibuild scripts to `script/` (#2)
89
+
90
+ ## 0.1.0 / 2013-11-08
91
+
92
+ ### Major Enhancements
93
+
94
+ * It works!
95
+
96
+ ### Minor Enhancements
97
+
98
+ * Add a logger to `Command`
99
+ * Add `--version` switch to all programs
100
+
101
+ ### Bug Fixes
102
+
103
+ * Fix `Command#syntax` and `Command#description`'s handing of setting vs getting
104
+ * Fix load path problem in `lib/mercenary.rb`
105
+
106
+ ### Development Fixes
107
+
108
+ * Add TomDoc to everything
109
+ * Add a couple starter specs
110
+ * Add TravisCI badge
111
+ * Add Travis configuration
112
+
113
+ ## 0.0.1 / 2013-11-06
114
+
115
+ * Birthday!
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013-present Parker Moore and the mercenary contributors
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,249 @@
1
+ # Mercenary
2
+
3
+ Lightweight and flexible library for writing command-line apps in Ruby.
4
+
5
+ [![Build Status](https://secure.travis-ci.org/jekyll/mercenary.png)](https://travis-ci.org/jekyll/mercenary)
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ gem 'mercenary'
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install mercenary
20
+
21
+ **Note: Mercenary may not work with Ruby < 1.9.3.**
22
+
23
+ ## Usage
24
+
25
+ Creating programs and commands with Mercenary is easy:
26
+
27
+ ```ruby
28
+ Mercenary.program(:jekyll) do |p|
29
+ p.version Jekyll::VERSION
30
+ p.description 'Jekyll is a blog-aware, static site generator in Ruby'
31
+ p.syntax "jekyll <subcommand> [options]"
32
+
33
+ p.command(:new) do |c|
34
+ c.syntax "new PATH" # do not include the program name or super commands
35
+ c.description "Creates a new Jekyll site scaffold in PATH"
36
+ c.option 'blank', '--blank', 'Initialize the new site without any content.'
37
+
38
+ c.action do |args, options|
39
+ Jekyll::Commands::New.process(args, blank: options['blank'])
40
+ end
41
+ end
42
+
43
+ p.command(:build) do |c|
44
+ c.syntax "build [options]"
45
+ c.description "Builds your Jekyll site"
46
+
47
+ c.option 'safe', '--safe', 'Run in safe mode'
48
+ c.option 'source', '--source DIR', 'From where to collect the source files'
49
+ c.option 'destination', '--dest DIR', 'To where the compiled files should be written'
50
+
51
+ c.action do |_, options|
52
+ Jekyll::Commands::Build.process(options)
53
+ end
54
+ end
55
+
56
+ # Bring in command bundled in external gem
57
+ begin
58
+ require "jekyll-import"
59
+ JekyllImport.init_with_program(p)
60
+ rescue LoadError
61
+ end
62
+
63
+ p.default_command(:build)
64
+ end
65
+ ```
66
+
67
+ All commands have the following default options:
68
+
69
+ - `-h/--help` - show a help message
70
+ - `-v/--version` - show the program version
71
+ - `-t/--trace` - show the full backtrace when an error occurs
72
+
73
+ ## API
74
+
75
+ ### `Mercenary`
76
+
77
+ #### `.program`
78
+
79
+ Creates and executes a program. Accepts two arguments:
80
+
81
+ - `name` - program name as a Symbol
82
+ - `block` - the specification for the program, passed the program instance as an
83
+ argument.
84
+
85
+ Example is above, under the heading [Usage](#usage).
86
+
87
+ ### `Program`
88
+
89
+ `Program` is a subclass of `Command`, so it has all of the methods documented
90
+ below as well as those for `Command`.
91
+
92
+ #### `#config`
93
+
94
+ Fetches the program configuration hash.
95
+
96
+ ### `Command`
97
+
98
+ #### `#new`
99
+
100
+ Create a new command. Accepts one argument:
101
+
102
+ - `name` - the name of your command, as a symbol
103
+
104
+ #### `#version`
105
+
106
+ Sets or gets the version of the command. Accepts an optional argument:
107
+
108
+ - `version` - (optional) the version to set for the command. If present, this
109
+ becomes the new version for the command and persists.
110
+
111
+ #### `#syntax`
112
+
113
+ Sets or gets the syntax of the command. Built on parent syntaxes if a parent
114
+ exists. Accepts one optional argument:
115
+
116
+ - `syntax` - (optional) the syntax to set for the command. Will inherit from the
117
+ parent commands or program. Usually in the form of
118
+ `"command_name <SUBCOMMAND> [OPTIONS]"`
119
+
120
+ When a parent command exists, say `supercommand`, with syntax set as
121
+ `supercommand <SUBCOMMAND> [OPTIONS]`, the syntax of the command in question
122
+ will be `supercommand command_name <SUBCOMMAND> [OPTIONS]` with both
123
+ `<SUBCOMMAND>` and `[OPTIONS]` stripped out. Any text between `<` and `>` or
124
+ between `[` and `]` will be stripped from parent command syntaxes. The purpose
125
+ of this chaining is to reduce redundancy.
126
+
127
+ #### `#description`
128
+
129
+ Sets or gets the description of the command. Accepts one optional argument:
130
+
131
+ - `desc` - (optional) the description to set for the command. If
132
+ provided, will override any previous description set for the command.
133
+
134
+ #### `#default_command`
135
+
136
+ Sets or gets the default subcommand of the command to execute in the event no
137
+ subcommand is passed during execution. Accepts one optional argument:
138
+
139
+ - `command_name` - (optional) the `Symbol` name of the subcommand to be
140
+ executed. Raises an `ArgumentError` if the subcommand doesn't exist.
141
+ Overwrites previously-set default commands.
142
+
143
+ #### `#option`
144
+
145
+ Adds a new option to the command. Accepts many arguments:
146
+
147
+ - `config_key` - the configuration key that the value of this option maps to.
148
+ - `*options` - all the options, globbed, to be passed to `OptionParser`, namely the
149
+ switches and the option description. Usually in the format
150
+ `"-s", "--switch", "Sets the 'switch' flag"`.
151
+
152
+ Valid option calls:
153
+
154
+ ```ruby
155
+ cmd.option 'config_key', '-c', 'Sets the "config" flag'
156
+ cmd.option 'config_key', '--config', 'Sets the "config" flag'
157
+ cmd.option 'config_key', '-c', '--config', 'Sets the "config" flag.'
158
+ cmd.option 'config_key', '-c FILE', '--config FILE', 'The config file.'
159
+ cmd.option 'config_key', '-c FILE1[,FILE2[,FILE3...]]', '--config FILE1[,FILE2[,FILE3...]]', Array, 'The config files.'
160
+ ```
161
+
162
+ Notice that you can specify either a short switch, a long switch, or both. If
163
+ you want to accept an argument, you have to specify it in the switch strings.
164
+ The class of the argument defaults to `String`, but you can optionally set a
165
+ different class to create, e.g. `Array`, if you are expecting a particular class
166
+ in your code from this option's value. The description is also optional, but
167
+ it's highly recommended to include a description.
168
+
169
+ #### `#alias`
170
+
171
+ Specifies an alias for this command such that the alias may be used in place of
172
+ the command during execution. Accepts one argument:
173
+
174
+ - `cmd_name` - the alias name for this command as a `Symbol`
175
+
176
+ Example:
177
+
178
+ ```ruby
179
+ cmd.alias(:my_alias)
180
+ # Now `cmd` is now also executable via "my_alias"
181
+ ```
182
+
183
+ #### `#action`
184
+
185
+ Specifies a block to be executed in the event the command is specified at
186
+ runtime. The block is given two arguments:
187
+
188
+ - `args` - the non-switch arguments given from the command-line
189
+ - `options` - the options hash built via the switches passed
190
+
191
+ **Note that actions are additive**, meaning any new call to `#action` will
192
+ result in another action to be executed at runtime. Actions will be executed in
193
+ the order they are specified in.
194
+
195
+ Example:
196
+
197
+ ```ruby
198
+ cmd.action do |args, options|
199
+ # do something!
200
+ end
201
+ ```
202
+
203
+ #### `#logger`
204
+
205
+ Access the logger for this command. Useful for outputting information to STDOUT.
206
+ Accepts one optional argument:
207
+
208
+ - `level` - (optional) the severity threshold at which to begin logging. Uses
209
+ Ruby's built-in
210
+ [`Logger`](http://www.ruby-doc.org/stdlib-2.1.0/libdoc/logger/rdoc/Logger.html)
211
+ levels.
212
+
213
+ Log level defaults to `Logger::INFO`.
214
+
215
+ Examples:
216
+
217
+ ```ruby
218
+ cmd.logger(Logger::DEBUG)
219
+ cmd.logger.debug "My debug message."
220
+ cmd.logger.info "My informative message."
221
+ cmd.logger.warn "ACHTUNG!!"
222
+ cmd.logger.error "Something terrible has happened."
223
+ cmd.logger.fatal "I can't continue doing what I'm doing."
224
+ ```
225
+
226
+ #### `#command`
227
+
228
+ Creates a new subcommand for the current command. Accepts two arguments:
229
+
230
+ - `cmd_name` - the command name, as a Symbol
231
+ - `block` - the specification of the subcommand in a block
232
+
233
+ Example:
234
+
235
+ ```ruby
236
+ my_command.command(:my_subcommand) do |subcmd|
237
+ subcmd.description 'My subcommand'
238
+ subcmd.syntax 'my_subcommand [OPTIONS]'
239
+ # ...
240
+ end
241
+ ```
242
+
243
+ ## Contributing
244
+
245
+ 1. Fork it
246
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
247
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
248
+ 4. Push to the branch (`git push origin my-new-feature`)
249
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bundler/gem_tasks"
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ $LOAD_PATH.unshift File.join(__dir__, "..", "lib")
5
+
6
+ require "mercenary"
7
+
8
+ # This example sets the logging mode of mercenary to
9
+ # debug. Logging messages from "p.logger.debug" will
10
+ # be output to STDOUT.
11
+
12
+ Mercenary.program(:help_dialogue) do |p|
13
+ p.version "2.0.1"
14
+ p.description "An example of the help dialogue in Mercenary"
15
+ p.syntax "help_dialogue <subcommand>"
16
+
17
+ p.command(:some_subcommand) do |c|
18
+ c.version "1.4.2"
19
+ c.syntax "some_subcommand <subcommand> [options]"
20
+ c.description "Some subcommand to do something"
21
+ c.option "an_option", "-o", "--option", "Some option"
22
+ c.alias(:blah)
23
+
24
+ c.command(:yet_another_sub) do |f|
25
+ f.syntax "yet_another_sub [options]"
26
+ f.description "Do amazing things"
27
+ f.option "blah", "-b", "--blah", "Trigger blah flag"
28
+ f.option "heh", "-H ARG", "--heh ARG", "Give a heh"
29
+
30
+ f.action do |args, options|
31
+ print "Args: "
32
+ p args
33
+ print "Opts: "
34
+ p options
35
+ end
36
+ end
37
+ end
38
+
39
+ p.command(:another_subcommand) do |c|
40
+ c.syntax "another_subcommand <subcommand> [options]"
41
+ c.description "Another subcommand to do something different."
42
+ c.option "an_option", "-O", "--option", "Some option"
43
+ c.option "another_options", "--pluginzzz", "Set where the plugins should be found from"
44
+ end
45
+ end
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ $LOAD_PATH.unshift File.join(__dir__, "..", "lib")
5
+
6
+ require "mercenary"
7
+
8
+ # This example sets the logging mode of mercenary to
9
+ # debug. Logging messages from "p.logger.debug" will
10
+ # be output to STDOUT.
11
+
12
+ Mercenary.program(:logger_output) do |p|
13
+ p.version "5.2.6"
14
+ p.description "An example of turning on logging for Mercenary."
15
+ p.syntax "logger_output"
16
+
17
+ p.logger.info "The default log level is INFO. So this will output."
18
+ p.logger.debug "Since DEBUG is below INFO, this will not output."
19
+
20
+ p.logger(Logger::DEBUG)
21
+ p.logger.debug "Logger level now set to DEBUG. So everything will output."
22
+
23
+ p.logger.debug "Example of DEBUG level message."
24
+ p.logger.info "Example of INFO level message."
25
+ p.logger.warn "Example of WARN level message."
26
+ p.logger.error "Example of ERROR level message."
27
+ p.logger.fatal "Example of FATAL level message."
28
+ p.logger.unknown "Example of UNKNOWN level message."
29
+
30
+ p.action do |_args, _options|
31
+ p.logger(Logger::INFO)
32
+ p.logger.debug "Logger level back to INFO. This line will not output."
33
+ p.logger.info "This INFO message will output."
34
+ end
35
+ end