deanishe Posted September 15, 2017 Share Posted September 15, 2017 (edited) AwGo — A Go library for Alfred workflows Full-featured library to build lightning-fast workflows in a jiffy. https://github.com/deanishe/awgo Features Easy access to Alfred configuration, including populating a struct from workflow variables and persisting settings back to info.plist. Straightforward generation of Alfred JSON feedback. Support for all applicable Alfred features up to v3.5. Fuzzy sorting/filtering. Simple API for caching/saving workflow data. Catches panics, logs stack trace and shows user an error message. Workflow updates API with built-in support for GitHub releases. Built-in logging for easier debugging. "Magic" queries/actions for simplified development and user support. macOS system icons. Installation & usage Install AwGo with: go get -u github.com/deanishe/awgo/... Typically, you'd call your program's main entry point via Run(). This way, the library will rescue any panic, log the stack trace and show an error message to the user in Alfred. program.go: package main // Package is called aw import "github.com/deanishe/awgo" // Workflow is the main API var wf *aw.Workflow func init() { // Create a new Workflow using default settings. // Critical settings are provided by Alfred via environment variables, // so this *will* die in flames if not run in an Alfred-like environment. wf = aw.New() } // Your workflow starts here func run() { // Add a "Script Filter" result wf.NewItem("First result!") // Send results to Alfred wf.SendFeedback() } func main() { // Wrap your entry point with Run() to catch and log panics and // show an error in Alfred instead of silently dying wf.Run(run) } In the Script Filter's Script box (Language = /bin/bash with input as argv): ./program "$1" Documentation Read the docs on GoDoc. Check out the example workflows (docs), which show how to use AwGo. Use one as a template to get your own workflow up and running quickly. Running/testing The library, and therefore the unit tests, rely on being run in an Alfred-like environment, as they pull configuration options from environment variables (which are set by Alfred). As such, you must source the env.sh script in the project root or run unit tests via the run-tests.sh script (which also sets up an appropriate environment then calls go test). Licensing & thanks This library is released under the MIT licence. The icon is based on the Go Gopher by Renee French. Edited June 30, 2018 by deanishe Fix links again xilopaint and nikivi 2 Link to comment
carlcaulkett Posted September 22, 2017 Share Posted September 22, 2017 I think I posted this to the wrong forum previously. Apologies! Hey, @Deanishe thanks very much for bringing out AwGo. I'm pleased to report that I've just tried the example program, and after creating a symbolic link to the Golang app, it worked. I am really excited by this package because, although I have used Python quite a bit, nowadays I much prefer Golang, so this is perfect for me. I'm going to try to port that Lazarus Docs searching tool that you kindly worked on for me and the look at extending it as you suggested. Link to comment
deanishe Posted September 22, 2017 Author Share Posted September 22, 2017 5 hours ago, carlcaulkett said: I think I posted this to the wrong forum previously. Apologies! Yeah. I merged it with the AwGo thread. Which I’ve done again. I’ll delete the first post. 5 hours ago, carlcaulkett said: thanks very much for bringing out AwGo Glad you like it. 5 hours ago, carlcaulkett said: after creating a symbolic link to the Golang app, it worked That’s not necessary. Are you using “go run” to execute your workflow? You should compile it instead with “go build”. Link to comment
deanishe Posted June 30, 2018 Author Share Posted June 30, 2018 (edited) Quite a hefty update to v0.14 today. Bad news first: I've changed a lot of the API. Good news: I've added support for Alfred's entire AppleScript API, so you can call Alfred directly from Go code, and best of all, you can now populate a struct from workflow variables via Config.To() and save settings back to info.plist with Config.Set() or Config.From() (the counterpart to Config.To()). Edited June 30, 2018 by deanishe nikivi 1 Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now