Module: Kumi::Dev::GoldenV2

Defined in:
lib/kumi/dev/golden_v2.rb

Defined Under Namespace

Classes: Representation, Runner

Constant Summary collapse

REPRESENTATIONS =
[
  Representation.new(name: "ast", extension: "txt", generator_method: :generate_ast),
  Representation.new(name: "input_plan", extension: "txt", generator_method: :generate_input_plan),
  Representation.new(name: "nast", extension: "txt", generator_method: :generate_nast),
  Representation.new(name: "snast", extension: "txt", generator_method: :generate_snast),
  Representation.new(name: "dfir", extension: "txt", generator_method: :generate_dfir),
  Representation.new(name: "dfir_optimized", extension: "txt", generator_method: :generate_dfir_optimized),
  Representation.new(name: "vecir", extension: "txt", generator_method: :generate_vecir),
  Representation.new(name: "loopir", extension: "txt", generator_method: :generate_loopir),
  Representation.new(name: "schema_ruby", extension: "rb", generator_method: :generate_schema_ruby),
  Representation.new(name: "schema_javascript", extension: "mjs", generator_method: :generate_schema_javascript)
].freeze
GROUPS =
{
  "frontend" => %w[ast input_plan nast snast],
  "df" => %w[dfir dfir_optimized],
  "vec" => %w[vecir],
  "loop" => %w[loopir],
  "codegen" => %w[schema_ruby schema_javascript],
  "all" => REPRESENTATIONS.map(&:name)
}.freeze

Class Method Summary collapse

Class Method Details

.diff!(*names, reprs: nil, base_dir: "golden", io: $stdout) ⇒ Object



62
63
64
# File 'lib/kumi/dev/golden_v2.rb', line 62

def diff!(*names, reprs: nil, base_dir: "golden", io: $stdout)
  Runner.new(base_dir:, io:).diff(names: normalize_names(names), reprs:)
end

.list(base_dir: "golden", io: $stdout) ⇒ Object



46
47
48
# File 'lib/kumi/dev/golden_v2.rb', line 46

def list(base_dir: "golden", io: $stdout)
  Runner.new(base_dir:, io:).list_schemas
end

.normalize_names(raw) ⇒ Object



73
74
75
76
# File 'lib/kumi/dev/golden_v2.rb', line 73

def normalize_names(raw)
  names = Array(raw).flatten.compact.map(&:to_s).reject(&:empty?)
  names.empty? ? nil : names
end

.normalize_repr_tokens(raw) ⇒ Object



66
67
68
69
70
71
# File 'lib/kumi/dev/golden_v2.rb', line 66

def normalize_repr_tokens(raw)
  Array(raw)
    .flat_map { |entry| entry.to_s.split(",") }
    .map(&:strip)
    .reject(&:empty?)
end

.reprs(io: $stdout) ⇒ Object



50
51
52
# File 'lib/kumi/dev/golden_v2.rb', line 50

def reprs(io: $stdout)
  Runner.new(io:).list_representations
end

.update!(*names, reprs: nil, base_dir: "golden", io: $stdout) ⇒ Object



54
55
56
# File 'lib/kumi/dev/golden_v2.rb', line 54

def update!(*names, reprs: nil, base_dir: "golden", io: $stdout)
  Runner.new(base_dir:, io:).update(names: normalize_names(names), reprs:)
end

.verify!(*names, reprs: nil, base_dir: "golden", io: $stdout) ⇒ Object



58
59
60
# File 'lib/kumi/dev/golden_v2.rb', line 58

def verify!(*names, reprs: nil, base_dir: "golden", io: $stdout)
  Runner.new(base_dir:, io:).verify(names: normalize_names(names), reprs:)
end