Refactored funko module
This commit is contained in:
parent
2a6f64a53e
commit
6ca518ae32
@ -2,7 +2,9 @@ require "docr"
|
|||||||
require "kemal"
|
require "kemal"
|
||||||
require "../funko.cr"
|
require "../funko.cr"
|
||||||
|
|
||||||
module Funkos
|
module Funko
|
||||||
|
extend self
|
||||||
|
|
||||||
get "/funkos/" do |env|
|
get "/funkos/" do |env|
|
||||||
funkos = Funko.from_docker
|
funkos = Funko.from_docker
|
||||||
funkos.sort! { |a, b| a.name <=> b.name }
|
funkos.sort! { |a, b| a.name <=> b.name }
|
||||||
@ -22,6 +24,7 @@ module Funkos
|
|||||||
result << {
|
result << {
|
||||||
"name" => funko.name,
|
"name" => funko.name,
|
||||||
"state" => state,
|
"state" => state,
|
||||||
|
"status" => funko.status,
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
require "./funkos.cr"
|
require "./funko.cr"
|
||||||
require "./proxyconf.cr"
|
require "./proxyconf.cr"
|
||||||
require "./secrets.cr"
|
require "./secrets.cr"
|
||||||
require "compress/gzip"
|
require "compress/gzip"
|
||||||
|
@ -38,7 +38,7 @@ module Faaso
|
|||||||
end
|
end
|
||||||
|
|
||||||
def run
|
def run
|
||||||
funkos = Funko.from_paths(@arguments)
|
funkos = Funko::Funko.from_paths(@arguments)
|
||||||
local = @options.@bool["local"]
|
local = @options.@bool["local"]
|
||||||
|
|
||||||
if local
|
if local
|
||||||
@ -120,7 +120,7 @@ module Faaso
|
|||||||
end
|
end
|
||||||
|
|
||||||
def run
|
def run
|
||||||
funkos = Funko.from_names(@arguments)
|
funkos = Funko::Funko.from_names(@arguments)
|
||||||
funkos.each do |funko|
|
funkos.each do |funko|
|
||||||
local = @options.@bool["local"]
|
local = @options.@bool["local"]
|
||||||
|
|
||||||
@ -188,7 +188,7 @@ module Faaso
|
|||||||
end
|
end
|
||||||
|
|
||||||
def run
|
def run
|
||||||
funkos = Funko.from_paths(@arguments)
|
funkos = Funko::Funko.from_paths(@arguments)
|
||||||
funkos.each do |funko|
|
funkos.each do |funko|
|
||||||
# Create temporary build location
|
# Create temporary build location
|
||||||
dst_path = Path.new("export", funko.name)
|
dst_path = Path.new("export", funko.name)
|
||||||
|
31
src/funko.cr
31
src/funko.cr
@ -3,7 +3,10 @@ require "file_utils"
|
|||||||
require "yaml"
|
require "yaml"
|
||||||
|
|
||||||
# A funko, built from its source metadata
|
# A funko, built from its source metadata
|
||||||
class Funko
|
module Funko
|
||||||
|
extend self
|
||||||
|
|
||||||
|
class Funko
|
||||||
include YAML::Serializable
|
include YAML::Serializable
|
||||||
|
|
||||||
# Required, the name of the funko. Must be unique across FaaSO
|
# Required, the name of the funko. Must be unique across FaaSO
|
||||||
@ -68,14 +71,19 @@ class Funko
|
|||||||
# Get all the funkos docker knows about.
|
# Get all the funkos docker knows about.
|
||||||
def self.from_docker : Array(Funko)
|
def self.from_docker : Array(Funko)
|
||||||
docker_api = Docr::API.new(Docr::Client.new)
|
docker_api = Docr::API.new(Docr::Client.new)
|
||||||
names = Set(String).new
|
names = [] of String
|
||||||
docker_api.images.list(all: true).select { |i|
|
funko_containers = docker_api.containers.list(
|
||||||
next if i.@repo_tags.nil?
|
all: true,
|
||||||
i.@repo_tags.as(Array(String)).each { |tag|
|
).each { |container|
|
||||||
names << tag.split(":", 2)[0].split("-", 2)[1] if tag.starts_with?("faaso-")
|
p! container.@names
|
||||||
|
container.@names.each { |name|
|
||||||
|
names << name.split("-", 2)[1].lstrip("/") if name.starts_with?("/faaso-")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
from_names(names.to_a)
|
|
||||||
|
pp! names
|
||||||
|
|
||||||
|
from_names(names.to_a.sort!)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Setup the target directory `path` with all the files needed
|
# Setup the target directory `path` with all the files needed
|
||||||
@ -136,6 +144,14 @@ class Funko
|
|||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Descriptive status for the funko
|
||||||
|
def status
|
||||||
|
status = self.containers.map { |container|
|
||||||
|
container.@status
|
||||||
|
}.join(", ")
|
||||||
|
status.empty? ? "Stopped" : status
|
||||||
|
end
|
||||||
|
|
||||||
# Is any instance of this funko running?
|
# Is any instance of this funko running?
|
||||||
def running?
|
def running?
|
||||||
self.containers.any? { |container|
|
self.containers.any? { |container|
|
||||||
@ -208,4 +224,5 @@ class Funko
|
|||||||
docker_api.containers.start(response.@id) if autostart
|
docker_api.containers.start(response.@id) if autostart
|
||||||
response.@id
|
response.@id
|
||||||
end
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<%- result.each do |f| -%>
|
<%- result.each do |f| -%>
|
||||||
<tr>
|
<tr>
|
||||||
<td><%= f["name"] %></td>
|
<td><%= f["name"] %></td>
|
||||||
<td><%= f["state"] %></td>
|
<td><%= f["status"] %></td>
|
||||||
<td>
|
<td>
|
||||||
<%- if f["state"] == "running" -%>
|
<%- if f["state"] == "running" -%>
|
||||||
<button state="disabled">Start</button>
|
<button state="disabled">Start</button>
|
||||||
|
Loading…
Reference in New Issue
Block a user