Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zhaocai/alfred2-ruby-template
Alfred 2 Workflow Ruby Template
https://github.com/zhaocai/alfred2-ruby-template
Last synced: 2 days ago
JSON representation
Alfred 2 Workflow Ruby Template
- Host: GitHub
- URL: https://github.com/zhaocai/alfred2-ruby-template
- Owner: zhaocai
- Created: 2013-03-21T03:58:25.000Z (almost 12 years ago)
- Default Branch: master
- Last Pushed: 2016-01-28T19:33:49.000Z (almost 9 years ago)
- Last Synced: 2024-12-30T07:07:38.910Z (9 days ago)
- Language: Ruby
- Homepage: http://zhaocai.github.com/alfred2-ruby-template/
- Size: 12.8 MB
- Stars: 144
- Watchers: 6
- Forks: 37
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome_ai_agents - Alfred2-Ruby-Template - Alfred 2 Workflow Ruby Template (Building / Workflows)
README
# Alfred 2 Workflow Ruby Template
A template for Ruby-based Alfred 2 workflow development.
## Example Projects
* [alfred2-top-workflow]( https://github.com/zhaocai/alfred2-top-workflow )
* [alfred2-google-workflow]( https://github.com/zhaocai/alfred2-google-workflow )
* [alfred2-sourcetree-workflow]( https://github.com/zhaocai/alfred2-sourcetree-workflow )## Main features:
* Use standard [bundler][gembundler] to easily package, manage, and update ruby gems in the workflow.
* Friendly exception and debug output to the Mac OS X Console
* Automate rescue feedback items to alfred when something goes wrong.
* Automate saving and loading cached feedback> Alfred workflow and feedback related functions are located in a separate [alfred-workflow gem]( https://github.com/zhaocai/alfred-workflow ) which can be easily installed by adding `gem "alfred-workflow"` in the Gemfile.
* Functions to easily load and save user configuration (in YAML)
* Functions for smart case query filter of feedback results.
* Functions for finding the bundle ID, cache and storage paths, and query arguments.
* Functions for reading and writing plist files.
* Functions to simplify generating feedback XML for Alfred.## Quick Example
```ruby
require 'rubygems' unless defined? Gem
require "bundle/bundler/setup"
require "alfred"Alfred.with_friendly_error do |alfred|
fb = alfred.feedbackfb.add_file_item(File.expand_path "~/Applications/")
puts fb.to_alfred(ARGV)
end
```Main code are wrapped in `Alfred.with_friendly_error` block. Exceptions and debug messages are logged to Console log file **~/Library/Logs/Alfred-Workflow.log**.
One more example with rescue feedback automatically generated!
```ruby
require 'rubygems' unless defined? Gem
require "bundle/bundler/setup"
require "alfred"def my_code_with_something_goes_wrong
true
endAlfred.with_friendly_error do |alfred|
alfred.with_rescue_feedback = truefb = alfred.feedback
if my_code_with_something_goes_wrong
raise Alfred::NoBundleIDError, "Wrong Bundle ID Test!"
end
end
```![rescue feedback](https://raw.github.com/zhaocai/alfred2-ruby-template/master/screenshots/rescue%20feedback.png)
## Quick Start Guide
You may directly download the [alfred2-ruby-template workflow]( https://github.com/zhaocai/alfred2-ruby-template/raw/master/alfred2-ruby-template.alfredworkflow ) here, install, and play with the keywords: `test feedback` and `test rescue feedback`.
### Step 1: Clone or Fork
Clone or fork this repo to your local directory:
`git clone https://github.com/zhaocai/alfred2-ruby-template.git`
### Step 2: Config.yml
Update **domain** and **id** in the `config.yml` file.```yaml
# bundle_id = "domain.id"
# path is the relative path to the workflow in the project root
---
path: workflow
domain: your.domain
id: alfred2-ruby-template
# If you are using Alfred's advanced Dropbox sync, indicate the path shown in
# Alfred Preferences > Advanced > Syncing:
dropbox: ~/Dropbox/Alfred
```### Step 3: Install (with System Ruby /usr/bin/ruby)
If you use rvm or rbenv, switch to the system ruby.> `sudo gem install plist` if you have not installed the **plist** gem.
Run `rake install` to install the workflow or `rake dbxinstall` if you are using Alfred's advanced Dropbox sync. Now you can see the workflow loaded in the
Alfred workflow interface.### Step 4: Add Ruby Gems
Edit **workflow/Gemfile**. Add some gems.
```ruby
source "https://rubygems.org"gem "plist"
gem "alfred-workflow"
# gem "your-gem-required"
```Run `rake bundle:install` to pull the gems into **workflow/bundle/** folder.
### Step 5: Your Code
Now you are good to add your own code based on the previous example.
## More Examples:
### 1. Automate saving and loading cached feedback
```ruby
require 'rubygems' unless defined? Gem
require "bundle/bundler/setup"
require "alfred"Alfred.with_friendly_error do |alfred|
alfred.with_rescue_feedback = true
alfred.with_cached_feedback do
# expire in 1 hour
use_cache_file :expire => 3600
# or define your own cache file
# use_cache_file(
# :file => File.join(alfred.volatile_storage_path ,"this_workflow.alfred2feedback") ,
# :expire => 3600
# )end
# prepend ! in query to refresh
is_refresh = false
if ARGV[0] == '!'
is_refresh = true
ARGV.shift
endif !is_refresh and fb = alfred.feedback.get_cached_feedback
# cached feedback is valid
puts fb.to_alfred
else
fb = alfred.feedback
# ... generate_feedback as usually
fb.put_cached_feedback
end
end
```## Troubleshooting
1. System bundler version is too old.
`sudo gem install bundler`
## Reference
* [alfred2-ruby-framework]( https://github.com/canadaduane/alfred2-ruby-framework )
## LICENSE:
Copyright (c) 2013 Zhao Cai
This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation, either version 3 of the License, or (at your option)
any later version.This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.You should have received a copy of the GNU General Public License along with
this program. If not, see .[gembundler]: http://gembundler.com/