Skip to main content

tappack: Tasmota Application Packager

This tool aims to simplify packaging Tasmota Berry code as a TAPP file, including basic dependency resolution. It can be run locally, but is primarily intended for use during a release workflow, e.g. GitHub Actions.

What Does It Do?

It performs the following:

  • Reads your project manifest file (see below), with a list of dependency URLs (other .tapp files).
  • Downloads each, extracts and merges them, in a subfolder, it into your own code.
  • Auto-generates an autoexec.be for your library that sets up all the relevant dependency paths.
  • Packages the whole structure into a .tapp file ready for deployment.

Manifest File

Your project needs to contain a tappack manifest file, manifest.yaml, with at least fields name and dependencies. The latter is a mapping of module names to URLs of corresponding .tapp file. For example:

name: my_library
dependencies:
  my_tools: https://example.com/my_tools.tapp

You can also specify when a dependency should be read from a local path (which will be recursed automatically) as follows:

name: my_library
dependencies:
  my_dependency:
    .type: LocalPath
    path: /usr/src/my_dependency

You can also specify GitHub Release assets:

name: my_library
dependencies:
  tools:
    .type: GitHubReleaseAsset
    org: fmtr
    version: v0.0.9 # Omit this field for the latest version.
    repo: tools.be
    filename: tools.tapp

Release channels are also supported. So pulling from a URL during normal packaging, but from a local path during a development build (i.e. with parameter --channel-id development), is done like this:

name: my_library
dependencies:
  tools:
    .type: URL
    url: https://github.com/fmtr/tools/releases/download/v0.0.1/tools.tapp
    .channels:
      development:
        .type: LocalPath
        path: /fm/tools.be/module

Example Usage

$ tappack --help
Usage: tappack [OPTIONS]

Options:
  --module-path DIRECTORY  Path to your module, containing any Berry files,
                           manifests, assets, etc. Example:
                           /usr/src/my_berry_project  [required]
  --output FILE            Path to write the output .tapp package. Example:
                           ~/my_project.tapp
  --channel-id TEXT        Identifier for the release channel. Only relevant
                           if your manifests contain release channel
                           information. Example: development
  --help                   Show this message and exit.
$tappack --module-path /usr/src/my_berry_project --tapp-path ~/my_project.tapp

Installing

$pip install tappack

No autoexec.be

Your module should not contain an autoexec.be, as tappack will generate one. If you need to run any code in the autoexec context, then ensure your module implements an autoexec method, which will be called once it is imported. For example:

var mod = module("my_module")

def autoexec()

    # Do autoexec stuff here.

end

mod.autoexec=autoexec
return mod

Running as a Server

tappack can also be run as a development server. This aims to simplify Tasmota Berry script development by doing two things:

  • Starts a web app that automatically packages your project(s), and serves them as a .tapp files.
  • Opens a tunnel to the web app, letting you deploy your Tasmota Application to any device with an internet connection.

How to Install

pip install tappack[server]

Example Usage

To serve a project:

$tappack-server --project /usr/src/my_project

You can serve as many projects as you like, for example:

$tappack-server --project /usr/src/project_a --project /usr/src/project_b ...

If you want to give a project a name other than its directory name, you can prefix its path with :, e.g.

$tappack-server --project project_c:/usr/src/project_c/berry_files ...

This will serve the contents of berry_files as a TAPP file called project_c.tapp.

Sample Output

Waiting for tunnel to initialise...
 * Serving Flask app 'TappServer'
 * Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
 * Running on http://127.0.0.1:80
Press CTRL+C to quit
Serving project "project_a": `tasmota.urlfetch("http://c141-x-y-z-w.ngrok.io/project_a.tapp")`
Serving project "project_b": `tasmota.urlfetch("http://c141-x-y-z-w.ngrok.io/project_b.tapp")`

⚠️ Security Warning

Running tappack-server involves opening up your project files to the public internet, using a development server. Proceed with caution.

Metadata

Release files for tappack 0.3.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tappack 0.3.2
File Size Uploaded
tappack-0.3.2.tar.gz 10.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for tappack 0.3.2
File Interpreter ABI Platform
tappack-0.3.2-py3-none-any.whl Python 3 none any Details

Total release size: 20.9 kB

Release files / tappack-0.3.2.tar.gz

Download URL tappack-0.3.2.tar.gz
Size 10.3 kB
Tags Source
SHA-256 checksum
How to use checksums
0ca5ecb7d7b6709dead8550fcc3943bae8c342e2a8853974e36826437fd3df67
BLAKE2b-256 checksum
How to use checksums
e67f7290014b1b6aa8b67b08e1895feb9b44a702029dd5a979752753a90f295c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.10.12

Release files / tappack-0.3.2-py3-none-any.whl

Download URL tappack-0.3.2-py3-none-any.whl
Size 10.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ff6e1462f4d9c8e1e0c33b73408153c921c98f21189d07b62a9e9d4023a17cd4
BLAKE2b-256 checksum
How to use checksums
ed3fe95393f38a8ba0420f2ab3f58057e9ae12db98003a450e317d91f3d9678c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.10.12

Release history Release notifications | RSS feed

This release

0.3.2 This release

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

0.0.1

2 release files

0.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page