Class: Compass::Commands::WriteConfiguration

Inherits:
ProjectBase show all
Includes:
InstallerCommand
Defined in:
lib/compass/commands/write_configuration.rb

Instance Attribute Summary

Attributes inherited from ProjectBase

#options, #project_name

Attributes inherited from Base

#options, #working_path

Attributes included from Actions

#logger

Class Method Summary collapse

Instance Method Summary collapse

Methods included from InstallerCommand

#app, #configure!, #installer

Methods inherited from ProjectBase

#execute

Methods inherited from Base

#execute, #failed!, register, #successful?

Methods included from Actions

#basename, #copy, #directory, #log_action, #process_erb, #relativize, #remove, #separate, #strip_trailing_separator, #write_file

Constructor Details

#initialize(working_path, options) ⇒ WriteConfiguration

Returns a new instance of WriteConfiguration.



36
37
38
39
# File 'lib/compass/commands/write_configuration.rb', line 36

def initialize(working_path, options)
  super
  assert_project_directory_exists!
end

Class Method Details

.description(command) ⇒ Object



100
101
102
# File 'lib/compass/commands/write_configuration.rb', line 100

def description(command)
  "Generate a configuration file for the provided command line options."
end

.option_parser(arguments) ⇒ Object



89
90
91
92
93
94
# File 'lib/compass/commands/write_configuration.rb', line 89

def option_parser(arguments)
  parser = Compass::Exec::CommandOptionParser.new(arguments)
  parser.extend(Compass::Exec::GlobalOptionsParser)
  parser.extend(Compass::Exec::ProjectOptionsParser)
  parser.extend(ConfigurationOptionsParser)
end

.parse!(arguments) ⇒ Object



104
105
106
107
108
109
# File 'lib/compass/commands/write_configuration.rb', line 104

def parse!(arguments)
  parser = option_parser(arguments)
  parser.parse!
  parse_arguments!(parser, arguments)
  parser.options
end

.parse_arguments!(parser, arguments) ⇒ Object



111
112
113
114
115
116
117
118
119
# File 'lib/compass/commands/write_configuration.rb', line 111

def parse_arguments!(parser, arguments)
  if arguments.size == 1
    parser.options[:configuration_file] = arguments.shift
  elsif arguments.size == 0
    # default to the current directory.
  else
    raise Compass::Error, "Too many arguments were specified."
  end
end

.usageObject



96
97
98
# File 'lib/compass/commands/write_configuration.rb', line 96

def usage
  option_parser([]).to_s
end

Instance Method Details

#add_project_configurationObject



41
42
43
# File 'lib/compass/commands/write_configuration.rb', line 41

def add_project_configuration
  Compass.add_project_configuration
end

#explicit_config_file_must_be_readable?Boolean

Returns:

  • (Boolean)


83
84
85
# File 'lib/compass/commands/write_configuration.rb', line 83

def explicit_config_file_must_be_readable?
  false
end

#installer_argsObject



79
80
81
# File 'lib/compass/commands/write_configuration.rb', line 79

def installer_args
  [nil, project_directory, options]
end

#performObject



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/compass/commands/write_configuration.rb', line 45

def perform
  if options[:display]
    if Compass.configuration.respond_to?(options[:display])
      puts Compass.configuration.send(options[:display])
    else
      raise Compass::Error, "ERROR: configuration property '#{options[:display]}' does not exist"
    end
  elsif options[:debug]
    puts "Configuration sources:"
    c = Compass.configuration
    while c
      print c.name
      c = c.inherited_data
      print ", " if c
    end
    print "\n"
    Compass.configuration.debug.each do |prop, values|
      if options[:debug].is_a?(Symbol)
        next unless prop == options[:debug]
      end
      puts "***** #{prop} = #{values.first[:resolved].inspect} *****"
      [:default, :value, :raw, :resolved].each do |kind|
        puts "#{kind}: " + values.inject([]){|m, v| m << v[kind]}.map{|v| v.nil? ? '-' : v.inspect}.join(", ")
      end
    end
  else
    config_file = options[:configuration_file]
    config_file ||= Compass.detect_configuration_file
    config_file ||= Compass::Configuration::Helpers::KNOWN_CONFIG_LOCATIONS.first
    directory File.dirname(config_file)
    installer.write_configuration_files(config_file)
  end
end