class Bones::App::Freeze

Public Class Methods

initialize_freeze() click to toggle source
# File lib/bones/app/freeze.rb, line 5
  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])
    option(standard_options[:colorize])
  end

Public Instance Methods

freeze_to_repository() click to toggle source

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.

# File lib/bones/app/freeze.rb, line 51
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
parse( args ) click to toggle source
Calls superclass method Bones::App::Command#parse
# File lib/bones/app/freeze.rb, line 40
def parse( args )
  opts = super args
  config[:name] = args.empty? ? DEFAULT_SKELETON : args.join('_')
  config[:output_dir] = File.join(mrbones_dir, name)
  opts
end
run() click to toggle source
# File lib/bones/app/freeze.rb, line 22
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