Module: Emoji::CLI

Extended by:
CLI
Included in:
CLI
Defined in:
lib/emoji/cli.rb

Constant Summary collapse

InvalidUsage =
Class.new(RuntimeError)
VALID_SIZES =
[ 20, 32, 40, 48, 64, 96, 160 ]

Instance Method Summary collapse

Instance Method Details

#dispatch(argv) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/emoji/cli.rb', line 11

def dispatch(argv)
  cmd = argv[0]
  argv = argv[1..-1]

  case cmd
  when "extract"
    public_send(cmd, argv)
  when "help", "--help", "-h"
    help
  else
    raise InvalidUsage
  end

  return 0
rescue InvalidUsage, OptionParser::InvalidArgument, OptionParser::InvalidOption => err
  unless err.message == err.class.to_s
    $stderr.puts err.message
    $stderr.puts
  end
  $stderr.puts usage_text
  return 1
end

#extract(argv) ⇒ Object

Raises:



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/emoji/cli.rb', line 40

def extract(argv)
  size = 64

  OptionParser.new do |opts|
    opts.on("--size=#{size}", Integer) do |val|
      if VALID_SIZES.include?(val)
        size = val
      else
        raise InvalidUsage, "size should be one of: #{VALID_SIZES.join(', ')}"
      end
    end
  end.parse!(argv)

  raise InvalidUsage unless argv.size == 1
  path = argv[0]

  Emoji::Extractor.new(size, path).extract!
  Dir["#{Emoji.images_path}/*.png"].each do |png|
    FileUtils.cp(png, File.join(path, File.basename(png)))
  end
end

#helpObject



34
35
36
# File 'lib/emoji/cli.rb', line 34

def help
  puts usage_text
end

#usage_textObject



62
63
64
65
66
# File 'lib/emoji/cli.rb', line 62

def usage_text
  <<EOF
Usage: gemoji extract <path> [--size=64]
EOF
end