Sha256: b4d10033723de80525188cd4e987a3490523587a7a5425a3d0fc6dc7b6a45422

Contents?: true

Size: 956 Bytes

Versions: 1

Compression:

Stored size: 956 Bytes

Contents

require 'linecook/commands/command'
require 'linecook/cookbook'
require 'linecook/recipe'
require 'yaml'

module Linecook
  module Commands
    
    # ::desc generates a package
    #
    # Generates a package.
    #
    class Package < Command
      config :cookbook_dir, '.', :short => :d       # the cookbook directory
      config :force, false, :short => :f, &c.flag   # force creation
      
      def process(source, target=nil)
        target ||= default_target(source)
        
        if File.exists?(target)
          if force
            FileUtils.rm_r(target)
          else
            raise "already exists: #{target}"
          end
        end
        
        log :create, File.basename(target)
        
        env = Linecook::Cookbook.init(cookbook_dir).env(source)
        Linecook::Recipe.build(env).export(target)
      end
      
      def default_target(source)
        source.chomp(File.extname(source))
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
linecook-0.6.2 lib/linecook/commands/package.rb