puppet-strings 2.2.0 → 2.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (88) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +12 -0
  3. data/Gemfile +14 -5
  4. data/JSON.md +41 -11
  5. data/README.md +66 -7
  6. data/Rakefile +99 -29
  7. data/lib/puppet-strings/json.rb +2 -0
  8. data/lib/puppet-strings/markdown.rb +2 -0
  9. data/lib/puppet-strings/markdown/data_type.rb +18 -0
  10. data/lib/puppet-strings/markdown/data_types.rb +41 -0
  11. data/lib/puppet-strings/markdown/function.rb +2 -2
  12. data/lib/puppet-strings/markdown/table_of_contents.rb +1 -0
  13. data/lib/puppet-strings/markdown/templates/data_type.erb +78 -0
  14. data/lib/puppet-strings/tasks/generate.rb +3 -2
  15. data/lib/puppet-strings/version.rb +1 -1
  16. data/lib/puppet-strings/yard.rb +10 -0
  17. data/lib/puppet-strings/yard/code_objects.rb +2 -0
  18. data/lib/puppet-strings/yard/code_objects/class.rb +1 -1
  19. data/lib/puppet-strings/yard/code_objects/data_type.rb +80 -0
  20. data/lib/puppet-strings/yard/code_objects/data_type_alias.rb +58 -0
  21. data/lib/puppet-strings/yard/code_objects/defined_type.rb +1 -1
  22. data/lib/puppet-strings/yard/code_objects/function.rb +3 -3
  23. data/lib/puppet-strings/yard/code_objects/plan.rb +1 -1
  24. data/lib/puppet-strings/yard/handlers.rb +2 -0
  25. data/lib/puppet-strings/yard/handlers/puppet/data_type_alias_handler.rb +24 -0
  26. data/lib/puppet-strings/yard/handlers/ruby/base.rb +2 -2
  27. data/lib/puppet-strings/yard/handlers/ruby/data_type_handler.rb +236 -0
  28. data/lib/puppet-strings/yard/handlers/ruby/function_handler.rb +1 -3
  29. data/lib/puppet-strings/yard/handlers/ruby/rsapi_handler.rb +2 -2
  30. data/lib/puppet-strings/yard/handlers/ruby/type_base.rb +5 -6
  31. data/lib/puppet-strings/yard/parsers/json/parser.rb +1 -1
  32. data/lib/puppet-strings/yard/parsers/puppet/parser.rb +14 -7
  33. data/lib/puppet-strings/yard/parsers/puppet/statement.rb +25 -0
  34. data/lib/puppet-strings/yard/tags/overload_tag.rb +1 -1
  35. data/lib/puppet-strings/yard/templates/default/fulldoc/html/full_list_puppet_data_type.erb +10 -0
  36. data/lib/puppet-strings/yard/templates/default/fulldoc/html/setup.rb +9 -0
  37. data/lib/puppet-strings/yard/templates/default/layout/html/objects.erb +2 -0
  38. data/lib/puppet-strings/yard/templates/default/layout/html/setup.rb +18 -1
  39. data/lib/puppet-strings/yard/templates/default/puppet_data_type/html/box_info.erb +10 -0
  40. data/lib/puppet-strings/yard/templates/default/puppet_data_type/html/header.erb +1 -0
  41. data/lib/puppet-strings/yard/templates/default/puppet_data_type/html/note.erb +6 -0
  42. data/lib/puppet-strings/yard/templates/default/puppet_data_type/html/overview.erb +6 -0
  43. data/lib/puppet-strings/yard/templates/default/puppet_data_type/html/setup.rb +5 -0
  44. data/lib/puppet-strings/yard/templates/default/puppet_data_type/html/source.erb +12 -0
  45. data/lib/puppet-strings/yard/templates/default/puppet_data_type/html/summary.erb +4 -0
  46. data/lib/puppet-strings/yard/templates/default/puppet_data_type/html/todo.erb +6 -0
  47. data/lib/puppet-strings/yard/templates/default/puppet_data_type_alias/html/alias_of.erb +10 -0
  48. data/lib/puppet-strings/yard/templates/default/puppet_data_type_alias/html/box_info.erb +10 -0
  49. data/lib/puppet-strings/yard/templates/default/puppet_data_type_alias/html/header.erb +1 -0
  50. data/lib/puppet-strings/yard/templates/default/puppet_data_type_alias/html/note.erb +6 -0
  51. data/lib/puppet-strings/yard/templates/default/puppet_data_type_alias/html/overview.erb +6 -0
  52. data/lib/puppet-strings/yard/templates/default/puppet_data_type_alias/html/setup.rb +17 -0
  53. data/lib/puppet-strings/yard/templates/default/puppet_data_type_alias/html/source.erb +12 -0
  54. data/lib/puppet-strings/yard/templates/default/puppet_data_type_alias/html/summary.erb +4 -0
  55. data/lib/puppet-strings/yard/templates/default/puppet_data_type_alias/html/todo.erb +6 -0
  56. data/lib/puppet-strings/yard/templates/default/tags/setup.rb +1 -0
  57. data/lib/puppet/face/strings.rb +3 -3
  58. data/spec/acceptance/emit_json_options_spec.rb +69 -0
  59. data/spec/acceptance/generate_markdown_spec.rb +13 -15
  60. data/spec/acceptance/running_strings_generate_spec.rb +78 -0
  61. data/spec/fixtures/acceptance/modules/test/metadata.json +5 -1
  62. data/spec/fixtures/acceptance/modules/test/types/elephant.pp +2 -0
  63. data/spec/fixtures/unit/markdown/output_with_data_types.md +553 -0
  64. data/spec/spec_helper.rb +3 -0
  65. data/spec/spec_helper_acceptance.rb +52 -22
  66. data/spec/spec_helper_acceptance_local.rb +10 -0
  67. data/spec/unit/puppet-strings/describe_spec.rb +7 -7
  68. data/spec/unit/puppet-strings/json_spec.rb +23 -4
  69. data/spec/unit/puppet-strings/markdown/base_spec.rb +3 -3
  70. data/spec/unit/puppet-strings/markdown_spec.rb +84 -23
  71. data/spec/unit/puppet-strings/yard/code_objects/task_spec.rb +1 -1
  72. data/spec/unit/puppet-strings/yard/handlers/json/task_handler_spec.rb +4 -4
  73. data/spec/unit/puppet-strings/yard/handlers/puppet/class_handler_spec.rb +8 -8
  74. data/spec/unit/puppet-strings/yard/handlers/puppet/data_type_alias_handler_spec.rb +65 -0
  75. data/spec/unit/puppet-strings/yard/handlers/puppet/defined_type_handler_spec.rb +8 -8
  76. data/spec/unit/puppet-strings/yard/handlers/puppet/function_handler_spec.rb +13 -13
  77. data/spec/unit/puppet-strings/yard/handlers/ruby/data_type_handler_spec.rb +232 -0
  78. data/spec/unit/puppet-strings/yard/handlers/ruby/function_handler_spec.rb +36 -19
  79. data/spec/unit/puppet-strings/yard/handlers/ruby/provider_handler_spec.rb +26 -7
  80. data/spec/unit/puppet-strings/yard/handlers/ruby/rsapi_handler_spec.rb +7 -7
  81. data/spec/unit/puppet-strings/yard/handlers/ruby/type_handler_spec.rb +26 -10
  82. data/spec/unit/puppet-strings/yard/parsers/json/task_statement_spec.rb +2 -2
  83. data/spec/unit/puppet-strings/yard/parsers/puppet/parser_spec.rb +42 -0
  84. data/spec/unit/puppet-strings/yard/util_spec.rb +1 -1
  85. metadata +35 -7
  86. data/spec/acceptance/emit_json_options.rb +0 -71
  87. data/spec/acceptance/lib/util.rb +0 -163
  88. data/spec/acceptance/running_strings_generate.rb +0 -54
