Skip to main content

Make single-file builds of Python tools using zapp, shiv, or pex

Project description

Introduction

Make single-file builds of Python tools using zapp, shiv, or pex.

Usage

$ toolmaker --help
usage: toolmaker [-h] [--version] [--config CONFIG]
                 [--build | --rebuild | --delete] [--all]
                 [tool [tool ...]]

Make single-file builds of Python tools using zapp, shiv, or pex

positional arguments:
  tool                  apply action on this tool(s)

optional arguments:
  -h, --help            show this help message and exit
  --version             show program's version number and exit
  --config CONFIG, -c CONFIG
                        configuration file (default:
                        /home/sinoroc/.config/toolmaker/toolmaker.cfg)
  --build, -b           build selected tool(s)
  --rebuild, -r         rebuild selected tool(s)
  --delete, -d          delete selected tool(s)
  --all, -a             apply action on all tools

Configuration

By default this tool looks for a configuration file at the following location:

  • ${HOME}/.config/toolmaker/toolmaker.cfg on Linux
  • %USERPROFILE%\AppData\Roaming\toolmaker\toolmaker.cfg on Windows
[toolmaker.tool.defaults]
tools_directory = ~/.local/bin/.toolmaker

[toolmaker.tool.zapp:deptree]
entry_point = deptree.cli:main
requirements =
    deptree

[toolmaker.tool.pex:http]
entry_point = http.server

[toolmaker.tool.shiv:shiv]
entry_point = shiv.cli:main
requirements =
    shiv

[toolmaker.tool.zapp:something]
entry_point = something.cli:main
requirements =
    --no-index
    SomeRandomProject --find-links /path/to/location
requirements_txts =
    requirements.txt
    more.txt

Action

The action can be specified on the command line. Either one of:

  • --build, -b to build (already existing tools are skipped);
  • --rebuild, -r to rebuild (already existing tools are rebuilt);
  • --delete, -d to delete (tool target file is deleted if it exists, then its parent directory is deleted if it is empty).

The default action when no flag is specified is to build the tools.

Configuration

Place tools in current directory

[toolmaker.tool.defaults]
tools_directory =
tool_directory =

[toolmaker.tool.zapp:foo]
# ./foo

[toolmaker.tool.zapp:bar]
# ./bar

Place tools in specific directory

[toolmaker.tool.defaults]
tools_directory = /somewhere
tool_directory =

[toolmaker.tool.zapp:foo]
# /somewhere/foo

[toolmaker.tool.zapp:bar]
# /somewhere/bar

Place tools in subdirectories

[toolmaker.tool.defaults]
tools_directory = /somewhere

[toolmaker.tool.zapp:foo0]
# /somewhere/foo0/foo0

[toolmaker.tool.zapp:foo1]
tool_directory = foo0
# /somewhere/foo0/foo1

[toolmaker.tool.zapp:foo2]
# /somewhere/foo2/foo2

[toolmaker.tool.zapp:foo3]
tool_file = foo0
# /somewhere/foo3/foo0

Example to use with GNU stow

To use in combination with GNU Stow:

[toolmaker.tool.defaults]
tools_directory = ~/.local/bin/.toolmaker

[toolmaker.tool.zapp:foo0]
# ~/.local/bin/.toolmaker/foo0/foo0

[toolmaker.tool.zapp:foo1]
tool_directory = foo0
# ~/.local/bin/.toolmaker/foo0/foo1

[toolmaker.tool.zapp:foo2]
# ~/.local/bin/.toolmaker/foo2/foo2

[toolmaker.tool.zapp:foo3]
tool_file = foo0
# ~/.local/bin/.toolmaker/foo3/foo0

Details

Similar projects

Project details


Download files

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

Files for toolmaker, version 0.0.7
Filename, size File type Python version Upload date Hashes
Filename, size toolmaker-0.0.7-py3-none-any.whl (11.3 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size toolmaker-0.0.7.tar.gz (11.9 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page