(CONT-844) - Update .sync.yml
[puppet-modules/puppetlabs-apt.git] / tasks / init.rb
1 #!/opt/puppetlabs/puppet/bin/ruby
2 # frozen_string_literal: true
3
4 require 'json'
5 require 'open3'
6 require 'puppet'
7
8 def apt_get(action)
9   cmd = ['apt-get', action]
10   cmd << '-y' if ['upgrade', 'dist-upgrade', 'autoremove'].include?(action)
11   if ['upgrade', 'dist-upgrade'].include?(action)
12     ENV['DEBIAN_FRONTEND'] = 'noninteractive'
13     cmd << '-o'
14     cmd << 'Dpkg::Options="--force-confdef"'
15     cmd << '-o'
16     cmd << 'Dpkg::Options="--force-confold"'
17   end
18   stdout, stderr, status = Open3.capture3(*cmd)
19   raise Puppet::Error, stderr if status != 0
20   { status: stdout.strip }
21 end
22
23 params = JSON.parse(STDIN.read)
24 action = params['action']
25
26 begin
27   result = apt_get(action)
28   puts result.to_json
29   exit 0
30 rescue Puppet::Error => e
31   puts({ status: 'failure', error: e.message }.to_json)
32   exit 1
33 end