Class: Bones::App::Freeze

Inherits:
Command show all
Defined in:
lib/bones/app/freeze.rb

Constant Summary

Constants inherited from Command

Command::DEFAULT_SKELETON

Constants included from Colors

Colors::COLORS

Instance Attribute Summary

Attributes inherited from Command

#config, #stderr, #stdout

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Command

#in_directory, inherited, #initialize, #mrbones_dir, #name, #output_dir, #repository, #skeleton_dir, #standard_options, standard_options, #verbose?

Methods included from Colors

#colorize, #colorize?

Constructor Details

This class inherits a constructor from Bones::App::Command

Class Method Details

.initialize_freezeObject



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 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

Instance Method Details

#freeze_to_repositoryObject

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.



51
52
53
54
55
56
# 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) ⇒ Object



40
41
42
43
44
45
# 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

#runObject



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# 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