Module: EasyCaddy::Caddy

Defined in:
lib/easy_caddy/caddy.rb

Constant Summary collapse

BINARY =
'caddy'

Class Method Summary collapse

Class Method Details

.brew_service_pidObject



52
53
54
55
56
# File 'lib/easy_caddy/caddy.rb', line 52

def self.brew_service_pid
  output = `brew services list 2>/dev/null | grep '^caddy '`
  m = output.match(/(\d+)/)
  m&.captures&.first&.to_i
end

.install_via_brewObject



65
66
67
# File 'lib/easy_caddy/caddy.rb', line 65

def self.install_via_brew
  system('brew install caddy')
end

.installed?Boolean

Returns:

  • (Boolean)


10
11
12
# File 'lib/easy_caddy/caddy.rb', line 10

def self.installed?
  system('which caddy > /dev/null 2>&1')
end

.process_pidObject



58
59
60
61
62
63
# File 'lib/easy_caddy/caddy.rb', line 58

def self.process_pid
  out = `pgrep -f 'caddy run' 2>/dev/null`.strip
  return nil if out.empty?

  out.lines.first.to_i
end

.reload(caddyfile = Paths.caddyfile) ⇒ Object



25
26
27
28
29
30
31
32
33
# File 'lib/easy_caddy/caddy.rb', line 25

def self.reload(caddyfile = Paths.caddyfile)
  unless caddyfile.exist?
    warn '  [ecaddy] Skipping reload — global Caddyfile not found. Run `ecaddy setup` first.'
    return
  end

  out = `#{BINARY} reload --config #{caddyfile} 2>&1`
  raise "Caddy reload failed:\n#{out}" unless $CHILD_STATUS.success?
end

.restart_serviceObject



48
49
50
# File 'lib/easy_caddy/caddy.rb', line 48

def self.restart_service
  system('brew services restart caddy')
end

.running?Boolean

Returns:

  • (Boolean)


39
40
41
42
# File 'lib/easy_caddy/caddy.rb', line 39

def self.running?
  pid = brew_service_pid
  pid && pid > 0
end

.start_serviceObject



44
45
46
# File 'lib/easy_caddy/caddy.rb', line 44

def self.start_service
  system('brew services start caddy')
end

.trustObject



35
36
37
# File 'lib/easy_caddy/caddy.rb', line 35

def self.trust
  system("#{BINARY} trust")
end

.validate(caddyfile = Paths.caddyfile) ⇒ Object



14
15
16
# File 'lib/easy_caddy/caddy.rb', line 14

def self.validate(caddyfile = Paths.caddyfile)
  system("#{BINARY} validate --config #{caddyfile} 2>&1")
end

.validate!(caddyfile = Paths.caddyfile) ⇒ Object



18
19
20
21
22
23
# File 'lib/easy_caddy/caddy.rb', line 18

def self.validate!(caddyfile = Paths.caddyfile)
  return unless caddyfile.exist?

  out = `#{BINARY} validate --config #{caddyfile} 2>&1`
  raise "Caddy config invalid:\n#{out}" unless $CHILD_STATUS.success?
end