@@ -1,9 +1,11 @@
1
1
  require 'spec_helper_acceptance'
2
- require 'util'
3
-
4
- include PuppetStrings::Acceptance::Util
5
2
 
6
3
  describe 'Generating Markdown' do
4
+ before(:all) do
5
+ @test_module_path = sut_module_path(/Module test/)
6
+ @remote_tmp_path = sut_tmp_path
7
+ end
8
+
7
9
  expected = <<-EOF
8
10
  # Reference
9
11
 
@@ -29,21 +31,17 @@ The name of the package
29
31
 
30
32
  The name of the service
31
33
 
32
- EOF
34
+ EOF
33
35
 
34
- it 'should render Markdown to stdout when using --format markdown and --stdout' do
35
- test_module_path = get_test_module_path(master, /Module test/)
36
- on master, puppet('strings', 'generate', '--format markdown', "#{test_module_path}/manifests/init.pp") do
37
- output = stdout.chomp
38
- expect(JSON.parse(output)).to eq(expected)
39
- end
36
+ it 'should render Markdown to stdout when using --format markdown' do
37
+ skip('This test is broken. Does not output to STDOUT by default.')
38
+ output = PuppetLitmus::Serverspec.run_shell("puppet strings generate --format markdown \"#{@test_module_path}/manifests/init.pp\"").stdout.chomp
39
+ expect(output).to eq(expected)
40
40
  end
