class Fantasia::CLI

Public Instance Methods

build() click to toggle source
# File lib/fantasia/cli.rb, line 14
def build
  if !system("git diff-index --quiet HEAD --")
    if options[:force]
      STDERR.puts "Ignoring uncommitted changes. This is probably a bad idea.".colorize(:red)
    else
      STDERR.puts "There are uncommitted changes. Commit, stash, or revert them, or use the force option.".colorize(:red)
      exit(1)
    end
  end
  system("docker-compose build") || exit(1)
end
deploy() click to toggle source
# File lib/fantasia/cli.rb, line 53
def deploy
  invoke :build
  invoke :push
  invoke :update
end
push() click to toggle source
# File lib/fantasia/cli.rb, line 27
def push
  system("docker-compose push") || exit(1)
end
show() click to toggle source
# File lib/fantasia/cli.rb, line 60
def show
  spec = YAML.load(File.read "fantasia.yml")
  secrets = YAML.load(File.read(spec["secrets"] || "fantasia.secrets.yml"))
  url = spec["url"]
  http = Faraday.new("#{url}api/v1/")
  name = spec["stack"]
  http.authorization(:Bearer, secrets[name])
  r = JSON.parse(http.get("stack").body)
  puts "#{"State".colorize(:green)}:        #{r["state"]}"
  puts "#{"Portainer ID".colorize(:green)}: #{r["portainer_id"]}"
  puts
  puts "Fantasia config".colorize(:green)
  puts r["fantasia_file"]
  puts
  puts "Compose config".colorize(:green)
  puts r["compose_file"]
end
update() click to toggle source
# File lib/fantasia/cli.rb, line 32
def update
  spec = YAML.load(File.read "fantasia.yml")
  secrets = YAML.load(File.read(spec["secrets"] || "fantasia.secrets.yml"))
  url = spec["url"]
  http = Faraday.new("#{url}api/v1/")
  name = spec["stack"]
  http.authorization(:Bearer, secrets[name])
  r = http.post "stack", {
    fantasia_file: spec.to_yaml,
    compose_file: File.read(spec["compose-file"] || "docker-compose.yml")
  }
  r = JSON.parse(r.body)
  if r["success"]
    puts r["message"].colorize(:green)
  else
    puts r["message"].colorize(:red)
    exit 1
  end
end