GitHub - joshfarrant/shortcuts-js: A JavaScript iOS 12 Shortcuts creator
source link: https://github.com/joshfarrant/shortcuts-js
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
README.md
Shortcuts JS
A Node.js iOS 12 Shortcuts creator.
@joshfarrant/shortcuts-js on npm.
NPM | Documentation | Contributing | Medium
Minimal Example
npm install @joshfarrant/shortcuts-js
// Only used to create the .shortcut file const fs = require('fs'); const { buildShortcut, withVariables, } = require('@joshfarrant/shortcuts-js'); const { calculate, comment, number, showResult } = require('@joshfarrant/shortcuts-js/actions'); // We'll use this later to reference the output of a calculation let calcId; // Define our list of actions const actions = [ comment({ text: 'Hello, world!', }), number({ number: 42, }), calculate({ operand: 3, operation: '/', }, (id) => { // We'll use this again in a moment calcId = id; }), showResult({ /** * We can use the result of the calculation in this Shortcuts's input * by passing the string to the 'withVariables' tag function */ text: withVariables`Total is ${calcId}!`, }), ]; // Generate the Shortcut data const shortcut = buildShortcut(actions); // Write the Shortcut to a file in the current directory fs.writeFile('My Fancy Shortcut.shortcut', shortcut, (err) => { if (err) { console.error('Something went wrong :(', err); return; } console.log('Shortcut created!'); });
Running this code will build a Shortcut named 'My Fancy Shortcut.shortcut' in the current directory.
This can be AirDropped to an iPhone or iPad running iOS 12, at which point it will be automatically opened and imported into Shortcuts.
Further Examples
For brevity, these examples omit the code for writing the file to disk and just focus on building the Shortcut. See the Minimal Example above for an example of how to create the .shortcut file.
Battery level checker, with conditional action
const { buildShortcut, withVariables, } = require('@joshfarrant/shortcuts-js'); const { conditional, getBatteryLevel, setLowPowerMode, showResult, } = require('@joshfarrant/shortcuts-js/actions'); let batteryLevel; const actions = [ getBatteryLevel({}, (id) => { batteryLevel = id; }), conditional({ input: '<', value: 20, ifTrue: [ setLowPowerMode({ value: true, }), showResult({ text: withVariables`Your battery is at ${batteryLevel}%, you might want to charge it.`, }), ], ifFalse: [ showResult({ text: withVariables`Your battery is at ${batteryLevel}%, you're probably fine for now.`, }), ], }) ]; const shortcut = buildShortcut(actions);
Shortcut folder creator
This example creates folders and subfolders of Shortcuts so they can be easily run from one 'Folder' Shortcut.
This Shortcut could be tedious to set up using the drag-and-drop interface of the Shortcuts app, however we can simplify the generation of this Shortcut by using a function to build our actions from a predefined array of strings.
const { buildShortcut, withVariables, } = require('@joshfarrant/shortcuts-js'); const { conditional, getBatteryLevel, setLowPowerMode, showResult, } = require('@joshfarrant/shortcuts-js/actions'); const foldersArr = [ ['Health', [ // The name of the folder 'Log Sleep', // The names of Shortcuts to contain in that folder 'Log Run', 'Log Cycle', ]], ['Home', [ ['Lights', [ 'Lights On', // We can go as many levels deep as we like 'Lights Off', ]], ['Heating', [ 'Heating On', 'Heating Off', ]], ['Cameras', [ 'Cameras On', 'Cameras Off', ]], ['Door', [ 'Lock Door', 'Unlock Door', ]], ]], ['Audio', [ 'Play Playlist', 'Resume Podcast' ]], ]; const buildFolders = (arr) => ( arr.map(shortcut => ( Array.isArray(shortcut) ? ({ label: shortcut[0], actions: [ chooseFromMenu({ prompt: shortcut[0], items: buildFolders(shortcut[1]), }), ], } ) : ({ label: shortcut, actions: [ runShortcut({ name: shortcut, }), ], }) )) ); const actions = [ chooseFromMenu({ prompt: 'Open', items: buildFolders(foldersArr), }), ]; const shortcut = buildShortcut(actions);
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK