hammer_cli 3.14.0 → 3.15.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 +4 -4
- data/doc/creating_commands.md +29 -0
- data/doc/release_notes.md +9 -0
- data/lib/hammer_cli/output/adapter/base.rb +6 -0
- data/lib/hammer_cli/output/fields.rb +3 -1
- data/lib/hammer_cli/version.rb +1 -1
- data/locale/ca/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/cs_CZ/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/de/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/en/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/en_GB/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/es/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/fr/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/it/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/ja/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/ka/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/ko/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/pt_BR/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/ru/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/zh_CN/LC_MESSAGES/hammer-cli.mo +0 -0
- data/locale/zh_TW/LC_MESSAGES/hammer-cli.mo +0 -0
- data/test/unit/abstract_test.rb +1 -1
- data/test/unit/output/adapter/base_test.rb +32 -1
- metadata +48 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e59588fd8f86b76aee78fc150ea938650b2f5df37c6dba8e53be5d44a1117f8f
|
4
|
+
data.tar.gz: f5d84d4062dc8c9a8db3856b1e6569980c86597ae4b7d96a439c0128b832365a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 332b4e7295ee014cbf01f7abf00f41a11a67291955ac118814a832c1cd169a9e53b60cb618385a50399488311837c8c3bce78234986d3a3487107e6d9f14af0b
|
7
|
+
data.tar.gz: 7aceb50f62e7ede2ab787e89af97cf49375175c054fa301a74602506529ea7d9f4f311df4a60513fd47894c3b9e03768de04e0ba49220020cf59c9bb20c0900f
|
data/doc/creating_commands.md
CHANGED
@@ -755,6 +755,35 @@ def adapter
|
|
755
755
|
end
|
756
756
|
```
|
757
757
|
|
758
|
+
#### Deprecating fields
|
759
|
+
To deprecate a field, add `:deprecated => true` as an option for the field. This will print a warning message to stderr whenever the field is displayed. Consider removing this field from the default set so it is not displayed without a `--fields` param:
|
760
|
+
|
761
|
+
```
|
762
|
+
field :dep_fld, _("Deprecated field"), Fields::Field, :sets => ['ALL'], :deprecated => true
|
763
|
+
```
|
764
|
+
|
765
|
+
Example output:
|
766
|
+
|
767
|
+
```
|
768
|
+
$ hammer foo info --fields "Deprecated field"
|
769
|
+
Warning: Field 'Deprecated field' is deprecated and may be removed in future versions.
|
770
|
+
Deprecated field: bar
|
771
|
+
```
|
772
|
+
|
773
|
+
Additionally, a field may be 'replaced by' another field using `:replaced_by => "Path/To/New/Field"`. This will mark the field as deprecated and print a similar warning message to stderr whenever the field is displayed:
|
774
|
+
|
775
|
+
```
|
776
|
+
field :rep_fld, _("Replaced field"), Fields::Field, :sets => ['ALL'], :replaced_by => "Path/New field"
|
777
|
+
```
|
778
|
+
|
779
|
+
Example output:
|
780
|
+
|
781
|
+
```
|
782
|
+
$ hammer foo info --fields "Replaced field"
|
783
|
+
Warning: Field 'Replaced field' is deprecated. Consider using 'Path/New field' instead.
|
784
|
+
Replaced field: bar
|
785
|
+
```
|
786
|
+
|
758
787
|
#### Verbosity
|
759
788
|
Currently Hammer [defines](https://github.com/theforeman/hammer-cli/blob/master/lib/hammer_cli/verbosity.rb) three basic verbose modes:
|
760
789
|
* __QUIET__ - Prints nothing
|
data/doc/release_notes.md
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
Release notes
|
2
2
|
=============
|
3
|
+
### 3.15.0 (2025-05-14)
|
4
|
+
* Translate warning message ([PR #396](https://github.com/theforeman/hammer-cli/pull/396)), [#38410](http://projects.theforeman.org/issues/38410)
|
5
|
+
* Add mechanism for deprecating displayed fields ([PR #395](https://github.com/theforeman/hammer-cli/pull/395)), [#38410](http://projects.theforeman.org/issues/38410)
|
6
|
+
* Fix test using #inspect on a hash
|
7
|
+
* Add base64 and csv dependencies for ruby 3.4 compatibility
|
8
|
+
* Fix gemspec/ordereddependencies cop
|
9
|
+
* Use actions/checkout@v4
|
10
|
+
* Bump to 3.15.0-develop
|
11
|
+
|
3
12
|
### 3.14.0 (2025-02-20)
|
4
13
|
* Check better for parent option desc injection, [#38126](http://projects.theforeman.org/issues/38126)
|
5
14
|
* Bump apipie-bindings to 0.7.0
|
@@ -42,6 +42,12 @@ module HammerCLI::Output::Adapter
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def render_field(field, data, label_width)
|
45
|
+
if field.replaced_by
|
46
|
+
warn _("Warning: Field '%{field}' is deprecated. Consider using '%{replacement}' instead.") % { field: field.full_label, replacement: field.replaced_by }
|
47
|
+
elsif field.deprecated
|
48
|
+
warn _("Warning: Field '%{field}' is deprecated and may be removed in future versions.") % { field: field.full_label }
|
49
|
+
end
|
50
|
+
|
45
51
|
if field.is_a? Fields::ContainerField
|
46
52
|
output = ""
|
47
53
|
|
@@ -4,7 +4,7 @@ module Fields
|
|
4
4
|
class Field
|
5
5
|
attr_reader :path
|
6
6
|
attr_writer :sets
|
7
|
-
attr_accessor :label, :parent
|
7
|
+
attr_accessor :label, :parent, :replaced_by, :deprecated
|
8
8
|
|
9
9
|
def initialize(options={})
|
10
10
|
@hide_blank = options[:hide_blank].nil? ? false : options[:hide_blank]
|
@@ -12,6 +12,8 @@ module Fields
|
|
12
12
|
@path = options[:path] || []
|
13
13
|
@label = options[:label]
|
14
14
|
@sets = options[:sets]
|
15
|
+
@replaced_by = options[:replaced_by]
|
16
|
+
@deprecated = (options[:deprecated].nil?) ? !@replaced_by.nil? : options[:deprecated]
|
15
17
|
@options = options
|
16
18
|
end
|
17
19
|
|
data/lib/hammer_cli/version.rb
CHANGED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/test/unit/abstract_test.rb
CHANGED
@@ -185,7 +185,7 @@ describe HammerCLI::AbstractCommand do
|
|
185
185
|
test_command_class.option(['--password'], 'PASSWORD', 'Password')
|
186
186
|
test_command = test_command_class.new("")
|
187
187
|
test_command.run ['--password=pass']
|
188
|
-
_(@log_output.readline.strip).
|
188
|
+
_(@log_output.readline.strip).must_match(%r{INFO HammerCLI::AbstractCommand : Called with options: {\"option_password\"\s*=>\s*\"\*\*\*\"}})
|
189
189
|
end
|
190
190
|
end
|
191
191
|
|
@@ -28,6 +28,9 @@ describe HammerCLI::Output::Adapter::Base do
|
|
28
28
|
let(:blank) { Fields::Field.new(:path => [:blank], :label => "Blank", :hide_blank => true) }
|
29
29
|
let(:login) { Fields::Field.new(:path => [:login], :label => "Login") }
|
30
30
|
let(:missing) { Fields::Field.new(:path => [:login], :label => "Missing", :hide_missing => false) }
|
31
|
+
let (:deprecated_a) { Fields::Field.new(:path => [:deprecated_a], :label => "Deprecated", :deprecated => true) }
|
32
|
+
let (:new_field) { Fields::Field.new(:path => [:new_field], :label => "New field") }
|
33
|
+
let (:deprecated_b) { Fields::Field.new(:path => [:deprecated_b], :label => "Replaced by", :replaced_by => 'New field') }
|
31
34
|
|
32
35
|
let(:data) { HammerCLI::Output::RecordCollection.new [{
|
33
36
|
:id => 112,
|
@@ -55,7 +58,10 @@ describe HammerCLI::Output::Adapter::Base do
|
|
55
58
|
:name => 'size',
|
56
59
|
:value => '32'
|
57
60
|
}
|
58
|
-
]
|
61
|
+
],
|
62
|
+
deprecated_a: 'deprecated_a',
|
63
|
+
deprecated_b: 'deprecated_b',
|
64
|
+
new_field: 'new_field'
|
59
65
|
}]}
|
60
66
|
|
61
67
|
it "should print one field" do
|
@@ -199,6 +205,31 @@ describe HammerCLI::Output::Adapter::Base do
|
|
199
205
|
_{ adapter.print_collection(fields, data) }.must_output(expected_output)
|
200
206
|
end
|
201
207
|
|
208
|
+
it "should warn about deprecated fields" do
|
209
|
+
fields = [deprecated_a]
|
210
|
+
|
211
|
+
expected_stdout= [
|
212
|
+
"Deprecated: deprecated_a",
|
213
|
+
"\n"
|
214
|
+
].join("\n")
|
215
|
+
expected_stderr = "Warning: Field 'Deprecated' is deprecated and may be removed in future versions.\n"
|
216
|
+
|
217
|
+
_{ adapter.print_collection(fields, data) }.must_output(stdout=expected_stdout, stderr=expected_stderr)
|
218
|
+
end
|
219
|
+
|
220
|
+
it "should warn about replaced fields" do
|
221
|
+
fields = [new_field, deprecated_b]
|
222
|
+
|
223
|
+
expected_stdout= [
|
224
|
+
"New field: new_field",
|
225
|
+
"Replaced by: deprecated_b",
|
226
|
+
"\n"
|
227
|
+
].join("\n")
|
228
|
+
expected_stderr = "Warning: Field 'Replaced by' is deprecated. Consider using 'New field' instead.\n"
|
229
|
+
|
230
|
+
_{ adapter.print_collection(fields, data) }.must_output(stdout=expected_stdout, stderr=expected_stderr)
|
231
|
+
end
|
232
|
+
|
202
233
|
context 'printing by chunks' do
|
203
234
|
let(:context) { { show_ids: true } }
|
204
235
|
let(:collection_count) { 30 }
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hammer_cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.15.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Bačovský
|
@@ -9,30 +9,38 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2025-
|
12
|
+
date: 2025-05-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
15
|
+
name: amazing_print
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
18
|
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version:
|
21
|
-
- - "<"
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 2.0.0
|
20
|
+
version: '0'
|
24
21
|
type: :runtime
|
25
22
|
prerelease: false
|
26
23
|
version_requirements: !ruby/object:Gem::Requirement
|
27
24
|
requirements:
|
28
25
|
- - ">="
|
29
26
|
- !ruby/object:Gem::Version
|
30
|
-
version:
|
31
|
-
|
27
|
+
version: '0'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: apipie-bindings
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
32
33
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
34
|
+
version: 0.7.0
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: 0.7.0
|
34
42
|
- !ruby/object:Gem::Dependency
|
35
|
-
name:
|
43
|
+
name: base64
|
36
44
|
requirement: !ruby/object:Gem::Requirement
|
37
45
|
requirements:
|
38
46
|
- - ">="
|
@@ -46,21 +54,27 @@ dependencies:
|
|
46
54
|
- !ruby/object:Gem::Version
|
47
55
|
version: '0'
|
48
56
|
- !ruby/object:Gem::Dependency
|
49
|
-
name:
|
57
|
+
name: clamp
|
50
58
|
requirement: !ruby/object:Gem::Requirement
|
51
59
|
requirements:
|
52
60
|
- - ">="
|
53
61
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
62
|
+
version: 1.3.1
|
63
|
+
- - "<"
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: 2.0.0
|
55
66
|
type: :runtime
|
56
67
|
prerelease: false
|
57
68
|
version_requirements: !ruby/object:Gem::Requirement
|
58
69
|
requirements:
|
59
70
|
- - ">="
|
60
71
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
72
|
+
version: 1.3.1
|
73
|
+
- - "<"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 2.0.0
|
62
76
|
- !ruby/object:Gem::Dependency
|
63
|
-
name:
|
77
|
+
name: csv
|
64
78
|
requirement: !ruby/object:Gem::Requirement
|
65
79
|
requirements:
|
66
80
|
- - ">="
|
@@ -74,7 +88,7 @@ dependencies:
|
|
74
88
|
- !ruby/object:Gem::Version
|
75
89
|
version: '0'
|
76
90
|
- !ruby/object:Gem::Dependency
|
77
|
-
name:
|
91
|
+
name: fast_gettext
|
78
92
|
requirement: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
94
|
- - ">="
|
@@ -88,7 +102,7 @@ dependencies:
|
|
88
102
|
- !ruby/object:Gem::Version
|
89
103
|
version: '0'
|
90
104
|
- !ruby/object:Gem::Dependency
|
91
|
-
name:
|
105
|
+
name: highline
|
92
106
|
requirement: !ruby/object:Gem::Requirement
|
93
107
|
requirements:
|
94
108
|
- - ">="
|
@@ -116,19 +130,33 @@ dependencies:
|
|
116
130
|
- !ruby/object:Gem::Version
|
117
131
|
version: 2.0.6
|
118
132
|
- !ruby/object:Gem::Dependency
|
119
|
-
name:
|
133
|
+
name: logging
|
120
134
|
requirement: !ruby/object:Gem::Requirement
|
121
135
|
requirements:
|
122
136
|
- - ">="
|
123
137
|
- !ruby/object:Gem::Version
|
124
|
-
version: 0
|
138
|
+
version: '0'
|
125
139
|
type: :runtime
|
126
140
|
prerelease: false
|
127
141
|
version_requirements: !ruby/object:Gem::Requirement
|
128
142
|
requirements:
|
129
143
|
- - ">="
|
130
144
|
- !ruby/object:Gem::Version
|
131
|
-
version: 0
|
145
|
+
version: '0'
|
146
|
+
- !ruby/object:Gem::Dependency
|
147
|
+
name: unicode-display_width
|
148
|
+
requirement: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
type: :runtime
|
154
|
+
prerelease: false
|
155
|
+
version_requirements: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
132
160
|
description: 'Hammer cli provides universal extendable CLI interface for ruby apps
|
133
161
|
|
134
162
|
'
|