Skip to main content

A CLI utility for packaging and exporting Alfred workflows

Project description

Alfred Workflow Packager

Copyright 2016-2025 Caleb Evans
Released under the MIT license

Alfred Workflow Packager is a command-line utility which makes the process of packaging and exporting an Alfred workflow incredibly quick and easy. The utility supports Alfred 3 and up, on projects running Python 3 (Python 2 is no longer supported).

Setup

You can install the utility via pip3, either globally or within a virtualenv:

pip3 install alfred-workflow-packager

Usage

1. Create configuration file

Once you've installed AWP, you must configure it for every project where you wish to use it. To do so, create a packager.json file in the root directory of your project; this file configures AWP for that particular project.

Example

{
  "export_files": [
    "Fruit.alfredworkflow"
  ],
  "bundle_id": "com.yourname.fruit",
  "readme": "README.txt",
  "resources": [
      "icon.png",
      "src/*.py",
      "src/data/*.json"
  ]
}

Required settings

export_files

The paths of the exported workflows (relative to your project directory).

bundle_id

The unique bundle ID of your workflow. You must have one set in the installed workflow, or AWP will not be able to find your workflow when packaging.

resources

A list of zero or more files/folder patterns representing files or folders to copy from your project to the installed workflow. The directory structures and filenames are preserved when copying.

Local project:

- icon.png
- fruit
    - apple.py
    - banana.applescript
    - orange.php

Installed workflow (before running utility):

- info.plist
- special_file.json

packager.json resources:

[
    "icon.png",
    "fruit/*.json"
]

Installed workflow (after running utility):

- info.plist
- icon.png
- special_file.json
- fruit
    - apple.py
    - banana.applescript
    - orange.php

Note that files and folders already present in the installed workflow are not touched if they are not in the resources list.

Optional settings

readme

The path to the README file to use for this workflow; the About this Workflow field in your workflow is populated with the contents of this file.

2. Run utility

You can run the utility via the awp command:

awp

Running awp will copy those project resources listed in packager.json to the installed workflow (in their respective locations), but only if their contents or permissions have changed. If you ever need to ignore this equality check, you can force the copying of all files/directories by passing --force / -f.

awp --force
awp -f

Setting the workflow version

Passing the --version option (also -v) to awp allows you to set the version of the installed workflow directly. I highly recommend using semantic versioning to version your workflow releases.

awp --version 1.2.0
awp -v 1.2.0

Exporting the workflow

When you're pleased with your work and you're ready to publish a new release, you can export the installed workflow to your project directory by passing the --export flag (or -e) to awp.

awp --export
awp -e

Note that you can set the version and export the workflow simultaneously:

awp -v 1.2.0 -e

New in AWP v1.1.0: If you wish to temporarily export the workflow to a different file (different from export_files in packager.json), you can pass one or more optional paths to --export:

awp -v 1.3.0-beta.1 -e ~/Desktop/fruit-beta-alfred-5.alfredworkflow

4. Configure workflow objects

The last important step is to update any script objects in your workflow (i.e. objects of type Script Filter, Run Script, etc.) to reference the files copied to the installed workflow directory.

You should set the Language to /bin/bash and use the appropriate shell command to call your script. Use "$@" if your input is passed as argv, or "{query}" if your input is passed as {query}.

Python

/usr/bin/python3 -m fruit.apple "$@"
/usr/bin/python3 -m fruit.apple "{query}"

AppleScript

/usr/bin/osascript fruit/banana.applescript "$@"
/usr/bin/osascript fruit/banana.applescript "{query}"

PHP

/usr/bin/php fruit/orange.php "$@"
/usr/bin/php fruit/orange.php "{query}"

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

alfred_workflow_packager-3.2.1.tar.gz (6.9 kB view details)

Uploaded Source

Built Distribution

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

alfred_workflow_packager-3.2.1-py3-none-any.whl (9.1 kB view details)

Uploaded Python 3

File details

Details for the file alfred_workflow_packager-3.2.1.tar.gz.

File metadata

File hashes

Hashes for alfred_workflow_packager-3.2.1.tar.gz
Algorithm Hash digest
SHA256 62fa015f782fee93d2c995a578afded035a80e029ec22a5c4ee91c7d67161d3b
MD5 1993d2904da5b5788ce1fc0073c2fe82
BLAKE2b-256 0a79a3f96dc71470e55ba15859631726f417872e39af9dcd0903c3d4920f731b

See more details on using hashes here.

File details

Details for the file alfred_workflow_packager-3.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for alfred_workflow_packager-3.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8574a065a65836a4ebe925293ac7bf9f98a45c5c48d02982c32d0ad008702592
MD5 9d8cf22a5697a4536d939dd8cb4f4300
BLAKE2b-256 a87d24b092b63f4f207d71b8e07e71dec38360d6a3c798fd24ed88efb3be06fa

See more details on using hashes here.

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