41
41
 
42
42
  it 'should write Markdown to a file when using --format markdown and --out' do
43
- test_module_path = get_test_module_path(master, /Module test/)
44
- tmpfile = master.tmpfile('md_output.md')
45
- on master, puppet('strings', 'generate', '--format markdown', "--out #{tmpfile}", "#{test_module_path}/manifests/init.pp")
46
- output = read_file_on(master, tmpfile)
47
- expect(JSON.parse(output)).to eq(expected)
43
+ tmpfile = File.join(@remote_tmp_path, 'md_output.md')
44
+ remote = PuppetLitmus::Serverspec.run_shell("puppet strings generate --format markdown --out \"#{tmpfile}\" \"#{@test_module_path}/manifests/init.pp\"")
45
+ expect(file(tmpfile)).to contain expected
48
46
  end
49
47
  end
@@ -0,0 +1,78 @@
1
+ require 'spec_helper_acceptance'
2
+ include PuppetLitmus # rubocop:disable Style/MixinUsage This is fine
3
+
4
+ describe 'Generating module documentation using generate action' do
5
+ before :all do
6
+ # TODO: Linux only
7
+ @sut_work_dir = PuppetLitmus::Serverspec.run_shell("pwd").stdout.chomp
8
+
9
+ test_module_path = sut_module_path(/Module test/)
10
+ PuppetLitmus::Serverspec.run_shell("puppet strings generate \"#{test_module_path}/**/*.{rb,pp}\"")
11
+ end
12
+
13
+ def expect_file_contain(path, expected_contents)
14
+ file_path = File.join(@sut_work_dir, path)
15
+ file_content = file(file_path).content
16
+ expected_contents.each do |expected|
17
+ expect(file_content).to include(expected)
18
+ end
19
+ end
20
+
21
+ it 'should generate documentation for manifests' do
22
+ expect_file_contain('doc/puppet_classes/test.html', ['Class: test'])
23
+ end
24
+
25
+ it 'should generate documentation for puppet functions' do
26
+ skip('This test is failing. Appear to be legitimate failures.')
27
+ expect_file_contain('doc/puppet_functions_puppet/test_3A_3Aadd.html', [
28
+ 'Adds two integers together.',
29
+ # These tests are failing. Appear to be legitimate failures.
30
+ '<p>The first integer to add.</p>',
31
+ '<p>The second integer to add.</p>',
32
+ '<p>Returns the sum of x and y.</p>'
33
+ ])
34
+ end
35
+
36
+ it 'should generate documentation for 3x functions' do
37
+ expect_file_contain('doc/puppet_functions_ruby3x/function3x.html', ['This is the function documentation for <code>function3x</code>'])
38
+ end
39
+
40
+ it 'should generate documentation for 4x functions' do
41
+ expect_file_contain('doc/puppet_functions_ruby4x/function4x.html', ['This is a function which is used to test puppet strings'])
42
+ end
43
+
44
+ it 'should generate documentation for custom types' do
45
+ expect_file_contain('doc/puppet_types/database.html', [
46
+ '<p>An example server resource type.</p>',
47
+ '<p>The database file to use.</p>',
48
+ '<p>Documentation for a dynamic property.</p>',
49
+ '<p>The database server name.</p>',
50
+ '<p>Documentation for a dynamic parameter.</p>',
51
+ '<p>The provider supports encryption.</p>',
52
+ ])
53
+ end
54
+
55
+ it 'should generate documentation for custom providers' do
56
+ expect_file_contain('doc/puppet_providers_database/linux.html', [
57
+ 'The database provider on Linux',
58
+ '<tt>osfamily &mdash; linux</tt>',
59
+ '<tt>database &mdash; /usr/bin/database</tt>',
60
+ ])
61
+ end
62
+
63
+ it 'should generate documentation for puppet data types' do
64
+ expect_file_contain('doc/puppet_types/database.html', [
65
+ 'Resource Type: database',
66
+ 'type/database.rb',
67
+ 'An example server resource type.',
68
+ ])
69
+ end
70
+
71
+ it 'should generate documentation for puppet data type aliases' do
72
+ expect_file_contain('doc/puppet_data_type_aliases/Test_3A_3AElephant.html', [
73
+ 'Data Type: Test::Elephant',
74
+ 'types/elephant.pp',
75
+ 'A simple elephant type.',
76
+ ])
77
+ end
78
+ end
@@ -2,5 +2,9 @@
2
2
  "name": "username-test",
