Skip to main content

Scaffold projects from personal templates, with a security audit on every create

Project description

omurtag

A builder for a builder. Scaffold projects from personal templates, with a security audit on every create.

Install

curl -fsSL https://evgeni-genchev.com/omurtag/install.sh | sh

Or directly:

uv tool install omurtag
# or
pip install omurtag

If omurtag is not found after installing:

uv tool update-shell

Commands

omurtag {add,remove,create,list,pull,sync,search,audit}

  add      Add a local folder as a template
  remove   Remove a template by name
  create   Generate a project from a template
  list     List templates with stack info
  pull     Pull a template from a git repo
  sync     Download/update all templates from config
  search   Browse and pull from the community template list
  audit    Run a security audit on any project directory

Examples

# browse community templates and pull interactively
omurtag search

# pull a template from GitHub
omurtag pull github:EvgeniGenchev/fastapi_frontend_omurtag_template

# pull a specific branch
omurtag pull github:user/repo_omurtag_template --branch dev

# list available templates
omurtag list
omurtag list --verbose

# create a project (interactive if no args)
omurtag create
omurtag create ~/projects/myapp --type fastapi_frontend

# add a local folder as a template
omurtag add ~/my_template_folder

# remove a template
omurtag remove fastapi_frontend

# sync all templates from config
omurtag sync

# audit any project directory
omurtag audit
omurtag audit ~/projects/myapp

Configuration

Config file location: $XDG_CONFIG_HOME/omurtag/config.py or ~/.omurtag/config.py

templates = [
    "github:EvgeniGenchev/fastapi_frontend_omurtag_template",
    "gitlab:user/my_project_omurtag_template",
    "codeberg.org:user/tool_omurtag_template",
    "https://codeberg.org/user/repo_omurtag_template.git",
]

# optional
transitive_deps = False  # scan transitive deps on create (slower)
show_desc  = True        # show description in list
show_stack = True        # show stack in list

Creating templates

Any folder can be a template. Use omurtag add <folder> to register a local one. To host it so others can pull it, name the repo with a _omurtag_template suffix.

Placeholders use the <*name*> syntax. On omurtag create, every placeholder is replaced in file contents, filenames, and directory names. <*project*> is always set to the project name. Any other placeholders are prompted for interactively at create time.

Security audit runs automatically on every create. omurtag detects the stack from marker files (pyproject.toml, package.json, Cargo.toml, etc.) and checks direct dependencies for known CVEs via deps.dev. Opt in to transitive scanning with transitive_deps = True in config.

An optional omurtag.sh at the template root is a post-create setup script. After the project is created, omurtag shows its contents and asks whether to run it in the project directory. It is never copied into created projects.

An optional omurtag.toml at the template root provides metadata shown in omurtag list. It is never copied into created projects.

[template]
name        = "my-service"
description = "Minimal Python service"
stack       = ["python"]
author      = "you"

Available templates

Full list: evgeni-genchev.com/omurtag/templates.json


Dev install

uv cache clean && uv tool uninstall omurtag && uv tool install .

License

BSD-3-Clause

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

omurtag-0.4.4.tar.gz (15.5 kB view details)

Uploaded Source

Built Distribution

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

omurtag-0.4.4-py3-none-any.whl (15.8 kB view details)

Uploaded Python 3

File details

Details for the file omurtag-0.4.4.tar.gz.

File metadata

  • Download URL: omurtag-0.4.4.tar.gz
  • Upload date:
  • Size: 15.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for omurtag-0.4.4.tar.gz
Algorithm Hash digest
SHA256 d78e2608b6b7bb1f93d7ac13c9b37c778f22b01a43c8e6a9acbd672ad4cb69fc
MD5 fb6f0ffaeb42c4797b3074a5a5832366
BLAKE2b-256 ddadff82aa83fd53bf5da244a3c4e22f6bc5b99e3bf7e10d3a950e72edf1e256

See more details on using hashes here.

Provenance

The following attestation bundles were made for omurtag-0.4.4.tar.gz:

Publisher: publish.yml on EvgeniGenchev/omurtag

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file omurtag-0.4.4-py3-none-any.whl.

File metadata

  • Download URL: omurtag-0.4.4-py3-none-any.whl
  • Upload date:
  • Size: 15.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for omurtag-0.4.4-py3-none-any.whl
Algorithm Hash digest
SHA256 3e2d7b5a1c06bd464a78d01613ac2d41acef932d3bb4091f713e11f01a4a8e48
MD5 cfc2614443c148fb2da52b84d66a9684
BLAKE2b-256 c6ee940a4d9c3e0bfc13901edea2b8a226ba142fa1c0be46a677bc29710f6e8d

See more details on using hashes here.

Provenance

The following attestation bundles were made for omurtag-0.4.4-py3-none-any.whl:

Publisher: publish.yml on EvgeniGenchev/omurtag

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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