puppet-function-updater 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
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