Skip to content

Tackle is a programmable configuration language for building modular utilities, code generators, and CLIs with schema validation baked in.

License

Notifications You must be signed in to change notification settings

sudoblockio/tackle

Repository files navigation

tackle

pypi python codecov codeql

tackle is an experimental DSL built as a fork of cookiecutter written in documents such as json, yaml, or toml with primitives of a general purpose programming language including functions, structs, methods, and types with rich control flow. It turns a config file into self documenting CLI in a concise declarative syntax.

Core to the language is the notion of a hook which is a pydantic BaseModel under the hood. These hooks can be created, called, or combined in documents and / or python with inheritance and composition. Tackle ships with over 100 native hooks to perform rudimentary tasks from prompting users for CLI inputs, reading / manipulating / writing data to and from files, to rendering templates for code generation / schema translations.

Major syntax changes are coming soon and thus using the language is discouraged without reaching out first via discord or leaving issues in this repo. A formal spec is under active development and will be made public Q3/Q4 2024. A private version of this repo is under active development and will be merged in as soon as the spec becomes public.

=< v0.6.0

greeter(target str = 'world')<-:
  print->: Hello {{target}}

Future

greeter(target str = 'world')->:
  print()<-: Hello {{target}}

When the syntax is stable, this project will be formally released. Please reach out via discord if you want to talk directly about it in the meantime.

Code of Conduct

Everyone interacting in the tackle project's codebases, issue trackers, chat rooms, and mailing lists is expected to follow the [PyPA Code of Conduct](https://github.com/pypa/.github/blob/main/CODE_OF_CONDUCT.md.

Credit

Special thanks to audreyfeldroy for creating cookiecutter, the basis for this project. Would not have been possible without it and other core dependencies like pydantic and jinja.

About

Tackle is a programmable configuration language for building modular utilities, code generators, and CLIs with schema validation baked in.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages