Sha256: 18b4ae611ef85003aa8fb2c87ff33252e849a9a5466eb238c1b86dca9092f7a9

Contents?: true

Size: 1.63 KB

Versions: 31

Compression:

Stored size: 1.63 KB

Contents

module Docman
  class ExecuteScriptCmd < Docman::Command

    register_command :script

    def validate_command
      raise Docman::CommandValidationError.new("Please provide 'execution_dir' param") if self['execution_dir'].nil?
      raise Docman::CommandValidationError.new("Please provide 'location' param") if self['location'].nil?
      raise Docman::CommandValidationError.new("Please provide 'context'") if @context.nil?
      raise Docman::CommandValidationError.new("Context should be of type 'Info'") unless @context.is_a? Docman::Info
      replace_placeholder(self['execution_dir'])
      replace_placeholder(self['location'])
      raise Docman::CommandValidationError.new("Directory #{self['execution_dir']} not exists") unless File.directory? self['execution_dir']
      raise Docman::CommandValidationError.new("Script #{self['location']} not exists") unless File.file? self['location']
    end

    def execute
      Dir.chdir self['execution_dir']
      logger.info "Script execution: #{self['location']}"
      params = self['params'].nil? ? '' : prepare_params(self['params'])

      # Fix for ^M issue when saved from GitLab or windows.
      `cat #{self['location']} | tr -d '\r' > #{self['location']}-tmp`
      `rm -f #{self['location']}`
      `mv #{self['location']}-tmp #{self['location']}`
      `chmod a+x #{self['location']}`
      logger.info `#{self['location']} #{params}`
      $?.exitstatus
    end

    def prepare_params(params)
      result = []
      params.each do |param|
        case param
          when 'environment'
            result << @context.environment_name
        end
      end
      result.join(' ')
    end

  end
end

Version data entries

31 entries across 31 versions & 1 rubygems

Version Path
docman-0.0.107 lib/docman/commands/execute_script_cmd.rb
docman-0.0.106 lib/docman/commands/execute_script_cmd.rb
docman-0.0.105 lib/docman/commands/execute_script_cmd.rb
docman-0.0.104 lib/docman/commands/execute_script_cmd.rb
docman-0.0.103 lib/docman/commands/execute_script_cmd.rb
docman-0.0.102 lib/docman/commands/execute_script_cmd.rb
docman-0.0.101 lib/docman/commands/execute_script_cmd.rb
docman-0.0.100 lib/docman/commands/execute_script_cmd.rb
docman-0.0.99 lib/docman/commands/execute_script_cmd.rb
docman-0.0.98 lib/docman/commands/execute_script_cmd.rb
docman-0.0.97 lib/docman/commands/execute_script_cmd.rb
docman-0.0.96 lib/docman/commands/execute_script_cmd.rb
docman-0.0.95 lib/docman/commands/execute_script_cmd.rb
docman-0.0.94 lib/docman/commands/execute_script_cmd.rb
docman-0.0.93 lib/docman/commands/execute_script_cmd.rb
docman-0.0.92 lib/docman/commands/execute_script_cmd.rb
docman-0.0.91 lib/docman/commands/execute_script_cmd.rb
docman-0.0.90 lib/docman/commands/execute_script_cmd.rb
docman-0.0.89 lib/docman/commands/execute_script_cmd.rb
docman-0.0.88 lib/docman/commands/execute_script_cmd.rb