Sha256: fbd0e943ed29785c72603d6f510d7cb5510956841bc2fd31ed5d7c567467719d

Contents?: true

Size: 1.89 KB

Versions: 2

Compression:

Stored size: 1.89 KB

Contents

module Docman
  class YamlExecuteCmd < Docman::Command

    register_command :yaml_execute

    def validate_command
      raise "Please provide 'context'" if @context.nil?
      raise "Context should be of type 'Info'" unless @context.is_a? Docman::Info
      raise "Both file & inline could not be se for this command" if self['yaml_file_name'] && self['inline']
    end

    before_execute do
      self['source_type'] = 'inline' if self['source_type'].nil?
    end

    def execute
      with_logging('yaml_execute') do
        Dir.chdir @context['full_build_path']
        if self['environments'].nil? || self['environments'] == 'all' || self['environments'].include?(@context.environment_name)
          if self['providers'].nil? || self['providers'] == 'all' || self['providers'].include?(@context['provider'])
            commands = nil
            if self['source_type'] == 'file'
              yaml_file_name = self['yaml_file_name'].nil? ? '{unipipe,.unipipe,drupipe,.drupipe,build,.build}.{yaml,yml}' : self['yaml_file_name']
              build_file = Dir.glob([File.join(@context['docroot_config'].config_dir, yaml_file_name), File.join(@context['full_build_path'], yaml_file_name)]).first
              if not build_file.nil?
                build_file_yaml = YAML::load_file(build_file)
                commands = build_file_yaml[self['stage']]
                source = yaml_file_name
              end
            end
            if self['source_type'] == 'inline'
              commands = self['commands']
              source = 'inline'
            end
            unless commands.nil?
              commands.each do |cmd|
                logger.info "Execute from #{source}: #{cmd}"
                logger.info `#{cmd}`
                if $?.exitstatus > 0
                  raise "Command #{cmd} was failed"
                end
              end
            end
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
docman-0.0.83 lib/docman/commands/yaml_execute_cmd.rb
docman-0.0.82 lib/docman/commands/yaml_execute_cmd.rb