skyzyx / alfred-workflow-builder
Workflow Builder for Alfred 2
Installs: 421
Dependents: 0
Suggesters: 0
Security: 0
Stars: 15
Watchers: 3
Forks: 50
Open Issues: 0
Requires
- php: >=5.3.3
- seld/jsonlint: >= 1.1
- symfony/filesystem: 2.*
- symfony/process: 2.*
Suggests
- doctrine/cache: Caching library.
- guzzle/guzzle: HTTP client library.
- monolog/monolog: Logging library.
README
Alfred Workflow Builder is a PHP class for creating workflows with Alfred 2. This class provides functions for working with plist settings files, reading and writing data to files, generating Alfred feedback results, and more.
Installation
Composer is the recommended way to install is package. Composer is dependency management tool for PHP that allows you to declare the dependencies your project needs and installs them into your project.
-
Add
skyzyx/alfred-workflow-builder
as a dependency in your project'scomposer.json
file.{ "require": { "skyzyx/alfred-workflow-builder": "1.0.*" } }
-
Download and install Composer.
curl -s "http://getcomposer.org/installer" | php
-
Install your dependencies.
php composer.phar install --optimize-autoloader
-
Require Composer's autoloader. Composer also prepares an autoload file that's capable of autoloading all of the classes in any of the libraries that it downloads. To use it, just add the following line to your code's bootstrap process.
require 'vendor/autoload.php';
The original version of this class (written by David Ferguson) had methods for things like caching data to local files and fetching remote data over HTTP. Instead, we recommend you use Guzzle, Requests or Buzz for HTTP requests and Doctrine Cache for local file system caching. If you'd also like logging, we recommend Monolog.
Alfred\Workflow
use Alfred\Workflow; // Pass a Bundle ID $w = new Workflow('com.ryanparman.my-workflow'); #=> <Alfred\Workflow>
string
toXML()
Accepts a properly formatted array or json object and converts it to XML for creating Alfred feedback results. If results
have been created using the result()
function, then passing no arguments will use the array of results created using
the result()
function.
Example using result function
$w->result(array( 'uid' => 'itemuid', 'arg' => 'itemarg', 'title' => 'Some Item Title', 'subtitle' => 'Some item subtitle', 'icon' => 'icon.png', 'valid' => 'yes', 'autocomplete' => 'autocomplete' )); echo $w->toXML();
Example using array
$results = array(); $temp = array( 'uid' => 'itemuid', 'arg' => 'itemarg', 'title' => 'Some Item Title', 'subtitle' => 'Some item subtitle', 'icon' => 'icon.png', 'valid' => 'yes', 'autocomplete' => 'autocomplete' ); array_push($results, $temp); echo $w->toXML($results);
Result
<?xml version="1.0"?> <items> <item uid="itemuid" arg="itemarg" autocomplete="autocomplete"> <title>Some Item Title</title> <subtitle>Some item subtitle</subtitle> <icon>icon.png</icon> </item> </items>
array
mdfind()
Executes an mdfind
command and returns results as an array of matching files.
$results = $w->mdfind('"kMDItemContentType == com.apple.mail.emlx"'); /* or */ $results = $w->mdfind('Alfred 2.app'); #=> (array) ['/Applications/Alfred 2.app']
You can learn more about querying the OS X metadata service by checking out:
- Using Spotlight from the OS X Commandline
- File Metadata Query Expression Syntax
- Spotlight Metadata Attributes
array
result()
Creates a new result item that is cached within the class object. This set of results is available via the results()
functions, or, can be formatted and returned as XML via the toXML()
function.
Example
$w->result(array ( 'uid' => 'alfred', 'arg' => 'alfredapp', 'title' => 'Alfred', 'subtitle' => '/Applications/Alfred.app', 'icon' => 'fileicon:/Applications/Alfred.app', 'valid' => 'yes', 'autocomplete' => 'Alfredapp', )); echo $w->toXML();
Result
<?xml version="1.0"?> <items> <item uid="alfred" arg="alfredapp" autocomplete="Alfredapp"> <title>Alfred</title> <subtitle>/Applications/Alfred.app</subtitle> <icon type="fileicon">/Applications/Alfred.app</icon> </item> </items>
Alfred\Storage\Plist
use Alfred\Storage\Plist; // Pass a Bundle ID and Plist name $plist = new Plist('com.ryanparman.my-workflow', 'info'); #=> <Alfred\Storage\Plist>
string
setValue()
Stores a key-value pair.
$plist->setValue('username', 'rparman');
string
setValues()
Stores a series of key-value pairs.
$plist->setValues(array( 'username' => 'rparman', 'password' => 'abc123', 'zipcode' => '90210', ));
string
getValue()
Retrieves the value of a key.
$username = $plist->getValue('username'); #=> (string) rparman
More!
You can learn more about Alfred 2 Workflows by checking out http://support.alfredapp.com/workflows.
You can also deconstruct some workflows that are built with Alfred Workflow Builder.