Class: Awestruct::CLI::Invoker

Inherits:
Object
  • Object
show all
Defined in:
lib/awestruct/cli/invoker.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*options) ⇒ Invoker

Returns a new instance of Invoker.



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/awestruct/cli/invoker.rb', line 23

def initialize(*options)
  options = options.flatten
  if ( ( ! options.empty? ) && ( options.first === Awestruct::CLI::Options ) )
    @options = options.first
  else
    @options = Awestruct::CLI::Options.parse! options
  end
  @threads = []
  @profile = nil
  @success = true
  logging_path = Pathname.new '.awestruct'
  logging_path.mkdir unless logging_path.exist?
  $LOG = Logger.new(Awestruct::AwestructLoggerMultiIO.new(@options.verbose, STDOUT, File.open('.awestruct/debug.log', 'w')))
  $LOG.level = @options.verbose ? Logger::DEBUG : Logger::INFO
  $LOG.formatter = Awestruct::AwestructLogFormatter.new
end

Instance Attribute Details

#configObject (readonly)

Returns the value of attribute config.



19
20
21
# File 'lib/awestruct/cli/invoker.rb', line 19

def config
  @config
end

#optionsObject (readonly)

Returns the value of attribute options.



17
18
19
# File 'lib/awestruct/cli/invoker.rb', line 17

def options
  @options
end

#profileObject (readonly)

Returns the value of attribute profile.



20
21
22
# File 'lib/awestruct/cli/invoker.rb', line 20

def profile
  @profile
end

#successObject (readonly)

Returns the value of attribute success.



21
22
23
# File 'lib/awestruct/cli/invoker.rb', line 21

def success
  @success
end

Instance Method Details

#invoke!Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/awestruct/cli/invoker.rb', line 40

def invoke!
  load_profile() unless ( options.init )

  setup_config()

  invoke_init()      if ( options.init )
  invoke_script()    if ( options.script )
  invoke_force()     if ( options.force )
  invoke_generate()  if ( options.generate )
  invoke_deploy()    if ( options.deploy )
  invoke_server()    if ( options.server )
  invoke_auto()      if ( options.auto )

  wait_for_completion()
  success
end

#invoke_autoObject



118
119
120
# File 'lib/awestruct/cli/invoker.rb', line 118

def invoke_auto()
  Awestruct::CLI::Auto.new( config ).run
end

#invoke_deployObject



107
108
109
110
111
112
113
114
115
116
# File 'lib/awestruct/cli/invoker.rb', line 107

def invoke_deploy()
  deploy_config = profile[ 'deploy' ]

  if ( deploy_config.nil? )
    $LOG.error "No configuration for 'deploy'" if $LOG.error?
    return
  end

  Awestruct::CLI::Deploy.new( config, deploy_config ).run
end

#invoke_forceObject



98
99
100
101
# File 'lib/awestruct/cli/invoker.rb', line 98

def invoke_force()
  FileUtils.rm_rf( File.join( config.dir, '.awestruct', 'dependency-cache' ) )
  FileUtils.rm_rf( config.output_dir )
end

#invoke_generateObject



103
104
105
# File 'lib/awestruct/cli/invoker.rb', line 103

def invoke_generate()
  @success = Awestruct::CLI::Generate.new( config, options.profile, options.base_url, 'http://localhost:4242', options.force ).run
end

#invoke_initObject



91
92
93
# File 'lib/awestruct/cli/invoker.rb', line 91

def invoke_init()
  Awestruct::CLI::Init.new( Dir.pwd, options.framework, options.scaffold ).run
end

#invoke_scriptObject



95
96
# File 'lib/awestruct/cli/invoker.rb', line 95

def invoke_script()
end

#invoke_serverObject



122
123
124
# File 'lib/awestruct/cli/invoker.rb', line 122

def invoke_server()
  run_in_thread( Awestruct::CLI::Server.new( './_site', options.bind_addr, options.port ) )
end

#load_profileObject



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/awestruct/cli/invoker.rb', line 57

def load_profile()
  site_yaml_file = File.join( Dir.pwd, '_config', 'site.yml' )
  if ( File.exist?( site_yaml_file ) )
    site_yaml      = YAML.load( File.read( site_yaml_file ) )
    if site_yaml
      profiles_data  = site_yaml['profiles'] || {}
      @profile = if profiles_data.nil?
        nil
      else
        if options.profile
          profiles_data[options.profile] || {}
        else
          # if no profile given, pick the first with deploy config
          options.profile, profile_data = profiles_data.select { |k,v| v && v['deploy'] }.first
          profile_data
        end
      end
    end
  end
 
  unless @profile
    $LOG.error "Unable to locate profile: #{options.profile}" if options.profile && $LOG.error?
    options.profile = 'NONE'
    @profile = {}
  end 
  $LOG.info "Using profile: #{options.profile}" if $LOG.info?
end

#setup_configObject



85
86
87
88
89
# File 'lib/awestruct/cli/invoker.rb', line 85

def setup_config()
  @config = Awestruct::Config.new( Dir.pwd )
  @config.track_dependencies = true if ( options.auto )
  @config.verbose = true if ( options.verbose )
end