Skip to content

electrikmilk/cherri

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Cherri Icon

Cherri

Build & Test Releases Go License Platform GoDoc Go Report Card

Cherri (pronounced cherry) is a Shortcuts programming language that compiles directly to a valid runnable Shortcut.

The primary goal is to make it practical to create large Shortcut projects (within the limitations of Shortcuts) and maintain them long term.

Hello World Example

🌟 Top Features

  • πŸ–₯️ Laptop/Desktop-based development (CLI, VSCode extension, macOS app)
  • πŸŽ“ Easy to learn and syntax similar to other languages
  • 🐞 1-1 translation to Shortcut actions as much as possible to make debugging easier
  • πŸ₯Ύ Half-bootstrapped: Most actions and types are written in the language
  • πŸ“¦ Package manager: GitHub repo-based package manager built in, allowing for automatic inclusion and updates.
  • πŸͺ„ No magic variables syntax, they're constants instead
  • πŸͺΆ Optimized to create as small as possible Shortcuts and reduce memory usage at runtime
  • #️⃣ Include files within others for large Shortcut projects
  • πŸ”§ Define actions with type checking, enums, optionals, default values, raw identifiers, and raw keys.
  • πŸ”„ Define functions to run within their own scope at the top of your Shortcut to reduce duplicate actions.
  • πŸ“‹ Copy-paste actions automatically
  • πŸ₯© Enter action identifier and parameters manually using Raw Actions.
  • ❓ Define import questions
  • πŸ“‡ Generate VCards for menus
  • πŸ“„ Embed files in base64
  • πŸ”€ Convert Shortcuts from an iCloud link with the --import= option
  • πŸ”’ Type system and type inference
  • πŸ” Signs using macOS, falls back on HubSign or another server that uses scaxyz/shortcut-signing-server.

Resources

  • πŸ’ Cherri VSCode Extension
  • πŸ› Playground - Try out Cherri on any platform, preview the result, and export signed Shortcuts
  • πŸ–₯️ macOS IDE - Defines Cherri file type, write and build Shortcuts on Mac with a GUI
  • πŸ“„ Documentation - Learn Cherri or how to contribute
  • πŸ” Glyph Search - Search glyphs you can use in Cherri!
  • ❓ FAQ

Installation

You can install Cherri by downloading the latest release or via the Homebrew package manager:

Add Tap:

brew tap electrikmilk/cherri

Install:

brew install electrikmilk/cherri/cherri

Usage

cherri file.cherri

Run cherri without any arguments to see all options and usage. For development, use the --debug (or -d) option to print stack traces, debug information, and output a .plist file.

Why another Shortcuts language?

Because it's fun :)

Some languages have been abandoned, don't work well, or no longer work. I don't want Shortcuts languages to die. There should be more, not less.

Plus, some stability comes with this project being on macOS and not iOS, and I'm not aware of another Shortcuts language with macOS as its platform other than Buttermilk.

Community

Credits

Reference

Inspiration


The original Workflow app assigned a code name to each release. Cherri is named after the second-to-last update "Cherries" (also cherry is one of my favorite flavors).

This project started on October 5, 2022.