Orbit
A command-line utility that creates projects from orbits (project templates), e.g. creating a Python package project from a Python package project template.
Table Of Contents
What is Orbit
A command-line utility that creates projects from orbit (project templates), e.g. creating a Python package project from a Python package project template.
Installation
Installing via pip
$ pip install orbit-client
Usage
- Cross-platform: Windows, Mac, and Linux are officially supported.
- You don't have to know/write Python code to use Cookiecutter.
- Works with Python 3.7, 3.8, 3.9, 3.10, 3.11
- Project templates can be in any programming language or markup format: Python, JavaScript, Ruby, CoffeeScript, RST, Markdown, CSS, HTML, you name it. You can use multiple languages in the same project template.
For users of existing templates
-
Simple command line usage:
# Create project from the orbit-pypackage.git repo template # You'll be prompted to enter values. # Then it'll create your Python package in the current working directory, # based on those values. $ orbit <repo url> # For the sake of brevity, repos on GitHub can just use the 'gh' prefix $ orbit gh:audreyfeldroy/orbit-pypackage
-
Use it at the command line with a local template:
# Create project in the current working directory, from the local # orbit-pypackage/ template $ orbit orbit-pypackage/
-
Or use it from Python:
from orbit.main import orbit # Create project from the orbit-pypackage/ template orbit('orbit-pypackage/') # Create project from the orbit-pypackage.git repo template orbit('<repo url>')
-
Unless you suppress it with
--no-input, you are prompted for input:- Prompts are the keys in
orbit.json. - Default responses are the values in
orbit.json. - Prompts are shown in order.
- Prompts are the keys in
-
Cross-platform support for
~/.orbitrcfiles:default_context: full_name: "haonv" email: "haonv@ftech.ai.com" github_username: "haonv" orbits_dir: "~/.orbits/"
-
You can use local orbits, or remote orbits directly from Git repos or Mercurial repos on Bitbucket.
-
Default context: specify key/value pairs that you want to be used as defaults whenever you generate a project.
-
Inject extra context with command-line arguments:
For template creators
-
Supports unlimited levels of directory nesting.
-
100% of templating is done with Jinja2.
-
Both, directory names and filenames can be templated. For example:
{{orbit.repo_name}}/{{orbit.repo_name}}/{{orbit.repo_name}}.py
-
Simply define your template variables in a
orbit.jsonfile. You can also add human-readable questions and choices that will be prompted to the user for each variable using the__prompts__key. Those human-readable questions supportsrichmarkup such as[bold yellow]this is bold and yellow[/]For example:{ "full_name": "Audrey Roy Greenfeld", "email": "audreyr@gmail.com", "project_name": "Complexity", "repo_name": "complexity", "project_short_description": "Refreshingly simple static site generator.", "release_date": "2013-07-10", "year": "2013", "version": "0.1.1", "linting": ["ruff", "flake8", "none"], "__prompts__": { "full_name": "Provide your [bold yellow]full name[/]", "email": "Provide your [bold yellow]email[/]", "linting": { "__prompt__": "Which [bold yellow]linting tool[/] do you want to use?", "ruff": "Ruff", "flake8": "Flake8", "none": "No linting tool" } } }
-
Pre- and post-generate hooks: Python or shell scripts to run before or after generating a project.
Author
Metadata
Release files for orbit-client 1.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| orbit-client-1.1.0.tar.gz | 28.5 kB | Details |
Release files / orbit-client-1.1.0.tar.gz
| Download URL | orbit-client-1.1.0.tar.gz |
|---|---|
| Size | 28.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d204a76f08890f6a6067415f8f166bc0a06c4324d11e6b4beda6d67047745eb7
|
|
BLAKE2b-256 checksum How to use checksums |
9104ab43258125dc8c6e20307a19b99be44138623ea30933d5b2c32140327c97
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.9.12
|