Skip to main content

Creates files and directories using templates

Project description

📑 Clyjin Templates

Centralized template system to create files and directories.

Installation

Using PIP:

pip install clyjin_templates

Getting Started

Clyjin Templates uses Template Groups in order to define files and directories to be created.

Template Groups are defined using special convention. The central configuration file of any group is spec.yml. The spec defines files and directories to be created in form of nested objects.

An example spec file looks like:

name: my-example
description: example description
vars:
  a:
  b:
  c:
    default: true
templates:
  template_1.py:
  template_2.py:
tree:
  src:
    __init__.py:
      $content: "&template_1.py"
    drivers:
      main.py:
        $content: "&template_2.py"
    local:
      $type: dir
  README.md:
      $content: "some readme text"

Which will produce the following file tree:

.
├── src/
│   ├── __init__.py
│   ├── drivers/
│   │   └── main.py
│   └── local/
│       └── <empty-directory>
└── README.md

Let's consider each field of the spec above.

Name

Name of template group to be associated with, e.g. on CLI calls.

Description

Helper description for template group, displayed e.g. in CLI help messages.

Vars

Variables defined for current template group. Each variable might have a default value and a list of scopes it is available in.

Each var becomes available to be set via CLI on template group call. For our example above, the call with all vars defined might look like:

clyjin templates my-example "a=10,b='hello, world!',c=false"

Note that we could omitted c=false, since we defined a default value for it in the spec.yml. Although, it would result in an error for other non-default variables.

Templates

Template files defined to be referenced for this template group.

For file nodes (see below), in $content field you can point to a template object to be rendered into the file.

Tree

File tree generated by this template group. Consists of nodes. The nodes can be of two types - file or directory.

Directory node is any spec's tree node with at least one subnode, or an empty directory with $type: dir explicitly set. Other empty nodes (without subnodes or other fields) are considered as empty files by default.

File node is an empty spec's tree node or any node with $type: file set explicitly. File nodes have special field $content which defines what string will be pasted inside it on creation. The content field can have either a direct string (simply written in spec.yml file), absolute or relative (to working directory) path to template file, or pointer to in-spec defined template. In our example latter is used in form of $content: "&template_1.py".

Add a template group

In order to make your template group available in the CLI, you need to register it:

clyjin templates.add
# or
clyjin templates.add path/to/working/directory

Which will automatically search for spec.yml in the working directory and then for referenced there template files. For our example it would be:

.
├── spec.yml
├── template_1.py.mako
└── template_2.py.mako

All files will be copied to Clyjin system directory for the plugin.

Alternatively, you can explicitly define name of spec file:

clyjin templates.register -c another-spec-name.yml

Invoke a template group

In order to create files and directories out of previously registered template group you need:

clyjin templates <your-template-name> -d path/to/output/directory

In our example case, we can output our registered example in some current directory:

clyjin templates my-example

This will output rendered contents of our chosen template group in current or chosen (with -d option) directory.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

clyjin_templates-0.1.0.tar.gz (17.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

clyjin_templates-0.1.0-py3-none-any.whl (24.3 kB view details)

Uploaded Python 3

File details

Details for the file clyjin_templates-0.1.0.tar.gz.

File metadata

  • Download URL: clyjin_templates-0.1.0.tar.gz
  • Upload date:
  • Size: 17.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.11.5 Linux/6.5.5-zen1-1-zen

File hashes

Hashes for clyjin_templates-0.1.0.tar.gz
Algorithm Hash digest
SHA256 4091938dade149049e07225ad8dfccdc6a5c411039c29e577110498cc57e75c9
MD5 a4454c8049428a83ac85417150ec4540
BLAKE2b-256 444350eda2a419ef3a02d4fa82366b49af2df20ae5d5b0cae9098e56797d9b7f

See more details on using hashes here.

File details

Details for the file clyjin_templates-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: clyjin_templates-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 24.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.11.5 Linux/6.5.5-zen1-1-zen

File hashes

Hashes for clyjin_templates-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 270fb183a3efb7958bb0d6b50b2f656d9c1c97cf039fe389076fe4b9b38907ae
MD5 ce68a83608232db1b287282f2239e489
BLAKE2b-256 c9716aa240657949eb2bf965bc3c7a21ede53ddfa7791058b80a647f773ba66b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page