ci: add missing libreadline-dev
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
adc96653e5
commit
a921acc3f9
8 changed files with 67 additions and 11 deletions
|
@ -11,7 +11,7 @@ steps:
|
||||||
path: /_cache
|
path: /_cache
|
||||||
commands:
|
commands:
|
||||||
- pwd
|
- pwd
|
||||||
- apt-get update && apt-get install -y cmake g++
|
- apt-get update && apt-get install -y cmake g++ libreadline-dev
|
||||||
- shards install
|
- shards install
|
||||||
- shards build --production --static
|
- shards build --production --static
|
||||||
- strip bin/docmachine
|
- strip bin/docmachine
|
||||||
|
|
|
@ -1,8 +1,13 @@
|
||||||
|
|
||||||
|
require "path"
|
||||||
|
require "file_utils"
|
||||||
|
|
||||||
require "./config"
|
require "./config"
|
||||||
|
|
||||||
module DocMachine::Build
|
module DocMachine::Build
|
||||||
class Run
|
class Run
|
||||||
|
Log = DB::Log.for("docmachine.build") # Log for db.pool source
|
||||||
|
|
||||||
def initialize(@config : DocMachine::Build::Config)
|
def initialize(@config : DocMachine::Build::Config)
|
||||||
@basehash = Digest::SHA256.hexdigest(@config.data_dir)[0..6]
|
@basehash = Digest::SHA256.hexdigest(@config.data_dir)[0..6]
|
||||||
@docker_name = "docmachine-#{@basehash}"
|
@docker_name = "docmachine-#{@basehash}"
|
||||||
|
@ -20,6 +25,11 @@ module DocMachine::Build
|
||||||
puts "docker_image = #{@docker_image}"
|
puts "docker_image = #{@docker_image}"
|
||||||
puts "action = #{@config.action}"
|
puts "action = #{@config.action}"
|
||||||
|
|
||||||
|
self._avoid_duplicates()
|
||||||
|
self._pull_image()
|
||||||
|
end
|
||||||
|
|
||||||
|
private def _avoid_duplicates
|
||||||
docker_cid = %x{docker ps -f "name=#{@docker_name}" -q}.strip
|
docker_cid = %x{docker ps -f "name=#{@docker_name}" -q}.strip
|
||||||
|
|
||||||
puts "docker_name: #{@docker_name}"
|
puts "docker_name: #{@docker_name}"
|
||||||
|
@ -30,6 +40,29 @@ module DocMachine::Build
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def _pull_image
|
||||||
|
data_cache_dir = (
|
||||||
|
if ENV["XDG_CACHE_HOME"]?
|
||||||
|
Path[ENV["XDG_CACHE_HOME"], "docmachine"]
|
||||||
|
else
|
||||||
|
Path[ENV["HOME"], ".cache", "docmachine"]
|
||||||
|
end
|
||||||
|
)
|
||||||
|
|
||||||
|
data_cache_file = data_cache_dir / "image.tar"
|
||||||
|
puts "Checking cache #{data_cache_file}..."
|
||||||
|
if ! File.exists? data_cache_file.to_s
|
||||||
|
puts "Downloading #{@docker_image} image..."
|
||||||
|
Process.run("docker", ["pull", @docker_image], output: STDOUT)
|
||||||
|
puts "Building cache for image (#{data_cache_dir})"
|
||||||
|
FileUtils.mkdir_p(data_cache_dir)
|
||||||
|
Process.run("docker", ["save", @docker_image, "-o", data_cache_file.to_s], output: STDOUT)
|
||||||
|
puts "done"
|
||||||
|
else
|
||||||
|
puts "Cache already exist. Skipping."
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def start()
|
def start()
|
||||||
uid = %x{id -u}.strip
|
uid = %x{id -u}.strip
|
||||||
gid = %x{id -g}.strip
|
gid = %x{id -g}.strip
|
||||||
|
|
17
src/cli.cr
17
src/cli.cr
|
@ -47,17 +47,16 @@ module DocMachine
|
||||||
end
|
end
|
||||||
|
|
||||||
parser.parse(args)
|
parser.parse(args)
|
||||||
puts commands
|
Log.info { "commands = #{commands}" }
|
||||||
|
|
||||||
if commands.size > 0
|
if commands.size < 1
|
||||||
commands.each do |command|
|
|
||||||
# puts "== Running #{command}"
|
|
||||||
command.call()
|
|
||||||
end
|
|
||||||
else
|
|
||||||
puts parser.to_s
|
puts parser.to_s
|
||||||
STDOUT.puts ""
|
Log.error { "ERROR: no command defined" }
|
||||||
STDERR.puts "ERROR: no command defined"
|
end
|
||||||
|
|
||||||
|
commands.each do |command|
|
||||||
|
# puts "== Running #{command}"
|
||||||
|
command.call()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
14
src/common/docker.cr
Normal file
14
src/common/docker.cr
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
|
||||||
|
class Docker
|
||||||
|
property image : String
|
||||||
|
|
||||||
|
def initialize(@image)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
def store_image
|
||||||
|
end
|
||||||
|
|
||||||
|
def image_load
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,5 +1,8 @@
|
||||||
|
|
||||||
|
|
||||||
module DocMachine
|
module DocMachine
|
||||||
|
Log = ::Log.for("doc_machine")
|
||||||
|
|
||||||
class Config
|
class Config
|
||||||
|
|
||||||
property verbose : Bool = false
|
property verbose : Bool = false
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
|
|
||||||
require "./cli"
|
require "./cli"
|
||||||
|
|
||||||
|
Log.setup(:debug)
|
||||||
app = DocMachine::Cli.new
|
app = DocMachine::Cli.new
|
||||||
app.start(ARGV)
|
app.start(ARGV)
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,11 @@ require "./config"
|
||||||
require "./run"
|
require "./run"
|
||||||
|
|
||||||
module DocMachine::Write
|
module DocMachine::Write
|
||||||
|
Log = DocMachine::Log.for("write")
|
||||||
|
|
||||||
class Cli
|
class Cli
|
||||||
|
Log = DocMachine::Write::Log.for("cli")
|
||||||
|
|
||||||
def self.add_options(opts, args, parent_config, commands)
|
def self.add_options(opts, args, parent_config, commands)
|
||||||
config = Config.new(parent_config)
|
config = Config.new(parent_config)
|
||||||
|
|
||||||
|
@ -15,7 +19,7 @@ module DocMachine::Write
|
||||||
|
|
||||||
commands << ->() : Nil do
|
commands << ->() : Nil do
|
||||||
if args.size < 1
|
if args.size < 1
|
||||||
STDERR.puts "ERROR: No target given!"
|
Log.error { "ERROR: No target given!" }
|
||||||
exit 1
|
exit 1
|
||||||
end
|
end
|
||||||
config.target_directory = args[0]
|
config.target_directory = args[0]
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
|
|
||||||
module DocMachine::Write
|
module DocMachine::Write
|
||||||
class Config
|
class Config
|
||||||
|
Log = DocMachine::Write.for("config")
|
||||||
|
|
||||||
property target_directory : String = "."
|
property target_directory : String = "."
|
||||||
property force : Bool = false
|
property force : Bool = false
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue