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

.active ⇒ Object

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