# This file specifies which files in the `./common` directory should be copied to which
# template in `./templates`
let
  programmingLanguages = [
    "awk"
    "c"
    "rust"
    "shell"
  ];
  allLanguages =
    programmingLanguages
    ++ [
      "latex"
    ];
  mkName = name: "./${name}";

  mkBase = name: langs: {
    "${mkName name}" = langs;
  };

  mkLang = name: lang: let
    realLang =
      if builtins.elem lang allLanguages
      then lang
      else builtins.throw "${lang} is not a recognized language!";
  in
    mkBase name [realLang];
  mkProgramming = name:
    mkBase name programmingLanguages;
  mkAll = name:
    mkBase name allLanguages;
in
  {}
  // (mkAll ".licensure.yml")
  // (mkAll "init")
  // (mkAll "scripts/renew_copyright_header.sh")
  // (mkAll "shell_line_editor.sh")
  // (mkAll "treefmt.nix")
  // (mkProgramming "docs/%INIT_APPLICATION_NAME.1.md")