Sha256: ba9767497fce98194d048a1e54479c110e72b849306f9ee71c65f03ec644188f

Contents?: true

Size: 855 Bytes

Versions: 2

Compression:

Stored size: 855 Bytes

Contents

# frozen_string_literal: true

module Pups
  class FileCommand < Pups::Command
    attr_accessor :path, :contents, :params, :type, :chmod, :chown

    def self.from_hash(hash, params)
      command = new
      command.path = hash['path']
      command.contents = hash['contents']
      command.chmod = hash['chmod']
      command.chown = hash['chown']
      command.params = params

      command
    end

    def initialize
      @params = {}
      @type = :bash
    end

    attr_writer :params

    def run
      path = interpolate_params(@path)

      `mkdir -p #{File.dirname(path)}`
      File.open(path, 'w') do |f|
        f.write(interpolate_params(contents))
      end
      `chmod #{@chmod} #{path}` if @chmod
      `chown #{@chown} #{path}` if @chown
      Pups.log.info("File > #{path}  chmod: #{@chmod}  chown: #{@chown}")
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
pups-1.1.1 lib/pups/file_command.rb
pups-1.1.0 lib/pups/file_command.rb