Class: Node::Compiler::Npm

Inherits:
Object
  • Object
show all
Defined in:
lib/node/compiler/npm.rb

Instance Method Summary collapse

Constructor Details

#initialize(module_name, module_version, tmpdir) ⇒ Npm

Returns a new instance of Npm.



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/node/compiler/npm.rb', line 15

def initialize(module_name, module_version, tmpdir)
  @module_name = module_name
  @module_version = module_version
  @work_dir = File.expand_path("#{@module_name}-#{@module_version}", tmpdir)
  FileUtils.mkdir_p(@work_dir)
  @package_path = File.join(@work_dir, "node_modules/#{@module_name}/package.json")
  Utils.chdir(@work_dir) do
    File.open("package.json", "w") do |f|
      package = %Q({"dependencies": {"#{@module_name}": "#{@module_version}"}})
      f.puts package
    end
    Utils.run("npm -v")
    Utils.run("npm install")
  end
end

Instance Method Details

#get_entrance(bin_name) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/node/compiler/npm.rb', line 31

def get_entrance(bin_name)
  @bin_name = bin_name
  unless File.exist?(@package_path)
    raise Error, "No package.json exist at #{@package_path}."
  end
  @package_json = JSON.parse File.read @package_path
  @binaries = @package_json['bin']
  if @binaries
    STDERR.puts "Detected binaries: #{@binaries}"
  else
    raise Error, "No binaries detected inside #{@package_path}."
  end
  if @binaries[@bin_name]
    STDERR.puts "Using #{@bin_name} at #{@binaries[@bin_name]}"
  else
    raise Error, "No such binary: #{@bin_name}"
  end
  return File.expand_path("node_modules/#{@module_name}/#{@binaries[@bin_name]}", @work_dir)
end