Sha256: 45216e4a2ea2e30429b5a5c65d6954edeefe1d063df8b777aeabb5b145472d25

Contents?: true

Size: 1.96 KB

Versions: 1

Compression:

Stored size: 1.96 KB

Contents

module Nailgun

  class NgCommand

    case RUBY_PLATFORM
    when /linux.*x86_64|x86_64.*linux/
      OS_PLATFORM = 'linux64'
    when /linux/
      OS_PLATFORM = 'linux32'
    when /darwin/
      OS_PLATFORM = 'darwin'
    else
      OS_PLATFORM = 'win32'
    end

    begin
      NGPATH = File.expand_path(File.join(File.dirname(__FILE__), 'java', 'bin', OS_PLATFORM, 'ng'))
    rescue NameError
      raise "OS cannot be identified"
    end

    JAVAPATH = Nailgun::NailgunConfig.options[:java_bin]
    NGJAR = File.expand_path(File.join(File.dirname(__FILE__), 'java','jar','nailgun-0.7.1.jar'))

    def self.start_server(config={})
      execute_command config do |p, s|
        "nohup #{JAVAPATH} -jar #{NGJAR} #{s}:#{p} > /dev/null 2>&1 &"
      end
    end

    def self.stop_server(config={})
      execute_command config do |p, s|
        "#{NGPATH} --nailgun-port #{p} --nailgun-server #{s} ng-stop"
      end
    end

    def self.add_cps(paths, config={})
      paths.each { |path| ng_cp path, config }
    end

    def self.ng_cp(absolute_jar_path="", config={})
      execute_command config do |p, s|
        "#{NGPATH} --nailgun-port #{p} --nailgun-server #{s} ng-cp #{absolute_jar_path}"
      end
    end

    def self.ng_alias(alias_name, class_name, config={})
      execute_command config do |p, s|
        "#{NGPATH} --nailgun-port #{p} --nailgun-server #{s} ng-alias #{alias_name} #{class_name}"
      end
    end

    def self.ng_version
      system "#{NGPATH} --nailgun-version"
    end

  private

    ##
    # Abtracts command execution plumbing
    #
    # &block is expected to return a nailgun command that can be executed in a
    # system subcall.

    def self.execute_command(config={}, &block)
      server_address = Nailgun::NailgunConfig.options[:server_address] if config[:server_address].nil?
      port_no = Nailgun::NailgunConfig.options[:port_no] if config[:port_no].nil?

      command = yield port_no, server_address
      system(command)
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
nailgun-0.0.3 lib/ng_command.rb