237da9b0b66c60a1e03aa855f5edb2a2268d4f8a
[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   ENV['DEBIAN_FRONTEND'] = 'noninteractive' if ['upgrade', 'dist-upgrade'].include?(action)
12   stdout, stderr, status = Open3.capture3(*cmd)
13   raise Puppet::Error, stderr if status != 0
14   { status: stdout.strip }
15 end
16
17 params = JSON.parse(STDIN.read)
18 action = params['action']
19
20 begin
21   result = apt_get(action)
22   puts result.to_json
23   exit 0
24 rescue Puppet::Error => e
25   puts({ status: 'failure', error: e.message }.to_json)
26   exit 1
27 end