puppet-function-updater 0.0.2 → 0.0.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c4e20e5f6989948ee8a47c6be69b5c381a0817ae8b26ccf7daac5d3e437de74b
4
- data.tar.gz: cd83a4c1687b449691de92a67de33a9a80fd11f31411232ff41472b4735cd3b5
3
+ metadata.gz: 7c8e70b6514414dcd252d6337de80765df70e417173250932fc332b6a2eaac90
4
+ data.tar.gz: e116616d37d9376ff3f4df574df00f75ba3a98ae16b02d1bfd83b0e1bea0a629
5
5
  SHA512:
6
- metadata.gz: d308a64a254c50864dd8b0840f42cb2feee2da57c452696b0e3069ddb602bbb35119ee3708a71801e057c51c5b3aebaaff52ebf113e0a8380f714b1e5f1f1d66
7
- data.tar.gz: c08d5bef117c504be32a60e19b42e860d63f9e390c0708d64ef0a345985499d7caf43b2e10c8b2d2494de4b0459d908807578d961d9fc65925814f7923939e9a
6
+ metadata.gz: aa9bf40727c562d18890b1a722d93276f46f544ba22ff995aaabb7184cb9fde47cb55f175365681f512145658642be906f373bad0d855401709c3cac5bbe857b
7
+ data.tar.gz: 0f77d9209e589364b682906af5f68fa87fb48dba1cc733b968da855aa8756657305b9c4998ff4324ed861c796c7a3a37df16f21c780bb650e36c4c25996a8369
@@ -1,2 +1,10 @@
1
+ v0.0.3
2
+ * Cleans up by deleting the legacy function files if requested with `--clean`
3
+
4
+ v0.0.2
5
+ * Now parses almost all of stdlib
6
+ * handles heredocs
7
+ * handles require statements outside the function block
8
+
1
9
  v0.0.1
2
10
  * Initial release
data/README.md CHANGED
@@ -20,6 +20,167 @@ $ gem install puppet-function-updater
20
20
  Run the command `puppet_function_updater` in the root of a Puppet module, then
21
21
  inspect all the generated functions for suitability.
22
22
 
