Class: Nem

Inherits:
Object
  • Object
show all
Defined in:
lib/nem.rb,
lib/nem/version.rb

Constant Summary collapse

VERSION =
"1.0.1".freeze

Instance Method Summary collapse

Constructor Details

#initialize(tty = false, *keywords) ⇒ Nem

Returns a new instance of Nem.



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/nem.rb', line 6

def initialize(tty = false, *keywords)
  @keywords = keywords
  @tty = tty

  if @tty
    @gemspec_file = Dir['*.gemspec'].first

    unless File.file?(@gemspec_file)
      raise ArgumentError, "no gemspec in your current directory found"
    end

    gemspec_content = File.read(@gemspec_file)
  else
    @gemspec_file = '-'
    gemspec_content = $stdin.read
  end

  @gemspec = eval gemspec_content, binding, @gemspec_file
end

Instance Method Details

#generateObject



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/nem.rb', line 46

def generate
  JSON.pretty_generate(
    "name" => @gemspec.name,
    "version" => @gemspec.version,
    "description" => @gemspec.description,
    "homepage" => @gemspec.homepage,
    "author" => {
      "name" => @gemspec.author || Array(@gemspec.authors).first,
      "email" => Array(@gemspec.email).first,
    },
    "keywords" => ["nem", *@keywords],
    "preferGlobal" => true,
    "bin" => Hash[@gemspec.executables.map{ |bin|
      [File.basename(bin), "bin/#{File.basename(bin)}"]
    }],
    "license" => @gemspec.license
  )
end

#runObject



36
37
38
39
40
41
42
43
44
# File 'lib/nem.rb', line 36

def run
  validate
  if @tty
    File.write "package.json", generate
    puts "Converted #@gemspec_file to package.json"
  else
    puts generate
  end
end

#validateObject



26
27
28
29
30
31
32
33
34
# File 'lib/nem.rb', line 26

def validate
  unless @gemspec.runtime_dependencies.empty?
    raise ArgumentError, 'dependencies are not supported'
  end

  if @gemspec.executables.empty?
    raise ArgumentError, "you must specify at least one executable"
  end
end