Sha256: 330f7f0fd9f8cfe26b70d5590a78ef8d201615d8ad6812a3848745a4fc731957

Contents?: true

Size: 1.51 KB

Versions: 1

Compression:

Stored size: 1.51 KB

Contents

require 'thor'

module Cloudspin
  module Artefact

    class CLI < Thor

    class_option :source,
      :aliases => '-s',
      :banner => 'PATH',
      :default => './src',
      :desc => 'Folder with the terraform project source files'

      class_option :dist_folder,
        :aliases => '-d',
        :banner => 'PATH',
        :default => './dist',
        :desc => 'The artefact will be created in this folder'

      desc 'build', 'Assemble the files to be packaged'
      option :inspec_folder,
          :aliases => '-i',
          :banner => 'PATH',
          :default => './inspec'
      def build
        add_folder(options[:inspec_folder])
        builder.build
      end

      desc 'dist', 'Package the files'
      def package
        builder.package
      end

      desc 'publish', 'Upload the package'
      def publish
        puts 'publish'
      end

      desc 'get', 'Download a package'
      def get
        put 'get'
      end


      no_commands do
        def builder
          @builder ||= Cloudspin::Stack::Artefact::Builder.new(
            stack_definition: stack_definition,
            dist_folder: options[:dist_folder]
          )
        end

        def add_folder(folder = nil)
          builder.add_folder_to_package(folder) if Dir.exists?(folder)
        end

        def stack_definition
          @definition ||= Cloudspin::Stack::Definition.from_file(options[:source] + '/stack-definition.yaml')
        end
      end

      def self.exit_on_failure?
        true
      end

    end

  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cloudspin-stack-artefact-0.1.5 lib/cloudspin/stack/artefact/cli.rb