3
3
  "version": "0.0.1",
4
4
  "author": "username",
5
- "license": "Apache 2.0"
5
+ "summary": "brief summary",
6
+ "license": "MIT",
7
+ "source": "git://github.com/not_a/real_repo.git",
8
+ "dependencies": [
9
+ ]
6
10
  }
@@ -0,0 +1,2 @@
1
+ # A simple elephant type.
2
+ type Test::Elephant = String[2]
@@ -0,0 +1,553 @@
1
+ # Reference
2
+ <!-- DO NOT EDIT: This document was generated by Puppet Strings -->
3
+
4
+ ## Table of Contents
5
+
6
+ **Classes**
7
+
8
+ _Public Classes_
9
+
10
+ * [`klass`](#klass): A simple class.
11
+
12
+ _Private Classes_
13
+
14
+ * `noparams`: Overview for class noparams
15
+
16
+ **Defined types**
17
+
18
+ * [`klass::dt`](#klassdt): A simple defined type.
19
+
20
+ **Resource types**
21
+
22
+ * [`apt_key`](#apt_key): Example resource type using the new API.
23
+ * [`database`](#database): An example database server type.
24
+
25
+ **Functions**
26
+
27
+ * [`func`](#func): A simple Puppet function.
28
+ * [`func3x`](#func3x): Documentation for an example 3.x function.
29
+ * [`func4x`](#func4x): An example 4.x function.
30
+ * [`func4x_1`](#func4x_1): An example 4.x function with only one signature.
31
+
32
+ **Data types**
33
+
34
+ * [`Amodule::ComplexAlias`](#amodulecomplexalias): Documentation for Amodule::ComplexAlias
35
+ * [`Amodule::SimpleAlias`](#amodulesimplealias): Documentation for Amodule::SimpleAlias
36
+ * [`UnitDataType`](#unitdatatype): An example Puppet Data Type in Ruby.
37
+
38
+ **Tasks**
39
+
40
+ * [`(stdin)`](#(stdin)): Allows you to backup your database to local file.
41
+
42
+ ## Classes
43
+
44
+ ### klass
45
+
46
+ An overview for a simple class.
47
+
48
+ * **TODO** Do a thing
49
+
50
+ * **Note** some note
51
+
52
+ * **Since** 1.0.0
53
+
54
+ * **See also**
55
+ www.puppet.com
56
+
57
+ #### Examples
58
+
59
+ ##### This is an example
60
+
61
+ ```puppet
62
+ class { 'klass':
63
+ param1 => 1,
64
+ param3 => 'foo',
65
+ }
66
+ ```
67
+
68
+ ##### This is another example
69
+
70
+ ```puppet
71
+ class { 'klass':
72
+ param1 => 1,
73
+ param3 => 'foo',
74
+ }
75
+ ```
76
+
77
+ #### Parameters
78
+
79
+ The following parameters are available in the `klass` class.
80
+
81
+ ##### `param1`
82
+
83
+ Data type: `Integer`
84
+
85
+ First param.
86
+
87
+ Default value: 1
88
+
89
+ ##### `param2`
90
+
91
+ Data type: `Any`
92
+
93
+ Second param.
94
+
95
+ Options:
96
+
97
+ * **:opt1** `String`: something about opt1
98
+ * **:opt2** `Hash`: a hash of stuff
99
+
100
+ Default value: `undef`
101
+
102
+ ##### `param3`
103
+
104
+ Data type: `String`
105
+
106
+ Third param.
107
+
108
+ Default value: 'hi'
109
+
110
+ ## Defined types
111
+
112
+ ### klass::dt
113
+
114
+ An overview for a simple defined type.
115
+
116
+ * **Since** 1.1.0
117
+
118
+ * **See also**
119
+ www.puppet.com
120
+
121
+ #### Examples
122
+
123
+ ##### Here's an example of this type:
124
+
125
+ ```puppet
126
+ klass::dt { 'foo':
127
+ param1 => 33,
128
+ param4 => false,
129
+ }
130
+ ```
131
+
132
+ #### Parameters
133
+
134
+ The following parameters are available in the `klass::dt` defined type.
135
+
136
+ ##### `param1`
137
+
138
+ Data type: `Integer`
139
+
140
+ First param.
141
+
142
+ Default value: 44
143
+
144
+ ##### `param2`
145
+
146
+ Data type: `Any`
147
+
148
+ Second param.
149
+
150
+ Options:
151
+
152
+ * **:opt1** `String`: something about opt1
153
+ * **:opt2** `Hash`: a hash of stuff
154
+
155
+ ##### `param3`
156
+
157
+ Data type: `String`
158
+
159
+ Third param.
160
+
161
+ Default value: 'hi'
162
+
163
+ ##### `param4`
164
+
165
+ Data type: `Boolean`
166
+
167
+ Fourth param.
168
+
169
+ Default value: `true`
170
+
171
+ ## Resource types
172
+
173
+ ### apt_key
174
+
175
+ This type provides Puppet with the capabilities to manage GPG keys needed
176
+ by apt to perform package validation. Apt has it's own GPG keyring that can
177
+ be manipulated through the `apt-key` command.
178
+ **Autorequires**:
179
+ If Puppet is given the location of a key file which looks like an absolute
180
+ path this type will autorequire that file.
181
+
182
+ #### Examples
183
+
184
+ ##### here's an example
185
+
186
+ ```puppet
187
+ apt_key { '6F6B15509CF8E59E6E469F327F438280EF8D349F':
188
+ source => 'http://apt.puppetlabs.com/pubkey.gpg'
189
+ }
190
+ ```
191
+
192
+ #### Properties
193
+
194
+ The following properties are available in the `apt_key` type.
195
+
196
+ ##### `ensure`
197
+
198
+ Data type: `Enum[present, absent]`
199
+
200
+ Whether this apt key should be present or absent on the target system.
201
+
202
+ ##### `created`
203
+
204
+ Data type: `String`
205
+
206
+ Date the key was created, in ISO format.
207
+
208
+ #### Parameters
209
+
210
+ The following parameters are available in the `apt_key` type.
211
+
212
+ ##### `id`
213
+
214
+ namevar
215
+
216
+ Data type: `Variant[Pattern[/A(0x)?[0-9a-fA-F]{8}Z/], Pattern[/A(0x)?[0-9a-fA-F]{16}Z/], Pattern[/A(0x)?[0-9a-fA-F]{40}Z/]]`
217
+ _*this data type contains a regex that may not be accurately reflected in generated documentation_
218
+
219
+ The ID of the key you want to manage.
220
+
221
+ ### database
222
+
223
+ An example database server type.
224
+
225
+ #### Examples
226
+
227
+ ##### here's an example
228
+
229
+ ```puppet
230
+ database { 'foo':
231
+ address => 'qux.baz.bar',
232
+ }
233
+ ```
234
+
235
+ #### Properties
236
+
237
+ The following properties are available in the `database` type.
238
+
239
+ ##### `ensure`
240
+
241
+ Valid values: present, absent, up, down
242
+
243
+ Aliases: "up"=>"present", "down"=>"absent"
244
+
245
+ What state the database should be in.
246
+
247
+ Default value: up
248
+
249
+ ##### `file`
250
+
251
+ The database file to use.
252
+
253
+ ##### `log_level`
254
+
255
+ Valid values: debug, warn, error
256
+
257
+ The log level to use.
258
+
259
+ Default value: warn
260
+
261
+ #### Parameters
262
+
263
+ The following parameters are available in the `database` type.
264
+
265
+ ##### `address`
266
+
267
+ namevar
268
+
269
+ The database server name.
270
+
271
+ ##### `encryption_key`
272
+
273
+ The encryption key to use.
274
+
275
+ Required features: encryption.
276
+
277
+ ##### `encrypt`
278
+
279
+ Valid values: `true`, `false`, yes, no
280
+
281
+ Whether or not to encrypt the database.
282
+
283
+ Default value: `false`
284
+
285
+ ## Functions
286
+
287
+ ### func
288
+
289
+ Type: Puppet Language
290
+
291
+ A simple Puppet function.
292
+
293
+ #### Examples
294
+
295
+ ##### Test
296
+
297
+ ```puppet
298
+ $result = func(1, 2)
299
+ ```
300
+
301
+ #### `func(Integer $param1, Any $param2, String $param3 = hi)`
302
+
303
+ A simple Puppet function.
304
+
305
+ Returns: `Undef` Returns nothing.
306
+
307
+ Raises:
308
+ * `SomeError` this is some error
309
+
310
+ ##### Examples
311
+
312
+ ###### Test
313
+
314
+ ```puppet
315
+ $result = func(1, 2)
316
+ ```
317
+
318
+ ##### `param1`
319
+
320
+ Data type: `Integer`
321
+
322
+ First param.
323
+
324
+ ##### `param2`
325
+
326
+ Data type: `Any`
327
+
328
+ Second param.
329
+
330
+ ##### `param3`
331
+
332
+ Data type: `String`
333
+
334
+ Third param.
335
+
336
+ Options:
337
+
338
+ * **:param3opt** `Array`: Something about this option
339
+
340
+ ### func3x
341
+
342
+ Type: Ruby 3.x API
343
+
344
+ Documentation for an example 3.x function.
345
+
346
+ #### Examples
347
+
348
+ ##### Calling the function.
349
+
350
+ ```puppet
351
+ func3x('hi', 10)
352
+ ```
353
+
354
+ #### `func3x(String $param1, Integer $param2)`
355
+
356
+ Documentation for an example 3.x function.
357
+
358
+ Returns: `Undef`
359
+
360
+ ##### Examples
361
+
362
+ ###### Calling the function.
363
+
364
+ ```puppet
365
+ func3x('hi', 10)
366
+ ```
367
+
368
+ ##### `param1`
369
+
370
+ Data type: `String`
371
+
372
+ The first parameter.
373
+
374
+ ##### `param2`
375
+
376
+ Data type: `Integer`
377
+
378
+ The second parameter.
379
+
380
+ ### func4x
381
+
382
+ Type: Ruby 4.x API
383
+
384
+ An example 4.x function.
385
+
386
+ #### Examples
387
+
388
+ ##### Calling the function
389
+
390
+ ```puppet
391
+ $result = func4x(1, 'foo')
392
+ ```
393
+
394
+ ##### Calling the function with all args
395
+
396
+ ```puppet
397
+ $result = func4x(1, 'foo', ['bar'])
398
+ ```
399
+
400
+ #### `func4x(Integer $param1, Any $param2, Optional[Array[String]] $param3)`
401
+
402
+ An overview for the first overload.
403
+
404
+ Returns: `Undef` Returns nothing.
405
+
406
+ ##### Examples
407
+
408
+ ###### Calling the function foo
409
+
410
+ ```puppet
411
+ $result = func4x(1, 'foooo')
412
+ ```
413
+
414
+ ##### `param1`
415
+
416
+ Data type: `Integer`
417
+
418
+ The first parameter.
419
+
420
+ ##### `param2`
421
+
422
+ Data type: `Any`
423
+
424
+ The second parameter.
425
+
426
+ Options:
427
+
428
+ * **:option** `String`: an option
429
+ * **:option2** `String`: another option
430
+
431
+ ##### `param3`
432
+
433
+ Data type: `Optional[Array[String]]`
434
+
435
+ The third parameter.
436
+
437
+ #### `func4x(Boolean $param, Callable &$block)`
438
+
439
+ An overview for the second overload.
440
+
441
+ Returns: `String` Returns a string.
442
+
443
+ ##### Examples
444
+
445
+ ###### Calling the function bar
446
+
447
+ ```puppet
448
+ $result = func4x(1, 'bar', ['foo'])
449
+ ```
450
+
451
+ ##### `param`
452
+
453
+ Data type: `Boolean`
454
+
455
+ The first parameter.
456
+
457
+ ##### `&block`
458
+
459
+ Data type: `Callable`
460
+
461
+ The block parameter.
462
+
463
+ ### func4x_1
464
+
465
+ Type: Ruby 4.x API
466
+
467
+ An example 4.x function with only one signature.
468
+
469
+ #### `func4x_1(Integer $param1)`
470
+
471
+ An example 4.x function with only one signature.
472
+
473
+ Returns: `Undef` Returns nothing.
474
+
475
+ ##### `param1`
476
+
477
+ Data type: `Integer`
478
+
479
+ The first parameter.
480
+
481
+ ## Data types
482
+
483
+ ### Amodule::ComplexAlias
484
+
485
+ Documentation for Amodule::ComplexAlias
486
+
487
+ Alias of `Struct[{
488
+ value_type => Optional[ValueType],
489
+ merge => Optional[MergeType]
490
+ }]`
491
+
492
+ ### Amodule::SimpleAlias
493
+
494
+ Documentation for Amodule::SimpleAlias
495
+
496
+ Alias of `Variant[Numeric, String[1,20]]`
497
+
498
+ ### UnitDataType
499
+
500
+ An example Puppet Data Type in Ruby.
501
+
502
+ #### Parameters
503
+
504
+ The following parameters are available in the `UnitDataType` data type.
505
+
506
+ ##### `param1`
507
+
508
+ Data type: `Variant[Numeric, String[1,2]]`
509
+
510
+ A variant parameter.
511
+
512
+ ##### `param2`
513
+
514
+ Data type: `Optional[String[1]]`
515
+
516
+ Optional String parameter.
517
+
518
+ Default value: param2
519
+
520
+ ## Tasks
521
+
522
+ ### (stdin)
523
+
524
+ Allows you to backup your database to local file.
525
+
526
+ **Supports noop?** false
527
+
528
+ #### Parameters
529
+
530
+ ##### `database`
531
+
532
+ Data type: `Optional[String[1]]`
533
+
534
+ Database to connect to
535
+
536
+ ##### `user`
537
+
538
+ Data type: `Optional[String[1]]`
539
+
540
+ The user
541
+
542
+ ##### `password`
543
+
544
+ Data type: `Optional[String[1]]`
545
+
546
+ The password
547
+
548
+ ##### `sql`
549
+
550
+ Data type: `String[1]`
551
+
552
+ Path to file you want backup to
553
+