Class: Fresco::CLI

Inherits:
Object
  • Object
show all
Defined in:
lib/fresco/cli.rb,
lib/fresco/cli/dev.rb,
lib/fresco/cli/new.rb,
lib/fresco/cli/build.rb,
lib/fresco/cli/release.rb

Defined Under Namespace

Classes: Build, Dev, New, Release

Constant Summary collapse

COMMANDS =
{
  "new"     => "Fresco::CLI::New",
  "build"   => "Fresco::CLI::Build",
  "dev"     => "Fresco::CLI::Dev",
  "release" => "Fresco::CLI::Release",
}.freeze

Class Method Summary collapse

Class Method Details



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/fresco/cli.rb', line 40

def self.print_usage
  puts <<~USAGE
    Usage: fresco <command> [args]

    Commands:
      new <name>    Scaffold a new Fresco app in ./<name>/
      build         Regenerate generated/* from config + app/
      dev           Run the CRuby dev loop (build + watch + serve)
      release       Build a Spinel-compiled binary at ./build/app

    Flags:
      -h, --help     Show this message
      -v, --version  Show fresco version
  USAGE
end

.start(argv) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/fresco/cli.rb', line 15

def self.start(argv)
  cmd = argv.first

  if cmd.nil? || cmd == "--help" || cmd == "-h"
    print_usage
    return 0
  end

  if cmd == "--version" || cmd == "-v"
    puts "fresco #{Fresco::VERSION}"
    return 0
  end

  const_name = COMMANDS[cmd]
  unless const_name
    warn "fresco: unknown command #{cmd.inspect}"
    print_usage
    return 1
  end

  require "fresco/cli/#{cmd}"
  klass = const_name.split("::").inject(Object) { |m, n| m.const_get(n) }
  klass.new.run(argv[1..])
end