You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Supercharge your Alfred 🎩 workflows by building them in Rust 🦀!
🚀 Getting started
This project contains a powerpack crate which provides types for developing
script filter Alfred workflows in Rust as well as various utilities that make it
easier to build workflows. It also provides a command line tool to initialize,
build, and install workflows built using the powerpack crate.
Firstly, install the command line tool.
cargo install powerpack-cli
Now create a new project using a similar API as cargo new or cargo init.
powerpack new myworkflow &&cd myworkflow
This will create a new Rust project as well as a workflow/ directory
containing information about your Alfred workflow. The following will create
a release build of the workflow and copy it to the workflow/ directory.
powerpack build --release
Now you can link it to Alfred. The following will symlink the workflow/
directory to the Alfred preferences folder.
powerpack link
Now you can run the workflow from Alfred ✨!
To package a .alfredworkflow file for release you can run the following.
powerpack package
The release will be available at target/workflow/myworkflow.alfredworkflow.
🤸 Usage
The following is a "Hello World!" Alfred workflow built using powerpack.
use std::env;use std::error::Error;use std::iter;fnmain() -> Result<(),Box<dynError>>{// Alfred passes in a single argument for the user query.let arg = env::args().nth(1);let query = arg.as_deref().unwrap_or("");// Create an item to show in the Alfred drop down.let item = powerpack::Item::new("Hello World!").subtitle(format!("Your query was '{}'", query));// Output the item to Alfred!
powerpack::output(iter::once(item))?;Ok(())}
This would render an item as shown.
👷 GitHub Action
setup-crate can be used to install powerpack in a GitHub Actions
workflow. For example:
steps:
- uses: actions/checkout@v2
- uses: extractions/setup-crate@v1with:
repo: rossmacarthur/powerpack
- run: powerpack package# produces an artifact at `target/workflow/{name}.alfredworkflow`