class Nginxtra::Actions::Convert

Public Instance Methods

convert() click to toggle source
# File lib/nginxtra/actions/convert.rb, line 8
def convert
  @streams_to_close = []
  converter = Nginxtra::ConfigConverter.new output
  converter.convert config: config, binary_status: binary_status
  save_if_necessary!
ensure
  close_streams!
end

Private Instance Methods

binary_status() click to toggle source
# File lib/nginxtra/actions/convert.rb, line 44
def binary_status
  return if @thor.options["ignore-nginx-bin"]

  binary = if @thor.options["nginx-bin"]
             @thor.options["nginx-bin"]
           else
             etc_nginx_binary
           end

  @thor.run "#{binary} -V 2>&1", capture: true
end
close_streams!() click to toggle source
# File lib/nginxtra/actions/convert.rb, line 71
def close_streams!
  @streams_to_close.each(&:close)
end
config() click to toggle source
# File lib/nginxtra/actions/convert.rb, line 36
def config
  if @thor.options["input"]
    STDIN
  elsif @thor.options["nginx-conf"]
    open_file @thor.options["nginx-conf"]
  end
end
etc_nginx_binary() click to toggle source
# File lib/nginxtra/actions/convert.rb, line 56
def etc_nginx_binary
  raise Nginxtra::Error::NginxInitScriptMissing unless File.exist? "/etc/init.d/nginx"
  binary = File.read("/etc/init.d/nginx")[/\s*DAEMON\s*=\s*(.*?)\s*$/, 1]
  raise Nginxtra::Error::UndeterminedNginxBinary unless binary
  binary
end
open_file(path) click to toggle source
# File lib/nginxtra/actions/convert.rb, line 63
def open_file(path)
  raise Nginxtra::Error::ConvertFailed, "Missing config file #{path}" unless File.exist? path

  File.open(path, "r").tap do |stream|
    @streams_to_close << stream
  end
end
output() click to toggle source
# File lib/nginxtra/actions/convert.rb, line 19
def output
  if @thor.options["output"]
    STDOUT
  elsif @thor.options["config"]
    @output = @thor.options["config"]
    @stringio = StringIO.new
  else
    @output = "nginxtra.conf.rb"
    @stringio = StringIO.new
  end
end
save_if_necessary!() click to toggle source
# File lib/nginxtra/actions/convert.rb, line 31
def save_if_necessary!
  return unless @output && @stringio
  @thor.create_file @output, @stringio.string
end