23
+ ### Example:
24
+
25
+ ```
26
+ [~/Projects/puppetlabs-stdlib]$ puppet_function_updater --verbose
27
+ INFO: Creating lib/puppet/functions/stdlib/abs.rb
28
+ INFO: Creating lib/puppet/functions/stdlib/any2array.rb
29
+ INFO: Creating lib/puppet/functions/stdlib/any2bool.rb
30
+ INFO: Creating lib/puppet/functions/stdlib/assert_private.rb
31
+ INFO: Creating lib/puppet/functions/stdlib/base64.rb
32
+ INFO: Creating lib/puppet/functions/stdlib/basename.rb
33
+ INFO: Creating lib/puppet/functions/stdlib/bool2num.rb
34
+ INFO: Creating lib/puppet/functions/stdlib/bool2str.rb
35
+ INFO: Creating lib/puppet/functions/stdlib/camelcase.rb
36
+ INFO: Creating lib/puppet/functions/stdlib/capitalize.rb
37
+ INFO: Creating lib/puppet/functions/stdlib/ceiling.rb
38
+ INFO: Creating lib/puppet/functions/stdlib/chomp.rb
39
+ INFO: Creating lib/puppet/functions/stdlib/chop.rb
40
+ INFO: Creating lib/puppet/functions/stdlib/clamp.rb
41
+ INFO: Creating lib/puppet/functions/stdlib/concat.rb
42
+ INFO: Creating lib/puppet/functions/stdlib/convert_base.rb
43
+ INFO: Creating lib/puppet/functions/stdlib/count.rb
44
+ INFO: Creating lib/puppet/functions/stdlib/deep_merge.rb
45
+ ERROR: The function attempted to load libraries outside the function block.
46
+ WARN: cannot load such file -- puppet/parser/functions (ignored)
47
+ INFO: Creating lib/puppet/functions/stdlib/defined_with_params.rb
48
+ INFO: Creating lib/puppet/functions/stdlib/delete.rb
49
+ INFO: Creating lib/puppet/functions/stdlib/delete_at.rb
50
+ INFO: Creating lib/puppet/functions/stdlib/delete_regex.rb
51
+ INFO: Creating lib/puppet/functions/stdlib/delete_undef_values.rb
52
+ INFO: Creating lib/puppet/functions/stdlib/delete_values.rb
53
+ INFO: Creating lib/puppet/functions/stdlib/deprecation.rb
54
+ INFO: Creating lib/puppet/functions/stdlib/difference.rb
55
+ INFO: Creating lib/puppet/functions/stdlib/dig.rb
56
+ INFO: Creating lib/puppet/functions/stdlib/dig44.rb
57
+ INFO: Creating lib/puppet/functions/stdlib/dirname.rb
58
+ INFO: Creating lib/puppet/functions/stdlib/dos2unix.rb
59
+ INFO: Creating lib/puppet/functions/stdlib/downcase.rb
60
+ INFO: Creating lib/puppet/functions/stdlib/empty.rb
61
+ INFO: Creating lib/puppet/functions/stdlib/enclose_ipv6.rb
62
+ INFO: Creating lib/puppet/functions/stdlib/ensure_packages.rb
63
+ ERROR: The function attempted to load libraries outside the function block.
64
+ WARN: cannot load such file -- puppet/parser/functions (ignored)
65
+ INFO: Creating lib/puppet/functions/stdlib/ensure_resource.rb
66
+ ERROR: The function attempted to load libraries outside the function block.
67
+ WARN: cannot load such file -- puppet/parser/functions (ignored)
68
+ INFO: Creating lib/puppet/functions/stdlib/ensure_resources.rb
69
+ INFO: Creating lib/puppet/functions/stdlib/flatten.rb
70
+ INFO: Creating lib/puppet/functions/stdlib/floor.rb
71
+ INFO: Creating lib/puppet/functions/stdlib/fqdn_rand_string.rb
72
+ INFO: Creating lib/puppet/functions/stdlib/fqdn_rotate.rb
73
+ INFO: Creating lib/puppet/functions/stdlib/fqdn_uuid.rb
74
+ INFO: Creating lib/puppet/functions/stdlib/get_module_path.rb
75
+ ERROR: The function attempted to load libraries outside the function block.
76
+ WARN: cannot load such file -- puppet/parser/functions (ignored)
77
+ INFO: Creating lib/puppet/functions/stdlib/getparam.rb
78
+ INFO: Creating lib/puppet/functions/stdlib/getvar.rb
79
+ INFO: Creating lib/puppet/functions/stdlib/glob.rb
80
+ INFO: Creating lib/puppet/functions/stdlib/grep.rb
81
+ INFO: Creating lib/puppet/functions/stdlib/has_interface_with.rb
82
+ INFO: Creating lib/puppet/functions/stdlib/has_ip_address.rb
83
+ INFO: Creating lib/puppet/functions/stdlib/has_ip_network.rb
84
+ INFO: Creating lib/puppet/functions/stdlib/has_key.rb
85
+ INFO: Creating lib/puppet/functions/stdlib/hash.rb
86
+ INFO: Creating lib/puppet/functions/stdlib/intersection.rb
87
+ INFO: Creating lib/puppet/functions/stdlib/is_absolute_path.rb
88
+ INFO: Creating lib/puppet/functions/stdlib/is_array.rb
89
+ INFO: Creating lib/puppet/functions/stdlib/is_bool.rb
90
+ INFO: Creating lib/puppet/functions/stdlib/is_domain_name.rb
91
+ INFO: Creating lib/puppet/functions/stdlib/is_email_address.rb
92
+ INFO: Creating lib/puppet/functions/stdlib/is_float.rb
93
+ INFO: Creating lib/puppet/functions/stdlib/is_function_available.rb
94
+ INFO: Creating lib/puppet/functions/stdlib/is_hash.rb
95
+ INFO: Creating lib/puppet/functions/stdlib/is_integer.rb
96
+ INFO: Creating lib/puppet/functions/stdlib/is_ip_address.rb
97
+ INFO: Creating lib/puppet/functions/stdlib/is_ipv4_address.rb
98
+ INFO: Creating lib/puppet/functions/stdlib/is_ipv6_address.rb
99
+ INFO: Creating lib/puppet/functions/stdlib/is_mac_address.rb
100
+ INFO: Creating lib/puppet/functions/stdlib/is_numeric.rb
101
+ INFO: Creating lib/puppet/functions/stdlib/is_string.rb
102
+ INFO: Creating lib/puppet/functions/stdlib/join.rb
103
+ INFO: Creating lib/puppet/functions/stdlib/join_keys_to_values.rb
104
+ INFO: Creating lib/puppet/functions/stdlib/keys.rb
105
+ INFO: Creating lib/puppet/functions/stdlib/load_module_metadata.rb
106
+ INFO: Creating lib/puppet/functions/stdlib/loadjson.rb
107
+ INFO: Creating lib/puppet/functions/stdlib/loadyaml.rb
108
+ INFO: Creating lib/puppet/functions/stdlib/lstrip.rb
109
+ INFO: Creating lib/puppet/functions/stdlib/max.rb
110
+ INFO: Creating lib/puppet/functions/stdlib/member.rb
111
+ INFO: Creating lib/puppet/functions/stdlib/merge.rb
112
+ INFO: Creating lib/puppet/functions/stdlib/min.rb
113
+ INFO: Creating lib/puppet/functions/stdlib/num2bool.rb
114
+ INFO: Creating lib/puppet/functions/stdlib/parsejson.rb
115
+ INFO: Creating lib/puppet/functions/stdlib/parseyaml.rb
116
+ INFO: Creating lib/puppet/functions/stdlib/pick.rb
117
+ INFO: Creating lib/puppet/functions/stdlib/pick_default.rb
118
+ INFO: Creating lib/puppet/functions/stdlib/prefix.rb
119
+ INFO: Creating lib/puppet/functions/stdlib/private.rb
120
+ INFO: Creating lib/puppet/functions/stdlib/pry.rb
121
+ INFO: Creating lib/puppet/functions/stdlib/pw_hash.rb
122
+ INFO: Creating lib/puppet/functions/stdlib/range.rb
123
+ INFO: Creating lib/puppet/functions/stdlib/regexpescape.rb
124
+ INFO: Creating lib/puppet/functions/stdlib/reject.rb
125
+ INFO: Creating lib/puppet/functions/stdlib/reverse.rb
126
+ INFO: Creating lib/puppet/functions/stdlib/round.rb
127
+ INFO: Creating lib/puppet/functions/stdlib/rstrip.rb
128
+ INFO: Creating lib/puppet/functions/stdlib/seeded_rand.rb
129
+ INFO: Creating lib/puppet/functions/stdlib/shell_escape.rb
130
+ INFO: Creating lib/puppet/functions/stdlib/shell_join.rb
131
+ INFO: Creating lib/puppet/functions/stdlib/shell_split.rb
132
+ INFO: Creating lib/puppet/functions/stdlib/shuffle.rb
133
+ INFO: Creating lib/puppet/functions/stdlib/size.rb
134
+ INFO: Creating lib/puppet/functions/stdlib/sort.rb
135
+ INFO: Creating lib/puppet/functions/stdlib/squeeze.rb
136
+ INFO: Creating lib/puppet/functions/stdlib/str2bool.rb
137
+ INFO: Creating lib/puppet/functions/stdlib/str2saltedsha512.rb
138
+ INFO: Creating lib/puppet/functions/stdlib/strftime.rb
139
+ INFO: Creating lib/puppet/functions/stdlib/strip.rb
140
+ INFO: Creating lib/puppet/functions/stdlib/suffix.rb
141
+ INFO: Creating lib/puppet/functions/stdlib/swapcase.rb
142
+ INFO: Creating lib/puppet/functions/stdlib/time.rb
143
+ INFO: Creating lib/puppet/functions/stdlib/to_bytes.rb
144
+ INFO: Creating lib/puppet/functions/stdlib/try_get_value.rb
145
+ INFO: Creating lib/puppet/functions/stdlib/type.rb
146
+ INFO: Creating lib/puppet/functions/stdlib/type3x.rb
147
+ INFO: Creating lib/puppet/functions/stdlib/union.rb
148
+ INFO: Creating lib/puppet/functions/stdlib/unique.rb
149
+ INFO: Creating lib/puppet/functions/stdlib/unix2dos.rb
150
+ INFO: Creating lib/puppet/functions/stdlib/upcase.rb
151
+ INFO: Creating lib/puppet/functions/stdlib/uriescape.rb
152
+ INFO: Creating lib/puppet/functions/stdlib/validate_absolute_path.rb
153
+ INFO: Creating lib/puppet/functions/stdlib/validate_array.rb
154
+ INFO: Creating lib/puppet/functions/stdlib/validate_augeas.rb
155
+ INFO: Creating lib/puppet/functions/stdlib/validate_bool.rb
156
+ ERROR: The function attempted to load libraries outside the function block.
157
+ WARN: cannot load such file -- puppet/util/execution (ignored)
158
+ INFO: Creating lib/puppet/functions/stdlib/validate_cmd.rb
159
+ INFO: Creating lib/puppet/functions/stdlib/validate_domain_name.rb
160
+ INFO: Creating lib/puppet/functions/stdlib/validate_email_address.rb
161
+ INFO: Creating lib/puppet/functions/stdlib/validate_hash.rb
162
+ INFO: Creating lib/puppet/functions/stdlib/validate_integer.rb
163
+ INFO: Creating lib/puppet/functions/stdlib/validate_ip_address.rb
164
+ INFO: Creating lib/puppet/functions/stdlib/validate_ipv4_address.rb
165
+ INFO: Creating lib/puppet/functions/stdlib/validate_ipv6_address.rb
166
+ INFO: Creating lib/puppet/functions/stdlib/validate_numeric.rb
167
+ INFO: Creating lib/puppet/functions/stdlib/validate_re.rb
168
+ INFO: Creating lib/puppet/functions/stdlib/validate_slength.rb
169
+ INFO: Creating lib/puppet/functions/stdlib/validate_string.rb
170
+ INFO: Creating lib/puppet/functions/stdlib/validate_x509_rsa_key_pair.rb
171
+ ERROR: Oh crap; the generated function isn't valid Ruby code!
172
+ ERROR: <compiled>:47: dynamic constant assignment
173
+ NUM_ARGS = 2 unless defined? NUM_ARGS
174
+ ^
175
+ INFO: Creating lib/puppet/functions/stdlib/values.rb
176
+ INFO: Creating lib/puppet/functions/stdlib/values_at.rb
177
+ INFO: Creating lib/puppet/functions/stdlib/zip.rb
178
+ INFO: Functions generated. Please inspect for suitability and then
179
+ INFO: update any Puppet code with the new function names.
180
+ INFO: See https://puppet.com/docs/puppet/latest/custom_functions_ruby.html
181
+ INFO: for more information about Puppet's modern Ruby function API.
182
+ ```
183
+
23
184
 
