98 lines
25 KiB
Nu
Executable File
98 lines
25 KiB
Nu
Executable File
#!/usr/bin/env nu
|
|
|
|
# Configuration
|
|
use std
|
|
|
|
let template_dir = ".config/template"
|
|
let config_dir = ".config"
|
|
let out_dir = $"(pwd)"
|
|
# let out_dir = $"(pwd)/works"
|
|
|
|
# encoded .tar.gz archive
|
|
let template = "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"
|
|
|
|
def main [subject: string, shortcode: string, number?: int] {
|
|
let subject_lower = ($subject | str downcase)
|
|
let shortcode_lower = ($shortcode | str downcase)
|
|
|
|
validate-input $subject $shortcode $number
|
|
|
|
let temp_dir = (mktemp -d)
|
|
let final_dir = $"($out_dir)/($subject_lower)/($shortcode_lower)($number)"
|
|
let subject_dir = $"($out_dir)/($subject_lower)"
|
|
|
|
# TODO?: replace with git clone
|
|
# copy-template $temp_dir
|
|
$template | decode base64 | tar zxvf - --strip-components=1 -C $temp_dir o> (std null-device)
|
|
generate-doc-toml $shortcode_lower $subject_lower $temp_dir $number
|
|
|
|
if not ($out_dir | path exists) {
|
|
mkdir $out_dir
|
|
}
|
|
if ($final_dir | path exists) {
|
|
error make -u {msg: $"Directory ($final_dir) already exists"}
|
|
}
|
|
|
|
mkdir $subject_dir
|
|
cp -r $temp_dir $final_dir
|
|
|
|
print $"=> Created new work: ($final_dir)"
|
|
rm -rf $temp_dir
|
|
}
|
|
|
|
def validate-input [subject: string, shortcode: string, number?: int] {
|
|
if not ($config_dir | path exists) {
|
|
error make -u {msg: "Config directory not found"}
|
|
}
|
|
|
|
let defaults_toml = $"($config_dir)/defaults.toml"
|
|
let subjects_toml = $"($config_dir)/subjects.toml"
|
|
|
|
if not ($defaults_toml | path exists) {
|
|
error make -u {msg: $"defaults.toml not found in config directory"}
|
|
}
|
|
if not ($subjects_toml | path exists) {
|
|
error make -u {msg: "subjects.toml not found in config directory"}
|
|
}
|
|
|
|
if ($number != nothing and $number < 1 ) {
|
|
error make -u {msg: "Work number should be greater than 0"}
|
|
}
|
|
|
|
# Check subject exists (case insensitive)
|
|
let subject_lower = ($subject | str downcase)
|
|
let subjects = (open $subjects_toml | get subjects | columns)
|
|
if $subject_lower not-in $subjects {
|
|
error make -u {
|
|
msg: $"Subject '($subject)' not found in configuration"
|
|
help: $"Available subjects: ($subjects | str join ', ')"
|
|
}
|
|
}
|
|
}
|
|
|
|
def copy-template [target_dir: string] {
|
|
if not ($template_dir | path exists) {
|
|
error make -u {msg: $"Template directory ($template_dir) not found"}
|
|
}
|
|
|
|
cd $template_dir
|
|
cp -r * $target_dir
|
|
}
|
|
|
|
def generate-doc-toml [shortcode: string, subject: string, target_dir: string, number?: int] {
|
|
let defaults = (open $"($config_dir)/defaults.toml")
|
|
let subjects = (open $"($config_dir)/subjects.toml")
|
|
|
|
let subject_data = ($subjects | get subjects | get $subject)
|
|
let work_type = ($defaults | get work_types | try { get $shortcode } catch { $shortcode })
|
|
|
|
{
|
|
university: ($defaults | get university)
|
|
subject: ($subject_data | get name)
|
|
type: $work_type
|
|
number: $number
|
|
mentors: ($subject_data | get mentors)
|
|
authors: [($defaults | get default_author)]
|
|
} | compact --empty | to toml | save $"($target_dir)/src/doc.toml" --force
|
|
}
|