Module: Mimas::Deployment::Caddy

Included in:
Mimas::Deployment
Defined in:
lib/mimas/deployment/caddy.rb

Instance Method Summary collapse

Instance Method Details

#refreshing_caddy(session, &block) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/mimas/deployment/caddy.rb', line 4

def refreshing_caddy(session, &block)
  session.run "mkdir -p #{remote_destination}"
  session.upload StringIO.new(commit_hash), remote_destination.join("commit-sha")

  remote_caddyfile = ""
  begin
    remote_caddyfile = session.run "cat #{caddyfile_path}", capture: true
  rescue SSH::Session::NonZeroExitCode
    # Ignore non-zero exit
  end
  caddyfile_modified = remote_caddyfile != caddyfile

  if caddyfile_modified
    say "Uploading new Caddyfile"
    begin
      session.upload StringIO.new(caddyfile), new_caddyfile_path
      session.run "caddy validate --config #{new_caddyfile_path}", capture: true
      say "New Caddyfile validated"
    rescue SSH::Session::NonZeroExitCode => e
      session.run "rm #{new_caddyfile_path}"
      say caddyfile.red
      say e.output.bold.red
      raise "Your Caddyfile is invalid"
    end
  end

  yield

  if caddyfile_modified
    say "Updating Caddyfile and reloading Caddy"
    session.run "mv #{new_caddyfile_path} #{caddyfile_path}"
    session.run "sudo systemctl reload caddy"
  end
end