⚡ powerpack

Crates.io Version Docs.rs Latest Build Status

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. It also provides a command line tool to initialize, build, and install workflows built using the powerpack crate.

Firstly, install the command line tool. sh cargo install powerpack-cli

Now create a new project using a similar API as cargo new or cargo init. sh 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. sh powerpack build --release

Now you can link it to Alfred. The following will symlink the workflow/ directory to the Alfred preferences folder. sh powerpack link

Now you can run the workflow from Alfred ✨!

To package a .alfredworkflow file for release you can run the following. sh powerpack package

The release will be available at target/workflow/myworkflow.alfredworkflow.

🤸 Usage

The following is a "Hello World!" Alfred workflow built using powerpack.

```rust use std::env; use std::error::Error; use std::iter;

fn main() -> Result<(), Box> { // Alfred passes in a single argument for the user query. let arg = env::args().nth(1); let query = arg.asderef().unwrapor("");

// 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.

image

👷 GitHub Action

setup-crate can be used to install powerpack in a GitHub Actions workflow. For example: yaml steps: - uses: actions/checkout@v2 - uses: extractions/setup-crate@v1 with: owner: rossmacarthur name: powerpack - run: powerpack package # produces an artifact at `target/workflow/{name}.alfredworkflow`

💡 Examples

The following projects are built using powerpack.

License

Licensed under either of

at your option.