Sha256: cfef3504dd9857eaec58d8ba5e8420f56702f2129726674f940049d08dd0f8a0

Contents?: true

Size: 1.9 KB

Versions: 12

Compression:

Stored size: 1.9 KB

Contents

module Shipit
  class TaskCommands < Commands
    delegate :fetch, to: :stack_commands

    def initialize(task)
      @task = task
      @stack = task.stack
    end

    def deploy_spec
      @deploy_spec ||= DeploySpec::FileSystem.new(@task.working_directory, @stack.environment)
    end

    def install_dependencies
      deploy_spec.dependencies_steps!.map do |command_line|
        Command.new(command_line, env: env, chdir: steps_directory)
      end
    end

    def perform
      steps.map do |command_line|
        Command.new(command_line, env: env, chdir: steps_directory)
      end
    end

    def steps
      @task.definition.steps
    end

    def env
      normalized_name = ActiveSupport::Inflector.transliterate(@task.author.name)
      super.merge(
        'ENVIRONMENT' => @stack.environment,
        'BRANCH' => @stack.branch,
        'USER' => "#{@task.author.login} (#{normalized_name}) via Shipit",
        'EMAIL' => @task.author.email,
        'BUNDLE_PATH' => Rails.root.join('data', 'bundler').to_s,
        'SHIPIT_LINK' => permalink,
        'LAST_DEPLOYED_SHA' => @stack.last_deployed_commit.sha,
      ).merge(deploy_spec.machine_env).merge(@task.env)
    end

    def checkout(commit)
      git('checkout', commit.sha, chdir: @task.working_directory)
    end

    def clone
      git('clone', '--local', @stack.git_path, @task.working_directory, chdir: @stack.deploys_path)
    end

    def stack_commands
      @stack_commands = StackCommands.new(@stack)
    end

    def clear_working_directory
      FileUtils.rm_rf(@task.working_directory) if deploy_spec.clear_working_directory?
    end

    protected

    def steps_directory
      if sub_directory = deploy_spec.directory.presence
        File.join(@task.working_directory, sub_directory)
      else
        @task.working_directory
      end
    end

    def permalink
      Shipit::Engine.routes.url_helpers.stack_task_url(@stack, @task)
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
shipit-engine-0.11.0 lib/shipit/task_commands.rb
shipit-engine-0.10.0 lib/shipit/task_commands.rb
shipit-engine-0.9.0 lib/shipit/task_commands.rb
shipit-engine-0.8.9 lib/shipit/task_commands.rb
shipit-engine-0.8.8 lib/shipit/task_commands.rb
shipit-engine-0.8.7 lib/shipit/task_commands.rb
shipit-engine-0.8.6 lib/shipit/task_commands.rb
shipit-engine-0.8.5 lib/shipit/task_commands.rb
shipit-engine-0.8.4 lib/shipit/task_commands.rb
shipit-engine-0.8.3 lib/shipit/task_commands.rb
shipit-engine-0.8.2 lib/shipit/task_commands.rb
shipit-engine-0.8.1 lib/shipit/task_commands.rb