Module: ShapeupCli::Surface

Defined in:
lib/shapeup_cli/surface.rb

Overview

Serializes the entire CLI surface — commands, subcommands, flags — into sorted lines, snapshotted in SURFACE.txt and gated by surface_test.rb so no command or flag appears or disappears without a reviewed diff.

Constant Summary collapse

TOP_LEVEL_COMMANDS =
%w[ login logout commands help version ].freeze

Class Method Summary collapse

Class Method Details

.linesObject



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/shapeup_cli/surface.rb', line 10

def self.lines
  lines = []

  TOP_LEVEL_COMMANDS.each { |name| lines << "CMD shapeup #{name}" }

  ShapeupCli.[:shortcuts].each_key do |shortcut|
    lines << "CMD shapeup #{shortcut.split.first}"
  end

  ShapeupCli.[:inherited_flags].each do |flag|
    lines << "FLAG shapeup --#{flag[:name]} #{flag[:type]}"
  end

  ShapeupCli::COMMAND_MAP.each do |name, klass|
    lines << "CMD shapeup #{name}"
     = klass.
    ([:subcommands] || []).each do |sub|
      lines << "SUB shapeup #{name} #{sub[:name]}"
    end
    ([:flags] || []).each do |flag|
      lines << "FLAG shapeup #{name} --#{flag[:name]} #{flag[:type]}"
    end
  end

  lines.uniq.sort
end

.renderObject



37
38
39
# File 'lib/shapeup_cli/surface.rb', line 37

def self.render
  lines.join("\n") + "\n"
end