Skip to content

Commit 30e6554

Browse files
authored
Merge pull request #3343 from tlehman/PE39083
(PE-39083) Upgrade module versions to latest
2 parents 40b726c + fd49b7a commit 30e6554

File tree

2 files changed

+69
-4
lines changed

2 files changed

+69
-4
lines changed

Puppetfile

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,15 @@ moduledir File.join(File.dirname(__FILE__), 'modules')
66

77
# Core modules used by 'apply'
88
mod 'puppetlabs-service', '3.0.0'
9-
mod 'puppetlabs-puppet_agent', '4.19.0'
10-
mod 'puppetlabs-facts', '1.4.0'
9+
mod 'puppetlabs-puppet_agent', '4.20.1'
10+
mod 'puppetlabs-facts', '1.6.0'
1111

1212
# Core types and providers for Puppet 6
1313
mod 'puppetlabs-augeas_core', '1.5.0'
1414
mod 'puppetlabs-host_core', '1.3.0'
1515
mod 'puppetlabs-scheduled_task', '4.0.0'
1616
mod 'puppetlabs-sshkeys_core', '2.5.0'
17-
mod 'puppetlabs-zfs_core', '1.5.0'
17+
mod 'puppetlabs-zfs_core', '1.6.1'
1818
mod 'puppetlabs-cron_core', '1.3.0'
1919
mod 'puppetlabs-mount_core', '1.3.0'
2020
mod 'puppetlabs-selinux_core', '1.4.0'
@@ -32,7 +32,7 @@ mod 'puppetlabs-powershell_task_helper', '0.1.0'
3232
mod 'puppetlabs-ruby_task_helper', '0.6.1'
3333
mod 'puppetlabs-ruby_plugin_helper', '0.2.0'
3434
mod 'puppetlabs-python_task_helper', '0.5.0'
35-
mod 'puppetlabs-bash_task_helper', '2.0.0'
35+
mod 'puppetlabs-bash_task_helper', '2.1.1'
3636

3737
# Plugin modules
3838
mod 'puppetlabs-aws_inventory', '0.7.0'

dev-resources/bump_mods.rb

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# frozen_string_literal: true
2+
3+
# Bump the module versions in the Puppetfile to the latest version
4+
# published on https://forge.puppet.com
5+
require 'open-uri'
6+
require 'pry'
7+
require 'rss'
8+
9+
def parse_puppetfile_get_mod_versions
10+
module_re = /^mod 'puppetlabs-([a-z_\-]+)', *'([0-9.]+)'$/i
11+
versions = {}
12+
File.foreach('Puppetfile') do |line|
13+
match = module_re.match(line)
14+
if match
15+
versions[match[1].strip] = match[2].strip
16+
end
17+
end
18+
versions
19+
end
20+
21+
def latest_version_for_module(mod)
22+
url = "https://forge.puppet.com/modules/puppetlabs/#{mod}/rss"
23+
# rubocop:disable Security/Open
24+
feed = RSS::Parser.parse(URI.open(url))
25+
# rubocop:enable Security/Open
26+
27+
feed.items&.first&.description
28+
end
29+
30+
# get modules to update
31+
versions_old = parse_puppetfile_get_mod_versions
32+
versions_new = {}
33+
34+
versions_old.each do |mod, ver|
35+
ver_new = latest_version_for_module(mod)
36+
37+
if !ver_new.nil? && (ver != ver_new)
38+
versions_new[mod] = ver_new
39+
end
40+
end
41+
42+
def puppetfile_set_mod_versions!(versions_new)
43+
module_re = /^mod 'puppetlabs-([a-z_\-]+)', *'([0-9.]+)'$/i
44+
lines = File.open('Puppetfile').readlines
45+
46+
# update lines
47+
lines.each do |line|
48+
next unless line.start_with?("mod 'puppetlabs")
49+
match = module_re.match(line)
50+
next unless match
51+
mod = match[1].strip
52+
ver_old = match[2].strip
53+
ver_new = versions_new[mod]
54+
unless ver_new.nil?
55+
line.gsub!(/'([0-9.]+)'/, "'#{ver_new}'")
56+
puts "Updated #{mod} from #{ver_old} to #{ver_new}"
57+
end
58+
end
59+
60+
# update Puppetfile
61+
File.open('Puppetfile', 'w').puts(lines.join)
62+
end
63+
64+
# Update the Puppetfile with the new versions
65+
puppetfile_set_mod_versions!(versions_new)

0 commit comments

Comments
 (0)