hammer_cli 0.4.0 → 0.5.1
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 +4 -4
- data/bin/hammer +1 -1
- data/doc/release_notes.md +9 -0
- data/lib/hammer_cli/abstract.rb +14 -4
- data/lib/hammer_cli/context.rb +13 -0
- data/lib/hammer_cli/defaults.rb +83 -0
- data/lib/hammer_cli/defaults_commands.rb +160 -0
- data/lib/hammer_cli/options/option_definition.rb +3 -3
- data/lib/hammer_cli/output/adapter/json.rb +13 -0
- data/lib/hammer_cli/output/adapter/yaml.rb +13 -0
- data/lib/hammer_cli/settings.rb +1 -0
- data/lib/hammer_cli/version.rb +1 -1
- data/lib/hammer_cli.rb +2 -0
- data/locale/de/hammer-cli.edit.po +251 -139
- data/locale/de/hammer-cli.po +81 -7
- data/locale/en/hammer-cli.edit.po +95 -7
- data/locale/en/hammer-cli.po +79 -5
- data/locale/en_GB/hammer-cli.edit.po +248 -136
- data/locale/en_GB/hammer-cli.po +81 -7
- data/locale/es/hammer-cli.edit.po +250 -138
- data/locale/es/hammer-cli.po +81 -7
- data/locale/fr/hammer-cli.edit.po +250 -138
- data/locale/fr/hammer-cli.po +81 -7
- data/locale/hammer-cli.pot +104 -8
- data/locale/it/hammer-cli.edit.po +249 -137
- data/locale/it/hammer-cli.po +81 -7
- data/locale/ja/hammer-cli.edit.po +248 -136
- data/locale/ja/hammer-cli.po +81 -7
- data/locale/ko/hammer-cli.edit.po +248 -136
- data/locale/ko/hammer-cli.po +81 -7
- data/locale/pt_BR/hammer-cli.edit.po +250 -137
- data/locale/pt_BR/hammer-cli.po +81 -7
- data/locale/ru/hammer-cli.edit.po +249 -137
- data/locale/ru/hammer-cli.po +81 -7
- data/locale/zh_CN/hammer-cli.edit.po +248 -136
- data/locale/zh_CN/hammer-cli.po +82 -8
- data/locale/zh_TW/hammer-cli.edit.po +248 -136
- data/locale/zh_TW/hammer-cli.po +81 -7
- data/test/functional/defaults_test.rb +177 -0
- data/test/reports/TEST-Fields-ContainerField-display-.xml +1 -1
- data/test/reports/TEST-Fields-ContainerField-display-blank-is-allowed.xml +5 -5
- data/test/reports/TEST-Fields-ContainerField-display-blank-is-not-allowed.xml +5 -5
- data/test/reports/TEST-Fields-ContainerField.xml +1 -1
- data/test/reports/TEST-Fields-Field-display-.xml +1 -1
- data/test/reports/TEST-Fields-Field-display-blank-is-allowed.xml +3 -3
- data/test/reports/TEST-Fields-Field-display-blank-is-not-allowed.xml +3 -3
- data/test/reports/TEST-Fields-Field-hide-blank-.xml +3 -3
- data/test/reports/TEST-Fields-Field-parameters.xml +2 -2
- data/test/reports/TEST-Fields-Field.xml +4 -4
- data/test/reports/TEST-Fields-Label-display-.xml +7 -0
- data/test/reports/TEST-Fields-Label-display-blank-is-allowed.xml +15 -0
- data/test/reports/TEST-Fields-Label-display-blank-is-not-allowed.xml +15 -0
- data/test/reports/TEST-Fields-Label.xml +7 -0
- data/test/reports/TEST-HammerCLI-AbstractCommand-build-options.xml +5 -5
- data/test/reports/TEST-HammerCLI-AbstractCommand-exception-handler.xml +4 -4
- data/test/reports/TEST-HammerCLI-AbstractCommand-logging.xml +10 -8
- data/test/reports/TEST-HammerCLI-AbstractCommand-option-builder.xml +3 -3
- data/test/reports/TEST-HammerCLI-AbstractCommand-options.xml +3 -3
- data/test/reports/TEST-HammerCLI-AbstractCommand-output.xml +7 -7
- data/test/reports/TEST-HammerCLI-AbstractCommand-subcommand-behavior-remove-subcommand.xml +3 -3
- data/test/reports/TEST-HammerCLI-AbstractCommand-subcommand-behavior-subcommand-.xml +4 -4
- data/test/reports/TEST-HammerCLI-AbstractCommand-subcommand-behavior-subcommand.xml +3 -3
- data/test/reports/TEST-HammerCLI-AbstractCommand-subcommand-behavior.xml +1 -1
- data/test/reports/TEST-HammerCLI-AbstractCommand.xml +3 -3
- data/test/reports/TEST-HammerCLI-Apipie-Command-options.xml +3 -3
- data/test/reports/TEST-HammerCLI-Apipie-Command-reload-apipie-cache.xml +11 -0
- data/test/reports/TEST-HammerCLI-Apipie-Command-resource-defined.xml +2 -2
- data/test/reports/TEST-HammerCLI-Apipie-Command-setting-resources.xml +7 -7
- data/test/reports/TEST-HammerCLI-Apipie-Command.xml +2 -2
- data/test/reports/TEST-HammerCLI-Apipie-OptionBuilder-aliasing-resources.xml +4 -4
- data/test/reports/TEST-HammerCLI-Apipie-OptionBuilder-filtering-options.xml +5 -5
- data/test/reports/TEST-HammerCLI-Apipie-OptionBuilder-required-options.xml +3 -3
- data/test/reports/TEST-HammerCLI-Apipie-OptionBuilder-setting-correct-normalizers.xml +8 -2
- data/test/reports/TEST-HammerCLI-Apipie-OptionBuilder-setting-referenced-resources.xml +9 -0
- data/test/reports/TEST-HammerCLI-Apipie-OptionBuilder-with-hash-params.xml +3 -3
- data/test/reports/TEST-HammerCLI-Apipie-OptionBuilder-with-one-simple-param.xml +5 -5
- data/test/reports/TEST-HammerCLI-Apipie-OptionBuilder.xml +1 -1
- data/test/reports/TEST-HammerCLI-Apipie-OptionDefinition-referenced-resource.xml +13 -0
- data/test/reports/TEST-HammerCLI-Apipie-OptionDefinition.xml +7 -0
- data/test/reports/TEST-HammerCLI-Completer-command-completion.xml +12 -12
- data/test/reports/TEST-HammerCLI-Completer-option-value-completion.xml +6 -6
- data/test/reports/TEST-HammerCLI-Completer-subcommand-completion.xml +7 -7
- data/test/reports/TEST-HammerCLI-Completer.xml +1 -1
- data/test/reports/TEST-HammerCLI-CompleterLine-line-complete.xml +10 -10
- data/test/reports/TEST-HammerCLI-CompleterLine-splitting-words.xml +12 -12
- data/test/reports/TEST-HammerCLI-CompleterLine.xml +1 -1
- data/test/reports/TEST-HammerCLI-CompleterWord-complete-.xml +9 -9
- data/test/reports/TEST-HammerCLI-CompleterWord-quote.xml +5 -5
- data/test/reports/TEST-HammerCLI-CompleterWord-quoted-.xml +4 -4
- data/test/reports/TEST-HammerCLI-CompleterWord.xml +1 -1
- data/test/reports/TEST-HammerCLI-Connection.xml +8 -8
- data/test/reports/TEST-HammerCLI-Defaults.xml +19 -0
- data/test/reports/TEST-HammerCLI-ExceptionHandler.xml +8 -8
- data/test/reports/TEST-HammerCLI-I18n.xml +3 -3
- data/test/reports/TEST-HammerCLI-MainCommand-loading-context-password.xml +3 -3
- data/test/reports/TEST-HammerCLI-MainCommand-loading-context-username.xml +3 -3
- data/test/reports/TEST-HammerCLI-MainCommand-loading-context-verbose.xml +2 -2
- data/test/reports/TEST-HammerCLI-MainCommand-loading-context.xml +1 -1
- data/test/reports/TEST-HammerCLI-MainCommand.xml +1 -1
- data/test/reports/TEST-HammerCLI-Modules-find-by-name.xml +4 -4
- data/test/reports/TEST-HammerCLI-Modules-load-a-module-module-not-found.xml +4 -4
- data/test/reports/TEST-HammerCLI-Modules-load-a-module-module-runtime-exception.xml +4 -4
- data/test/reports/TEST-HammerCLI-Modules-load-a-module-success.xml +5 -5
- data/test/reports/TEST-HammerCLI-Modules-load-a-module.xml +1 -1
- data/test/reports/TEST-HammerCLI-Modules-load-all-modules.xml +4 -2
- data/test/reports/TEST-HammerCLI-Modules-names.xml +4 -4
- data/test/reports/TEST-HammerCLI-Modules.xml +1 -1
- data/test/reports/TEST-HammerCLI-OptionBuilderContainer.0.xml +5 -1
- data/test/reports/TEST-HammerCLI-OptionBuilderContainer.xml +1 -5
- data/test/reports/TEST-HammerCLI-Options-Matcher.xml +17 -0
- data/test/reports/TEST-HammerCLI-Options-Normalizers-abstract.xml +2 -2
- data/test/reports/TEST-HammerCLI-Options-Normalizers-bool.xml +13 -13
- data/test/reports/TEST-HammerCLI-Options-Normalizers-datetime.xml +6 -6
- data/test/reports/TEST-HammerCLI-Options-Normalizers-enum.xml +5 -5
- data/test/reports/TEST-HammerCLI-Options-Normalizers-enumlist.xml +8 -8
- data/test/reports/TEST-HammerCLI-Options-Normalizers-json-input.xml +5 -5
- data/test/reports/TEST-HammerCLI-Options-Normalizers-key-value-list.xml +26 -6
- data/test/reports/TEST-HammerCLI-Options-Normalizers-list.xml +5 -5
- data/test/reports/TEST-HammerCLI-Options-Normalizers-number.xml +11 -0
- data/test/reports/TEST-HammerCLI-Options-Normalizers.xml +1 -1
- data/test/reports/TEST-HammerCLI-Options-OptionDefinition-context.xml +2 -2
- data/test/reports/TEST-HammerCLI-Options-OptionDefinition-deprecated-options.xml +11 -0
- data/test/reports/TEST-HammerCLI-Options-OptionDefinition-formatters.xml +3 -3
- data/test/reports/TEST-HammerCLI-Options-OptionDefinition.xml +1 -1
- data/test/reports/TEST-HammerCLI-Output-Adapter-Abstract-error-messages.xml +5 -5
- data/test/reports/TEST-HammerCLI-Output-Adapter-Abstract-messages.xml +3 -3
- data/test/reports/TEST-HammerCLI-Output-Adapter-Abstract-test-data-for-field.xml +5 -5
- data/test/reports/TEST-HammerCLI-Output-Adapter-Abstract.xml +6 -6
- data/test/reports/TEST-HammerCLI-Output-Adapter-Base-print-collection-show-ids.xml +2 -2
- data/test/reports/TEST-HammerCLI-Output-Adapter-Base-print-collection.xml +11 -11
- data/test/reports/TEST-HammerCLI-Output-Adapter-Base.xml +1 -1
- data/test/reports/TEST-HammerCLI-Output-Adapter-CSValues-print-collection-formatters.xml +3 -3
- data/test/reports/TEST-HammerCLI-Output-Adapter-CSValues-print-collection-handle-fields-with-collections.xml +4 -4
- data/test/reports/TEST-HammerCLI-Output-Adapter-CSValues-print-collection-handle-fields-with-containers.xml +3 -3
- data/test/reports/TEST-HammerCLI-Output-Adapter-CSValues-print-collection-handle-ids.xml +3 -3
- data/test/reports/TEST-HammerCLI-Output-Adapter-CSValues-print-collection.xml +3 -3
- data/test/reports/TEST-HammerCLI-Output-Adapter-CSValues-print-message.xml +3 -3
- data/test/reports/TEST-HammerCLI-Output-Adapter-CSValues.xml +1 -1
- data/test/reports/TEST-HammerCLI-Output-Adapter-Json-print-collection-show-ids.xml +9 -0
- data/test/reports/TEST-HammerCLI-Output-Adapter-Json-print-collection.xml +27 -0
- data/test/reports/TEST-HammerCLI-Output-Adapter-Json-print-message.xml +11 -0
- data/test/reports/TEST-HammerCLI-Output-Adapter-Json.xml +7 -0
- data/test/reports/TEST-HammerCLI-Output-Adapter-Table-print-collection-column-width.xml +11 -5
- data/test/reports/TEST-HammerCLI-Output-Adapter-Table-print-collection-formatters.xml +3 -3
- data/test/reports/TEST-HammerCLI-Output-Adapter-Table-print-collection-handle-ids.xml +7 -3
- data/test/reports/TEST-HammerCLI-Output-Adapter-Table-print-collection-sort-columns.xml +2 -2
- data/test/reports/TEST-HammerCLI-Output-Adapter-Table-print-collection.xml +3 -3
- data/test/reports/TEST-HammerCLI-Output-Adapter-Table.xml +1 -1
- data/test/reports/TEST-HammerCLI-Output-Adapter-Yaml-print-collection-show-ids.xml +9 -0
- data/test/reports/TEST-HammerCLI-Output-Adapter-Yaml-print-collection.xml +27 -0
- data/test/reports/TEST-HammerCLI-Output-Adapter-Yaml-print-message.xml +11 -0
- data/test/reports/TEST-HammerCLI-Output-Adapter-Yaml.xml +7 -0
- data/test/reports/TEST-HammerCLI-Output-Definition-empty-.xml +3 -3
- data/test/reports/TEST-HammerCLI-Output-Definition.xml +3 -3
- data/test/reports/TEST-HammerCLI-Output-Dsl-collection.xml +4 -4
- data/test/reports/TEST-HammerCLI-Output-Dsl-custom-fields.xml +3 -3
- data/test/reports/TEST-HammerCLI-Output-Dsl-fields.xml +5 -5
- data/test/reports/TEST-HammerCLI-Output-Dsl-label.xml +4 -4
- data/test/reports/TEST-HammerCLI-Output-Dsl-path-definition.xml +4 -4
- data/test/reports/TEST-HammerCLI-Output-Dsl.xml +2 -2
- data/test/reports/TEST-HammerCLI-Output-FieldFilter.xml +4 -4
- data/test/reports/TEST-HammerCLI-Output-Formatters-BooleanFormatter.xml +3 -3
- data/test/reports/TEST-HammerCLI-Output-Formatters-ColorFormatter.xml +2 -2
- data/test/reports/TEST-HammerCLI-Output-Formatters-DateFormatter.xml +3 -3
- data/test/reports/TEST-HammerCLI-Output-Formatters-FieldFormatter.xml +4 -4
- data/test/reports/TEST-HammerCLI-Output-Formatters-FormatterContainer.xml +4 -4
- data/test/reports/TEST-HammerCLI-Output-Formatters-FormatterLibrary.xml +3 -3
- data/test/reports/TEST-HammerCLI-Output-Formatters-KeyValueFormatter.xml +4 -4
- data/test/reports/TEST-HammerCLI-Output-Formatters-ListFormatter.xml +4 -4
- data/test/reports/TEST-HammerCLI-Output-Formatters-LongTextFormatter.xml +4 -4
- data/test/reports/TEST-HammerCLI-Output-Output-adapters.xml +6 -6
- data/test/reports/TEST-HammerCLI-Output-Output-data.xml +5 -5
- data/test/reports/TEST-HammerCLI-Output-Output-formatters.xml +2 -2
- data/test/reports/TEST-HammerCLI-Output-Output-messages.xml +7 -7
- data/test/reports/TEST-HammerCLI-Output-Output.xml +1 -1
- data/test/reports/TEST-HammerCLI-Output-RecordCollection.xml +4 -4
- data/test/reports/TEST-HammerCLI-Settings-load-from-paths.xml +5 -5
- data/test/reports/TEST-HammerCLI-Settings.xml +10 -10
- data/test/reports/TEST-HammerCLI-ShellHistory-loading-old-history.xml +3 -3
- data/test/reports/TEST-HammerCLI-ShellHistory-saving-history.xml +5 -5
- data/test/reports/TEST-HammerCLI-ShellHistory.xml +1 -1
- data/test/reports/TEST-HammerCLI-constant-path.xml +15 -0
- data/test/reports/{TEST-String-interactive-.xml → TEST-HammerCLI-interactive-.xml} +4 -4
- data/test/reports/TEST-HammerCLI.xml +7 -0
- data/test/reports/TEST-Logging-LogEvent-filtering.xml +9 -0
- data/test/reports/TEST-Logging-LogEvent.xml +7 -0
- data/test/reports/TEST-MiniTest-Spec.xml +1 -1
- data/test/reports/TEST-String-camelize.xml +3 -3
- data/test/reports/TEST-String-constantize.xml +15 -0
- data/test/reports/TEST-String-formatting.xml +6 -6
- data/test/reports/TEST-String-indent.xml +3 -3
- data/test/reports/TEST-String-underscore.xml +13 -0
- data/test/reports/TEST-String.xml +1 -1
- data/test/reports/TEST-commands-defaults-add.xml +21 -0
- data/test/reports/TEST-commands-defaults-delete.xml +11 -0
- data/test/reports/TEST-commands-defaults-list.xml +11 -0
- data/test/reports/TEST-commands-defaults-providers.xml +11 -0
- data/test/reports/TEST-commands.xml +7 -0
- data/test/reports/TEST-constraints-HammerCLI-Validator-AllConstraint-exist-.xml +4 -4
- data/test/reports/TEST-constraints-HammerCLI-Validator-AllConstraint.xml +1 -1
- data/test/reports/TEST-constraints-HammerCLI-Validator-AnyConstraint-exist-.xml +4 -4
- data/test/reports/TEST-constraints-HammerCLI-Validator-AnyConstraint.xml +1 -1
- data/test/reports/TEST-constraints-HammerCLI-Validator-BaseConstraint-exist-.xml +2 -2
- data/test/reports/TEST-constraints-HammerCLI-Validator-BaseConstraint-rejected.xml +4 -4
- data/test/reports/TEST-constraints-HammerCLI-Validator-BaseConstraint-required.xml +4 -4
- data/test/reports/TEST-constraints-HammerCLI-Validator-BaseConstraint.xml +1 -1
- data/test/reports/TEST-constraints.xml +1 -1
- data/test/unit/apipie/command_test.rb +1 -0
- data/test/unit/defaults_test.rb +45 -0
- data/test/unit/fixtures/defaults/defaults.yml +6 -0
- data/test/unit/output/adapter/json_test.rb +30 -0
- data/test/unit/output/adapter/yaml_test.rb +28 -0
- metadata +258 -186
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ed76c22f08106cd7634ad1fed540dcf36fd1c5df
|
|
4
|
+
data.tar.gz: 9940232f3680440d7e8b86d6f102d1d03c87c8ba
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5d48b14bfa16dc4ecbf0cc41e6acd97984597ac2ffca027220b9f01dd7139f35bb1c040b99a44669ecca0e229c90a4017513779150d9019c6d8e8d6383c8386e
|
|
7
|
+
data.tar.gz: d57b562879af67ef096b18e5010ca0ac158b6ee692275aeb4e26aaebfbdb5ec70ee46e82ec28f1e2f2e76754189d9946b032c4ce82211e8207c27d40e2870fc7
|
data/bin/hammer
CHANGED
|
@@ -122,4 +122,4 @@ HammerCLI::I18n.domains.each do |domain|
|
|
|
122
122
|
logger.debug "'#{domain.type}' files for locale domain '#{domain.domain_name}' loaded from '#{File.expand_path(domain.locale_dir)}'"
|
|
123
123
|
end
|
|
124
124
|
|
|
125
|
-
exit HammerCLI::MainCommand.run || HammerCLI::EX_OK
|
|
125
|
+
exit HammerCLI::MainCommand.run(File.basename($0), ARGV, HammerCLI.context) || HammerCLI::EX_OK
|
data/doc/release_notes.md
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
Release notes
|
|
2
2
|
=============
|
|
3
3
|
|
|
4
|
+
### 0.5.1 (2015-12-15)
|
|
5
|
+
* Minor release to fix wrongly packaged gem
|
|
6
|
+
|
|
7
|
+
### 0.5.0 (2015-12-14)
|
|
8
|
+
* Added defaults options in hammer cli ([#8015](http://projects.theforeman.org/issues/8015))
|
|
9
|
+
* Do not display hidden options in --help ([#12693](http://projects.theforeman.org/issues/12693))
|
|
10
|
+
* Refs #10564 - interpolate option in i18n string correctly ([#10564](http://projects.theforeman.org/issues/10564))
|
|
11
|
+
* Json and yaml formatting for messages ([#11355](http://projects.theforeman.org/issues/11355))
|
|
12
|
+
|
|
4
13
|
### 0.4.0 (2015-09-21)
|
|
5
14
|
* Pull in the downstream translations ([#11184](http://projects.theforeman.org/issues/11184))
|
|
6
15
|
* Abort when custom config file is not found ([#11158](http://projects.theforeman.org/issues/11158))
|
data/lib/hammer_cli/abstract.rb
CHANGED
|
@@ -5,7 +5,6 @@ require 'hammer_cli/clamp'
|
|
|
5
5
|
require 'hammer_cli/subcommand'
|
|
6
6
|
require 'hammer_cli/options/matcher'
|
|
7
7
|
require 'logging'
|
|
8
|
-
|
|
9
8
|
module HammerCLI
|
|
10
9
|
|
|
11
10
|
class AbstractCommand < Clamp::Command
|
|
@@ -71,6 +70,7 @@ module HammerCLI
|
|
|
71
70
|
items.sort! do |a, b|
|
|
72
71
|
a.help[0] <=> b.help[0]
|
|
73
72
|
end
|
|
73
|
+
items.reject! {|item| item.respond_to?(:hidden?) && item.hidden?}
|
|
74
74
|
|
|
75
75
|
puts "\n#{heading}:"
|
|
76
76
|
|
|
@@ -233,10 +233,12 @@ module HammerCLI
|
|
|
233
233
|
end
|
|
234
234
|
|
|
235
235
|
def all_options
|
|
236
|
-
self.class.recognised_options.inject({}) do |
|
|
237
|
-
|
|
238
|
-
|
|
236
|
+
@all_options ||= self.class.recognised_options.inject({}) do |hash, opt|
|
|
237
|
+
hash[opt.attribute_name] = send(opt.read_method)
|
|
238
|
+
hash[opt.attribute_name] = add_custom_defaults(opt.attribute_name) if hash[opt.attribute_name].nil?
|
|
239
|
+
hash
|
|
239
240
|
end
|
|
241
|
+
@all_options
|
|
240
242
|
end
|
|
241
243
|
|
|
242
244
|
def options
|
|
@@ -245,6 +247,14 @@ module HammerCLI
|
|
|
245
247
|
|
|
246
248
|
private
|
|
247
249
|
|
|
250
|
+
def add_custom_defaults(attr)
|
|
251
|
+
if context[:defaults]
|
|
252
|
+
value = context[:defaults].get_defaults(attr)
|
|
253
|
+
logger.info("Custom default value #{value} was used for attribute #{attr}") if value
|
|
254
|
+
value
|
|
255
|
+
end
|
|
256
|
+
end
|
|
257
|
+
|
|
248
258
|
def self.inherited_output_definition
|
|
249
259
|
od = nil
|
|
250
260
|
if superclass.respond_to? :output_definition
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
require 'hammer_cli/defaults_commands'
|
|
2
|
+
module HammerCLI
|
|
3
|
+
DEFAULT_FILE = "#{Dir.home}/.hammer/defaults.yml"
|
|
4
|
+
|
|
5
|
+
class Defaults
|
|
6
|
+
class DefaultsError < StandardError; end
|
|
7
|
+
class DefaultsPathError < DefaultsError; end
|
|
8
|
+
|
|
9
|
+
attr_reader :defaults_settings
|
|
10
|
+
|
|
11
|
+
def initialize(settings, file_path = nil)
|
|
12
|
+
|
|
13
|
+
@defaults_settings = settings || {}
|
|
14
|
+
@path = file_path || DEFAULT_FILE
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def register_provider(provider)
|
|
18
|
+
providers[provider.provider_name.to_s] = provider
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def providers
|
|
22
|
+
@providers ||= {}
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def delete_default_from_conf(param)
|
|
26
|
+
conf_file = YAML.load_file(path)
|
|
27
|
+
conf_file[:defaults].delete(param)
|
|
28
|
+
write_to_file conf_file
|
|
29
|
+
conf_file
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def add_defaults_to_conf(default_options, provider)
|
|
33
|
+
create_default_file if defaults_settings.nil?
|
|
34
|
+
defaults = YAML.load_file(path)
|
|
35
|
+
defaults[:defaults] ||= {}
|
|
36
|
+
default_options.each do |key, value|
|
|
37
|
+
key = key.to_sym
|
|
38
|
+
defaults[:defaults][key] = value ? {:value => value,} : {:provider => provider}
|
|
39
|
+
end
|
|
40
|
+
write_to_file defaults
|
|
41
|
+
defaults
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def get_defaults(opt)
|
|
45
|
+
option = opt
|
|
46
|
+
option = opt.gsub("option_",'') if opt.include? "option_"
|
|
47
|
+
unless defaults_settings.nil? || defaults_settings[option.to_sym].nil?
|
|
48
|
+
if defaults_settings[option.to_sym][:provider]
|
|
49
|
+
providers[defaults_settings[option.to_sym][:provider]].get_defaults(option.to_sym)
|
|
50
|
+
else
|
|
51
|
+
defaults_settings[option.to_sym][:value]
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def write_to_file(defaults)
|
|
57
|
+
File.open(path,'w') do |h|
|
|
58
|
+
h.write defaults.to_yaml
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
protected
|
|
63
|
+
|
|
64
|
+
attr_reader :path
|
|
65
|
+
|
|
66
|
+
def create_default_file
|
|
67
|
+
if Dir.exist?(File.dirname(@path))
|
|
68
|
+
new_file = File.new(path, "w")
|
|
69
|
+
new_file.write ":defaults:"
|
|
70
|
+
new_file.close
|
|
71
|
+
else
|
|
72
|
+
raise DefaultsPathError.new(_("Couldn't create %s please create the path before defaults are enabled.") % path)
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def self.defaults
|
|
78
|
+
@defaults ||= Defaults.new(HammerCLI::Settings.settings[:defaults])
|
|
79
|
+
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
HammerCLI::MainCommand.subcommand "defaults", _("Defaults management"), HammerCLI::DefaultsCommand
|
|
83
|
+
end
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
require 'hammer_cli'
|
|
2
|
+
require 'yaml'
|
|
3
|
+
module HammerCLI
|
|
4
|
+
class BaseDefaultsProvider
|
|
5
|
+
attr_reader :provider_name, :supported_defaults, :description
|
|
6
|
+
|
|
7
|
+
def initialize
|
|
8
|
+
@provider_name = nil
|
|
9
|
+
@supported_defaults = nil
|
|
10
|
+
@description = 'Abstract provider'
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def param_supported?(param)
|
|
14
|
+
@supported_defaults.nil? || @supported_defaults.any? {|s| s.to_s == param}
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def get_defaults
|
|
18
|
+
raise NotImplementedError
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
class DefaultsCommand < HammerCLI::AbstractCommand
|
|
23
|
+
class ProvidersDefaultsCommand < HammerCLI::DefaultsCommand
|
|
24
|
+
command_name 'providers'
|
|
25
|
+
desc _('List all the providers')
|
|
26
|
+
|
|
27
|
+
def execute
|
|
28
|
+
data = context[:defaults].providers.map do |key, val|
|
|
29
|
+
{
|
|
30
|
+
:provider => key.to_s,
|
|
31
|
+
:defaults => (val.supported_defaults || ['*']).map(&:to_s),
|
|
32
|
+
:description => val.description
|
|
33
|
+
}
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
fields = HammerCLI::Output::Dsl.new.build do
|
|
37
|
+
field :provider, _('Provider')
|
|
38
|
+
field :defaults, _('Supported defaults'), Fields::List
|
|
39
|
+
field :description, _('Description')
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
definition = HammerCLI::Output::Definition.new
|
|
43
|
+
definition.append(fields)
|
|
44
|
+
|
|
45
|
+
print_collection(definition, data)
|
|
46
|
+
HammerCLI::EX_OK
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def adapter
|
|
50
|
+
@context[:adapter] || :table
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
class ListDefaultsCommand < HammerCLI::DefaultsCommand
|
|
55
|
+
command_name 'list'
|
|
56
|
+
desc _('List all the default parameters')
|
|
57
|
+
|
|
58
|
+
def execute
|
|
59
|
+
data = context[:defaults].defaults_settings.map do |key, val|
|
|
60
|
+
{
|
|
61
|
+
:parameter => key.to_s,
|
|
62
|
+
:value => val[:provider] ? "Provided by: " + val[:provider].to_s.capitalize : val[:value]
|
|
63
|
+
}
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
fields = HammerCLI::Output::Dsl.new.build do
|
|
67
|
+
field :parameter, _('Parameter')
|
|
68
|
+
field :value, _('Value'), Fields::List
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
definition = HammerCLI::Output::Definition.new
|
|
72
|
+
definition.append(fields)
|
|
73
|
+
|
|
74
|
+
print_collection(definition, data)
|
|
75
|
+
HammerCLI::EX_OK
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def adapter
|
|
79
|
+
@context[:adapter] || :table
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
class DeleteDefaultsCommand < HammerCLI::DefaultsCommand
|
|
84
|
+
command_name 'delete'
|
|
85
|
+
|
|
86
|
+
desc _('Delete a default param')
|
|
87
|
+
option "--param-name", "OPTION_NAME", _("The name of the default option"), :required => true
|
|
88
|
+
|
|
89
|
+
def execute
|
|
90
|
+
if context[:defaults].defaults_settings && context[:defaults].defaults_settings[option_param_name.to_sym]
|
|
91
|
+
context[:defaults].delete_default_from_conf(option_param_name.to_sym)
|
|
92
|
+
param_deleted(option_param_name)
|
|
93
|
+
else
|
|
94
|
+
variable_not_found
|
|
95
|
+
end
|
|
96
|
+
HammerCLI::EX_OK
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
class AddDefaultsCommand < HammerCLI::DefaultsCommand
|
|
101
|
+
command_name 'add'
|
|
102
|
+
|
|
103
|
+
desc _('Add a default parameter to config')
|
|
104
|
+
option "--param-name", "OPTION_NAME", _("The name of the default option (e.g. organization_id)."), :required => true
|
|
105
|
+
option "--param-value", "OPTION_VALUE", _("The value for the default option")
|
|
106
|
+
option "--provider", "OPTION_PROVIDER", _("The name of the provider providing the value. For list available providers see `hammer defaults providers`.")
|
|
107
|
+
|
|
108
|
+
def execute
|
|
109
|
+
if option_provider.nil? && option_param_value.nil? || !option_provider.nil? && !option_param_value.nil?
|
|
110
|
+
bad_input
|
|
111
|
+
HammerCLI::EX_USAGE
|
|
112
|
+
else
|
|
113
|
+
if option_provider
|
|
114
|
+
namespace = option_provider
|
|
115
|
+
if !context[:defaults].providers.key?(namespace)
|
|
116
|
+
provider_prob_message(namespace)
|
|
117
|
+
return HammerCLI::EX_USAGE
|
|
118
|
+
elsif !context[:defaults].providers[namespace].param_supported?(option_param_name)
|
|
119
|
+
defaults_not_supported_by_provider
|
|
120
|
+
return HammerCLI::EX_CONFIG
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
context[:defaults].add_defaults_to_conf({option_param_name => option_param_value}, namespace)
|
|
124
|
+
added_default_message(option_param_name.to_s, option_param_value)
|
|
125
|
+
HammerCLI::EX_OK
|
|
126
|
+
end
|
|
127
|
+
rescue Defaults::DefaultsError, SystemCallError => e
|
|
128
|
+
print_message(e.message)
|
|
129
|
+
HammerCLI::EX_CONFIG
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
def added_default_message(key, value)
|
|
134
|
+
print_message(_("Added %{key_val} default-option with value that will be generated from the server.") % {:key_val => key.to_s}) if value.nil?
|
|
135
|
+
print_message(_("Added %{key_val} default-option with value %{val_val}.") % {:key_val => key.to_s, :val_val => value.to_s}) unless value.nil?
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
def provider_prob_message(namespace)
|
|
139
|
+
print_message(_("Provider #{namespace} was not found. See `hammer defaults providers` for available providers."))
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
def defaults_not_supported_by_provider
|
|
143
|
+
print_message(_("The param name is not supported by provider. See `hammer defaults providers` for supported params."))
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
def param_deleted(param)
|
|
147
|
+
print_message(_("%{param} was deleted successfully.") % {:param => param.to_s})
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
def bad_input
|
|
151
|
+
print_message(_("You must specify value or a provider name, cant specify both."))
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
def variable_not_found
|
|
155
|
+
print_message(_("Couldn't find the requested param in %s.") % context[:defaults].send(:path))
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
autoload_subcommands
|
|
159
|
+
end
|
|
160
|
+
end
|
|
@@ -53,11 +53,11 @@ module HammerCLI
|
|
|
53
53
|
end
|
|
54
54
|
|
|
55
55
|
def handles?(switch)
|
|
56
|
-
message = _("Warning: Option
|
|
56
|
+
message = _("Warning: Option %{option} is deprecated. %{message}")
|
|
57
57
|
if deprecated_switches.class <= String && switches.include?(switch)
|
|
58
|
-
warn(message % deprecated_switches)
|
|
58
|
+
warn(message % { :option => switch, :message => deprecated_switches })
|
|
59
59
|
elsif deprecated_switches.class <= Hash && deprecated_switches.keys.include?(switch)
|
|
60
|
-
warn(message % deprecated_switches[switch])
|
|
60
|
+
warn(message % { :option => switch, :message => deprecated_switches[switch] })
|
|
61
61
|
end
|
|
62
62
|
super(switch)
|
|
63
63
|
end
|
|
@@ -11,6 +11,19 @@ module HammerCLI::Output::Adapter
|
|
|
11
11
|
puts JSON.pretty_generate(result)
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
+
def print_message(msg, msg_params={})
|
|
15
|
+
id = msg_params["id"] || msg_params[:id]
|
|
16
|
+
name = msg_params["name"] || msg_params[:name]
|
|
17
|
+
|
|
18
|
+
data = {
|
|
19
|
+
:message => msg.format(msg_params)
|
|
20
|
+
}
|
|
21
|
+
data[:id] = id unless id.nil?
|
|
22
|
+
data[:name] = name unless name.nil?
|
|
23
|
+
|
|
24
|
+
puts JSON.pretty_generate(data)
|
|
25
|
+
end
|
|
26
|
+
|
|
14
27
|
end
|
|
15
28
|
|
|
16
29
|
HammerCLI::Output::Output.register_adapter(:json, Json)
|
|
@@ -11,6 +11,19 @@ module HammerCLI::Output::Adapter
|
|
|
11
11
|
puts YAML.dump(result)
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
+
def print_message(msg, msg_params={})
|
|
15
|
+
id = msg_params["id"] || msg_params[:id]
|
|
16
|
+
name = msg_params["name"] || msg_params[:name]
|
|
17
|
+
|
|
18
|
+
data = {
|
|
19
|
+
:message => msg.format(msg_params)
|
|
20
|
+
}
|
|
21
|
+
data[:id] = id unless id.nil?
|
|
22
|
+
data[:name] = name unless name.nil?
|
|
23
|
+
|
|
24
|
+
puts YAML.dump(data)
|
|
25
|
+
end
|
|
26
|
+
|
|
14
27
|
end
|
|
15
28
|
HammerCLI::Output::Output.register_adapter(:yaml, Yaml)
|
|
16
29
|
end
|
data/lib/hammer_cli/settings.rb
CHANGED
|
@@ -18,6 +18,7 @@ module HammerCLI
|
|
|
18
18
|
if File.directory? full_path
|
|
19
19
|
# check for cli_config.yml
|
|
20
20
|
load_from_file(File.join(full_path, 'cli_config.yml'))
|
|
21
|
+
load_from_file(File.join(full_path, 'defaults.yml'))
|
|
21
22
|
# load config for modules
|
|
22
23
|
Dir.glob(File.join(full_path, 'cli.modules.d/*.yml')).sort.each do |f|
|
|
23
24
|
load_from_file(f)
|
data/lib/hammer_cli/version.rb
CHANGED
data/lib/hammer_cli.rb
CHANGED
|
@@ -13,9 +13,11 @@ require 'hammer_cli/completer'
|
|
|
13
13
|
require 'hammer_cli/option_builder'
|
|
14
14
|
require 'hammer_cli/abstract'
|
|
15
15
|
require 'hammer_cli/main'
|
|
16
|
+
require 'hammer_cli/context'
|
|
16
17
|
|
|
17
18
|
require 'hammer_cli/apipie'
|
|
18
19
|
|
|
19
20
|
# extend MainCommand
|
|
20
21
|
require 'hammer_cli/shell'
|
|
22
|
+
require 'hammer_cli/defaults'
|
|
21
23
|
|