Class: Assistant::RbsGenerator::Writer

Inherits:
Object
  • Object
show all
Defined in:
lib/assistant/rbs_generator/writer.rb

Overview

File-writing layer with marker-aware idempotency.

Instance Method Summary collapse

Constructor Details

#initialize(output_dir:, quiet: false, stdout: $stdout, stderr: $stderr) ⇒ Writer

Returns a new instance of Writer.



8
9
10
11
12
13
# File 'lib/assistant/rbs_generator/writer.rb', line 8

def initialize(output_dir:, quiet: false, stdout: $stdout, stderr: $stderr)
  @output_dir = output_dir
  @quiet = quiet
  @stdout = stdout
  @stderr = stderr
end

Instance Method Details

#write(service_class, contents) ⇒ Object

Returns one of :written, :unchanged, :skipped.



16
17
18
19
20
21
22
23
24
25
# File 'lib/assistant/rbs_generator/writer.rb', line 16

def write(service_class, contents)
  target = path_for(service_class)
  return skip!(target) if exists_without_marker?(target)
  return unchanged!(target) if File.exist?(target) && File.read(target) == contents

  FileUtils.mkdir_p(File.dirname(target))
  File.write(target, contents)
  announce("[written]   #{target}")
  :written
end