Module: Browserctl::Recording::State

Defined in:
lib/browserctl/recording/state.rb

Overview

Singleton over the on-disk marker (‘STATE_FILE`) that tracks which recording, if any, is currently active. Carved out of `Recording` so the facade stays focused on dispatch.

Class Method Summary collapse

Class Method Details

.activeObject

Returns the active recording name, or nil when no marker exists. Reads the constant lazily so RSpec ‘stub_const` calls on the parent `Recording::STATE_FILE` continue to take effect.



18
19
20
21
# File 'lib/browserctl/recording/state.rb', line 18

def active
  path = Browserctl::Recording::STATE_FILE
  File.exist?(path) ? File.read(path).strip : nil
end

.clear!Object

Removes the marker. Raises Browserctl::Error when no recording is active. The message is preserved verbatim from the pre-split facade so existing specs and CLI surfaces stay stable.

Raises:



35
36
37
38
39
40
41
# File 'lib/browserctl/recording/state.rb', line 35

def clear!
  name = active
  raise Browserctl::Error, "no active recording — run: browserctl recording start <name>" unless name

  File.unlink(Browserctl::Recording::STATE_FILE)
  name
end

.write(name) ⇒ Object

Writes the marker for ‘name`. Caller is responsible for any additional setup (e.g. log initialisation).



25
26
27
28
29
30
# File 'lib/browserctl/recording/state.rb', line 25

def write(name)
  path = Browserctl::Recording::STATE_FILE
  FileUtils.mkdir_p(File.dirname(path))
  File.write(path, name)
  name
end