From 75d5fd78742406487eceaa51366f04d6a3f7cd29 Mon Sep 17 00:00:00 2001 From: Luka Vandervelden Date: Wed, 23 Oct 2019 19:38:08 +0200 Subject: [PATCH 1/4] `status` can take several parameters or none. --- src/service.cr | 3 ++- src/status.cr | 31 +++++++++++++++++++++++++++---- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/service.cr b/src/service.cr index 4b4104d..ba87c6f 100644 --- a/src/service.cr +++ b/src/service.cr @@ -129,7 +129,8 @@ begin end end elsif args[0] == "status" - child = Process.run "#{OWN_LIBEXEC_DIR}/status", [args[1]], + args.shift + child = Process.run "#{OWN_LIBEXEC_DIR}/status", args, output: Process::Redirect::Inherit, error: Process::Redirect::Inherit return_value = (child.exit_status / 256).to_i diff --git a/src/status.cr b/src/status.cr index 01b0a21..210260e 100644 --- a/src/status.cr +++ b/src/status.cr @@ -10,10 +10,33 @@ Service.load RC_DIRECTORY LibC.setuid 0 LibC.setgid 0 -Service.get_by_id(ARGV[0]).try do |service| - puts service.status PID_DIRECTORY - exit 0 +services = ARGV +if services.size == 0 + services = Service.all +else + services = services.map do |id| + Service.get_by_id id + end end -exit 1 +if services.size == 1 + services[0]?.try do |service| + puts service.status PID_DIRECTORY + exit 0 + end + + exit 1 +else + service_not_found = false + + services.each do |service| + if service.nil? + service_not_found = true + else + puts "#{service.id}: #{service.status PID_DIRECTORY}" + end + end + + exit 1 if service_not_found +end From 0c3a61f58db262cf303ed9cb0807cb9cc62ef531 Mon Sep 17 00:00:00 2001 From: Luka Vandervelden Date: Thu, 24 Oct 2019 00:41:34 +0200 Subject: [PATCH 2/4] Templates are Makefile-installed. --- project.zsh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/project.zsh b/project.zsh index 7aa3e13..b3f7f06 100644 --- a/project.zsh +++ b/project.zsh @@ -29,6 +29,13 @@ for file in services/*.spec; do auto[$file]=true done +for file in templates/*.j2; do + targets+=($file) + type[$file]=script + install[$file]='$(SYSCONFDIR)/templates' + auto[$file]=true +done + # FIXME: This should be upstreamed. function script.install { if [[ "false" = "${install[$target]}" ]]; then From f40dbccc1fa31611ffd3cd17bde1419ea7212bc6 Mon Sep 17 00:00:00 2001 From: Luka Vandervelden Date: Thu, 24 Oct 2019 00:41:55 +0200 Subject: [PATCH 3/4] Template directories are Makefile-configured. --- src/config.cr.in | 2 ++ src/gen-config.cr | 8 ++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/config.cr.in b/src/config.cr.in index 2610078..d375c60 100644 --- a/src/config.cr.in +++ b/src/config.cr.in @@ -5,6 +5,8 @@ RC_DIRECTORY = "@SYSCONFDIR@/rc/services" LOG_DIRECTORY = "@VARSTATEDIR@/log" SERVICES_DIRECTORY = "@SHAREDIR@/services" ENVIRONMENTS_DIRECTORY = "@SYSCONFDIR@/rc/environments" +SYSTEM_CONFIGURATION_DIRECTORY = "@SYSCONFDIR@" +SHARED_DATA_DIRECTORY = "@SHAREDIR@" OWN_LIBEXEC_DIR = "@LIBEXECDIR@/service" CACHE_DIRECTORY = "@VARSTATEDIR@/cache" diff --git a/src/gen-config.cr b/src/gen-config.cr index d4498c0..11c2c19 100644 --- a/src/gen-config.cr +++ b/src/gen-config.cr @@ -1,5 +1,7 @@ require "crinja" +require "./config.cr" + def sanitize_path(path) path.gsub /\/\/+/, "/" end @@ -41,11 +43,9 @@ class Configure::Context def generate(template, target : String, options : Hash(String, String | Array(String) | Crinja::Callable::Instance | Hash(String, String))) target_file = File.open target, "w" - # FIXME: Alter default sources at build-time. - # FIXME: We’ll want a way to alter those context-wide. sources = [ - "/etc/templates", - "/usr/share/templates" + "#{SYSTEM_CONFIGURATION_DIRECTORY}/templates", + "#{SHARED_DATA_DIRECTORY}/templates" ] sources = sources From f9ad890e05e51253652fce316962aad45dc4546b Mon Sep 17 00:00:00 2001 From: Luka Vandervelden Date: Thu, 24 Oct 2019 00:48:20 +0200 Subject: [PATCH 4/4] Installed files have better permissions. Requires build.zsh 0.4.0. --- project.zsh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/project.zsh b/project.zsh index b3f7f06..dd9fb1f 100644 --- a/project.zsh +++ b/project.zsh @@ -21,12 +21,14 @@ type[src/config.cr]=script sources[src/config.cr]=src/config.cr.in install[src/config.cr]=false auto[src/config.cr]=true # Don’t display it in `make help`. +chmod[src/config.cr]=0644 for file in services/*.spec; do targets+=($file) type[$file]=script install[$file]='$(SHAREDIR)/services' auto[$file]=true + chmod[$file]=0644 done for file in templates/*.j2; do @@ -34,6 +36,7 @@ for file in templates/*.j2; do type[$file]=script install[$file]='$(SYSCONFDIR)/templates' auto[$file]=true + chmod[$file]=0644 done # FIXME: This should be upstreamed.