diff options
author | lassulus <lassulus@lassul.us> | 2022-10-27 00:02:49 +0200 |
---|---|---|
committer | lassulus <lassulus@lassul.us> | 2022-11-01 20:05:10 +0100 |
commit | f1531fb4f3f8052181964d17891fbb3ce1f918f7 (patch) | |
tree | 87c69c9af1699ff2ebb9867fa9ba874576e6c1f9 /disko | |
parent | 324a8d5347a18e0c74625903c3bb13144370fbf2 (diff) |
add disko cli
Diffstat (limited to 'disko')
-rwxr-xr-x | disko | 68 |
1 files changed, 68 insertions, 0 deletions
@@ -0,0 +1,68 @@ +#!/usr/bin/env bash +set -euo pipefail +set -x + +readonly libexec_dir="${0%/*}" + +# mount was chosen as the default mode because it's less destructive +mode=mount +nix_args=() + +showUsage() { + cat <<USAGE +Usage: $0 [options] disk-config.nix + +Options: + +* -m, --mode mode + set the mode, either create or mount +* --arg name value + pass value to nix-build. can be used to set disk-names for example +* --argstr name value + pass value to nix-build as string +USAGE +} + +abort() { + echo "aborted: $*" >&2 + exit 1 +} + +## Main ## + +while [[ $# -gt 0 ]]; do + case "$1" in + -m | --mode) + mode=$2 + shift + ;; + --argstr | --arg) + nix_args+=("$1" "$2" "$3") + shift + shift + ;; + --help) + showUsage + exit 0 + ;; + *) + if [ -z ${disko_config+x} ] && [ -e $1 ]; then + disko_config=$1 + else + showUsage + fi + ;; + esac + shift +done + +if ! ([[ $mode = "create" ]] || [[ $mode = "mount" ]]); then + abort "mode must be either create or mount" +fi + +script=$(nix-build "${libexec_dir}"/cli.nix \ + --arg diskoFile "$disko_config" \ + --argstr mode "$mode" \ + "${nix_args[@]}" +) +exec "$script" |