Workflow

Cache

Heads up

You must set your Workflow Bundle ID in order to use the cache. If you try and access the cache without setting the Bundle ID, the library will throw an Exception.

To set the Bundle ID: In Alfred > Workflows, double-click your workflow in the list on the left hand side and fill in the "Bundle Id" field (e.g. com.example.workflowname)

If you need to cache volatile data for your workflow, you can easily do so via the cache method.

This method reads and writes to a file called cache.json witin the Alfred-recommended directory on the user's computer (~/Library/Caches/com.runningwithcrayons.Alfred/Workflow Data/[bundle id]).

$workflow->cache()->writeJson([
    [
        'id'     => 123,
        'name'   => 'Bob Belcher',
        'avatar' => 'bob.png',
    ],
    [
        'id'     => 456,
        'name'   => 'Linda Belcher',
        'avatar' => 'linda.png',
    ],
]);

$data = $workflow->cache()->readJson();

Any argument you pass into the writeJson method will be JSON encoded and written to the default cache path. Each time you call writeJson you are over-writing the existing cache file.

readJson will read in the file from the default cache path and decode the JSON as an associative array. To read the data as an object:

$data = $workflow->cache()->readJson(null, false);

To get the default cache path, you can use the path method:

$workflow->cache()->path();

Custom Cache File

By default, the filename is cache.json, but you can manage multiple caches by passing in a different filename when reading and writing:

$workflow->cache()->writeJson([1, 2, 3], 'secondary.json');
$workflow->cache()->readJson('secondary.json');
$workflow->cache()->path('secondary.json');

Working with non-JSON Data

$workflow->cache()->write('Remember this for a bit.');
$workflow->cache()->read();

$workflow->cache()->write('Remember this for a bit.', 'secondary.txt');
$workflow->cache()->read('secondary.txt');
Previous
Environment