24
185
  ## Limitations
25
186
 
@@ -30,6 +30,10 @@ mean to port all the legacy functions.
30
30
  loglevel = Logger::DEBUG
31
31
  end
32
32
 
33
+ opts.on('-c', '--clean', 'Show debugging messages') do
34
+ options[:clean] = true
35
+ end
36
+
33
37
  opts.on('-n', '--namespace NAMESPACE', 'The namespace for the generated functions to live in') do |arg|
34
38
  options[:namespace] = arg
35
39
  end
data/lib/pfu.rb CHANGED
@@ -6,13 +6,16 @@ class Pfu
6
6
  def initialize(options)
7
7
  @filenames = options[:filenames]
8
8
  @namespace = options[:namespace]
9
+ @clean = options[:clean]
9
10
  end
10
11
 
11
12
  def refactor!
12
13
  @filenames.each do |path|
13
14
  next unless data = Pfu::Parser.parse(path)
14
15
  data[:namespace] = @namespace
15
- Pfu::Generator.write(data)
16
+ if Pfu::Generator.write(data)
17
+ FileUtils.rm(path) if @clean
18
+ end
16
19
  end
17
20
 
18
21
  $logger.info "Functions generated. Please inspect for suitability and then"
@@ -24,13 +24,16 @@ class Pfu::Generator
24
24
 
25
25
  begin
26
26
  # syntax check the code before writing it
27
+ # TODO: validate that it actually creates a puppet function
27
28
  RubyVM::InstructionSequence.compile(contents)
28
29
  FileUtils.mkdir_p("lib/puppet/functions/#{opts[:namespace]}")
29
30
  File.write(newpath, contents)
31
+ return true
30
32
  rescue Exception => e
31
33
  $logger.error "Oh crap; the generated function isn't valid Ruby code!"
32
34
  $logger.error e.message
33
35
  $logger.debug e.backtrace.join("\n")
36
+ return false
34
37
  end
35
38
 
36
39
  end
@@ -1,3 +1,3 @@
1
1
  class Pfu
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppet-function-updater
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Ford