Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
My father is a greate chef :)
Dad is a small configuration management tool for Clojure. This project is heavily inspired by mitamae.
Concept
🤯 Minimum to remember
-
May not write code for Dad often.
-
Write codes as a babashka pod.
-
You can gain benefits from code completion and docstring references.
-
Getting Started
# Download latest dad to the current working directory
curl -L https://raw.githubusercontent.com/liquidz/dad/main/script/download | bash
./dad your_task.cljYou can generate a template file by ./dad --init example.core.
#!/usr/bin/env dad --no-color --dry-run (ns example.core (:require [babashka.pods :as pods])) ;; Load dad as a babashka pod (pods/load-pod "dad") (require '[pod.liquidz.dad :as dad]) (dad/package {:name ["curl" "rlwrap"]}) ;; You can define function as you like (defn curl [m] (let [{:keys [path url]} m] ;; `file-exists?` is a built-in function in dad. (when (and (not (dad/file-exists? path)) (string? url)) (dad/execute {:command (str "curl -sfLo " path " " url)})))) (curl {:path "/tmp/install.sh" :url "https://download.clojure.org/install/linux-install-1.10.3.1087.sh"}) (dad/file {:path "/tmp/install.sh" :mode "755"}) (dad/execute {:cwd "/tmp" :command "./install.sh"}) (dad/file {:path "/tmp/install.sh" :action :delete})
Reference
|
Note |
You can refer all documents in codes. (evaluate (dad/doc) or (help))
|
Built-in vars / functions
| Name | Var/Func | Description |
|---|---|---|
Func |
Print dad documents. |
|
Func |
Return true if the specified path exists. |
|
Func |
OS name string such as |
|
Func |
Render a template string with a data. |
|
Func |
Load another recipe file. |
REPL
Dad also provides REPL mode that does not affect your environment. (same as --dry-run option)
$ dad --repl user=> (println "hello from dad") hello from dad nil user=> (+ 1 2 3) 6 user=> (package "sl") apt-update [sl] ... will change package-install [sl] ... will change user=> (package "sl" {:action :uninstall}) package-uninstall [sl] ... WILL NOT change
License
This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which is available at http://www.eclipse.org/legal/epl-2.0.
This Source Code may also be made available under the following Secondary Licenses when the conditions for such availability set forth in the Eclipse Public License, v. 2.0 are satisfied: GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version, with the GNU Classpath Exception which is available at https://www.gnu.org/software/classpath/license.html.