Sha256: f2f2751b0170cc883ead90b36a0e9e7ecd00189294fa321151db248179f2d22f

Contents?: true

Size: 1.89 KB

Versions: 11

Compression:

Stored size: 1.89 KB

Contents

module Shipit
  class DeploySpec
    class FileSystem < DeploySpec
      include PypiDiscovery
      include RubygemsDiscovery
      include CapistranoDiscovery
      include BundlerDiscovery

      def initialize(app_dir, env)
        @app_dir = Pathname(app_dir)
        @env = env
      end

      def cacheable
        DeploySpec.new(cacheable_config)
      end

      def file(path, root: false)
        if root || directory.blank?
          @app_dir.join(path)
        else
          Pathname.new(File.join(@app_dir, directory, path))
        end
      end

      private

      def cacheable_config
        (config || {}).deep_merge(
          'ci' => {
            'hide' => hidden_statuses,
            'allow_failures' => soft_failing_statuses,
            'require' => required_statuses,
          },
          'machine' => {
            'environment' => machine_env,
            'directory' => directory,
            'cleanup' => true,
          },
          'review' => {
            'checklist' => review_checklist,
            'monitoring' => review_monitoring,
            'checks' => review_checks,
          },
          'plugins' => plugins,
          'dependencies' => {'override' => dependencies_steps},
          'deploy' => {'override' => deploy_steps, 'variables' => deploy_variables.map(&:to_h)},
          'rollback' => {'override' => rollback_steps},
          'fetch' => fetch_deployed_revision_steps,
          'tasks' => cacheable_tasks,
        )
      end

      def cacheable_tasks
        (config('tasks') || {}).map { |k, c| [k, coerce_task_definition(c)] }.to_h
      end

      def config(*)
        @config ||= load_config
        super
      end

      def load_config
        read_config(file("shipit.#{@env}.yml", root: true)) ||
          read_config(file('shipit.yml', root: true))
      end

      def read_config(path)
        SafeYAML.load(path.read) if path.exist?
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
shipit-engine-0.10.0 app/models/shipit/deploy_spec/file_system.rb
shipit-engine-0.9.0 app/models/shipit/deploy_spec/file_system.rb
shipit-engine-0.8.9 app/models/shipit/deploy_spec/file_system.rb
shipit-engine-0.8.8 app/models/shipit/deploy_spec/file_system.rb
shipit-engine-0.8.7 app/models/shipit/deploy_spec/file_system.rb
shipit-engine-0.8.6 app/models/shipit/deploy_spec/file_system.rb
shipit-engine-0.8.5 app/models/shipit/deploy_spec/file_system.rb
shipit-engine-0.8.4 app/models/shipit/deploy_spec/file_system.rb
shipit-engine-0.8.3 app/models/shipit/deploy_spec/file_system.rb
shipit-engine-0.8.2 app/models/shipit/deploy_spec/file_system.rb
shipit-engine-0.8.1 app/models/shipit/deploy_spec/file_system.rb