dda-build/src/dda/build/devops.clj
2025-01-08 10:32:22 +01:00

36 lines
1.2 KiB
Clojure

(ns dda.build.devops
(:require [clojure.spec.alpha :as s]
[orchestra.core :refer [defn-spec]]
[dda.build.devops.domain :as domain]
[dda.build.infrastructure :as i]))
(s/def ::devops
(s/keys :req-un [::domain/name]
:opt-un [::domain/module ::domain/stage ::domain/project-root-path ::domain/build-dir-name ::domain/debug ::domain/dry-run]))
(def default {:name "dda-backup"
:project-root-path "."
:build-dir-name "target"
:stage "dev"
:debug false
:dry-run false})
(defn-spec env-or-file string?
[name string?]
(let [from-env (System/getenv name)
name-from-file (System/getenv (str name "_FILE"))]
(cond
(some? from-env) from-env
(some? name-from-file) (slurp name-from-file)
:else (throw (RuntimeException.
(str "Environment: [" name "," name-from-file "] was missing."))))))
(defn-spec clean-build-dir! nil?
[devops ::devops]
(let [final (merge default devops)]
(i/execute! (domain/clean-build-dir-command final) final)))
(defn-spec create-build-dir! nil?
[devops ::devops]
(let [final (merge default devops)]
(i/execute! (domain/create-build-dir-command final) final)))