Sha256: 2a1477e7c391f27bb695d242dfcba69777272c5c8d488496e8536c8571a3b94b

Contents?: true

Size: 1.6 KB

Versions: 9

Compression:

Stored size: 1.6 KB

Contents

module Bones::App
class Freeze < Command

  def self.initialize_freeze
    synopsis 'bones freeze [options] [skeleton_name]'

    summary 'create a new skeleton in ~/.mrbones/'

    description <<-__
Freeze the project skeleton to the current Mr Bones project skeleton.
If a name is not given, then the default name "default" will be used.
Optionally a git or svn repository can be frozen as the project
skeleton.
    __

    option(standard_options[:repository])
    option(standard_options[:verbose])
  end

  def run
    fm = FileManager.new(
      :source => repository || ::Bones.path(DEFAULT_SKELETON),
      :destination => output_dir,
      :stdout => stdout,
      :stderr => stderr,
      :verbose => verbose?
    )

    fm.archive_destination
    return freeze_to_repository if repository

    fm.copy

    stdout.puts "Project skeleton #{name.inspect} " <<
                "has been frozen to Mr Bones #{::Bones::VERSION}"
  end

  def parse( args )
    opts = super args
    config[:name] = args.empty? ? DEFAULT_SKELETON : args.join('_')
    config[:output_dir] = File.join(mrbones_dir, name)
  end

  # Freeze the project skeleton to the git or svn repository that the user
  # passed in on the command line. This essentially creates an alias to the
  # reposiory using the name passed in on the command line.
  #
  def freeze_to_repository
    FileUtils.mkdir_p(File.dirname(output_dir))
    File.open(output_dir, 'w') {|fd| fd.puts repository}
    stdout.puts "Project skeleton #{name.inspect} " <<
                "has been frozen to #{repository.inspect}"
  end

end  # class Freeze
end  # module Bones::App

# EOF

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
bones-3.3.0 lib/bones/app/freeze.rb
bones-3.2.1 lib/bones/app/freeze.rb
bones-3.2.0 lib/bones/app/freeze.rb
bones-3.1.3 lib/bones/app/freeze.rb
bones-3.1.2 lib/bones/app/freeze.rb
bones-3.1.1 lib/bones/app/freeze.rb
bones-3.1.0 lib/bones/app/freeze.rb
bones-3.0.1 lib/bones/app/freeze.rb
bones-3.0.0 lib/bones/app/freeze.rb