MyNixOS website logo
Description

Use templates for files and directories.

A simple templating system for files and directories

Assuming you have a directory ~/.templates/post:

$ tree ~/.templates/
/home/me/.templates/
└── post
    ├── author
    │   ├── file.md
    │   └── ??name2?.md
    ├── ?env?LANGUAGE?.md
    └── ??name?.md

2 directories, 4 files

Go into a new directory and execute new post:

$ new post
Please give a value for 'name': Hello 
Please give a value for 'name2': World

$ tree
.
├── author
│   ├── file.md
│   └── World.md
├── en_US.md
└── Hello.md

1 directory, 4 files

Voilà!

How it works

It accepts one argument dir and then looks up either ~/.templates/dir/, or %APPDATA%/dir/. It then substitutes

  • ??xxx? by asking the user: Please give a value for 'xxx':
  • ?env?xxx? by reading the environment variable xxx

in both filenames and file contents, then copying the files into the current directory (if that introduces slashes in a file name, it will happily split the filename into directory structure). This tool works best with other simple tools like sos and shake in my experience.

Possible issues

  1. It should work on Windows, but that has not been tested.
  2. There are no unit tests.

Contributing

Contributions are always welcome, as long as they:

  • Keep it simple
  • Work cross-platform

Possible candidates include:

  • Testing
  • Adding new variable resources (git config, etc.)
Metadata

Version

1.1.0.0

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows