From 04c38e946cc42187e597b68dff48beaf048374cd Mon Sep 17 00:00:00 2001 From: Radon Rosborough Date: Wed, 23 Dec 2020 18:12:34 -0800 Subject: [PATCH] Create configuration packages also --- src/packager/make-script.js | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/src/packager/make-script.js b/src/packager/make-script.js index bb6f45d..c8347bd 100644 --- a/src/packager/make-script.js +++ b/src/packager/make-script.js @@ -1,6 +1,7 @@ import process from "process"; import { Command } from "commander"; +import YAML from "yaml"; import { readLangConfig } from "../config.js"; @@ -15,7 +16,6 @@ function makeLangScript(langConfig) { name, install: { apt, pip, manual }, } = langConfig; - const timestamp = new Date().getTime(); let parts = []; parts.push(`\ #!/usr/bin/env bash @@ -49,7 +49,31 @@ EOF`); // encode the language configuration so that Riju can operate on any // installed languages without knowing their configuration in advance. function makeConfigScript(langConfig) { - // + const { id, name } = langConfig; + let parts = []; + parts.push(`\ +#!/usr/bin/env bash + +set -euxo pipefail`); + let debianControlData = `\ +Package: riju-config-${id} +Version: \$(date +%s%3N) +Architecture: all +Maintainer: Radon Rosborough +Description: Riju configuration for the ${name} language +Depends: riju-lang-${id}`; + parts.push(`\ +install -d "\${pkg}/DEBIAN" +cat < "\${pkg}/DEBIAN/control" +${debianControlData} +EOF`); + parts.push(`\ +install -d "\${pkg}/opt/riju/langs" +cat <<"EOF" > "\${pkg}/opt/riju/langs/${id}.json" +${JSON.stringify(langConfig, null, 2)} +EOF +`); + return parts.join("\n\n"); } // Given a language config object, return the text of a Bash script