# class Chef::Provider::Script

### Public Class Methods

new(new_resource, run_context) click to toggle source
Calls superclass method Chef::Provider.new

    # File lib/chef/provider/script.rb, line 26
    def initialize(new_resource, run_context)
      super
      @code = @new_resource.code
    end

### Public Instance Methods

action_run() click to toggle source
Calls superclass method Chef::Provider::Execute#action_run

    # File lib/chef/provider/script.rb, line 31
    def action_run
      script_file.puts(@code)
      script_file.close

      set_owner_and_group

      @new_resource.command("\"#{interpreter}\" #{flags} \"#{script_file.path}\"")
      super
      converge_by(nil) do
        # ensure script is unlinked at end of converge!
        unlink_script_file
      end
    end

flags() click to toggle source

    # File lib/chef/provider/script.rb, line 64
    def flags
      @new_resource.flags
    end

interpreter() click to toggle source

    # File lib/chef/provider/script.rb, line 60
    def interpreter
      @new_resource.interpreter
    end

script_file() click to toggle source

    # File lib/chef/provider/script.rb, line 52
    def script_file
      @script_file ||= Tempfile.open("chef-script")
    end

set_owner_and_group() click to toggle source

    # File lib/chef/provider/script.rb, line 45
    def set_owner_and_group
      # FileUtils itself implements a no-op if +user+ or +group+ are nil
      # You can prove this by running FileUtils.chown(nil,nil,'/tmp/file')
      # as an unprivileged user.
      FileUtils.chown(@new_resource.user, @new_resource.group, script_file.path)
    end

unlink_script_file() click to toggle source

    # File lib/chef/provider/script.rb, line 56
    def unlink_script_file
      @script_file && @script_file.close!
    end