module Clacky::Utils::ScriptsManager

def self.path_for(name)

Returns:
  • (String, nil) -

Parameters:
  • name (String) -- script filename, e.g. "install_browser.sh"
def self.path_for(name)
  dest = File.join(SCRIPTS_DIR, name)
  File.exist?(dest) ? dest : nil
end

def self.setup!

Called once at agent startup — fast (no-op after first run).
Copy bundled scripts to ~/.clacky/scripts/ if missing or outdated.
def self.setup!
  FileUtils.mkdir_p(SCRIPTS_DIR)
  current_version = Clacky::VERSION
  stored_version  = File.exist?(VERSION_FILE) ? File.read(VERSION_FILE).strip : nil
  SCRIPTS.each do |script|
    dest = File.join(SCRIPTS_DIR, script)
    src  = File.join(DEFAULT_SCRIPTS_DIR, script)
    next unless File.exist?(src)
    # Copy if missing or gem was upgraded
    if !File.exist?(dest) || stored_version != current_version
      FileUtils.cp(src, dest)
      FileUtils.chmod(0o755, dest)
    end
  end
  # Write version stamp after successful copy
  File.write(VERSION_FILE, current_version)
end