UNPKG

@scriptables/manifest

Version:

Utilities to generate, parse, and update manifest headers in Scriptable scripts.

60 lines (57 loc) 1.75 kB
'use strict'; var matchAllBannerManifest = require('./matchAllBannerManifest'); var parse = require('./parse'); var types = require('./types'); function parseScriptableManifest(script, targetKeys = []) { if (!script) { return { manifest: {}, rawHeader: "", content: "" }; } const { header: parsedManifest, headerContent: rawHeader, content } = parse.parse(script, (headerLines) => extractManifestFromHeader(headerLines, targetKeys), { maxHeaderLines: 20 }); return { manifest: parsedManifest, rawHeader, content }; } function extractManifestFromHeader(headerLines, targetKeys) { const manifest = {}; const keysToExtract = targetKeys.length ? targetKeys : [...types.SCRIPTABLE_BANNER_KEYS]; const manifestLine = headerLines.join(" "); const matches = matchAllBannerManifest.matchAllBannerManifest(manifestLine); for (const match of matches) { const key = match[1]; const value = match[2].trim(); const manifestKey = key; if (keysToExtract.includes(manifestKey) && value !== "") { setManifestValue(manifest, manifestKey, value); } } return manifest; } function setManifestValue(manifest, key, value) { switch (key) { case "always-run-in-app": manifest.alwaysRunInApp = value === "true"; break; case "share-sheet-inputs": manifest.shareSheetInputs = value.split(",").map((v) => v.trim()); break; case "icon-color": manifest.iconColor = value.trim(); break; case "icon-glyph": manifest.iconGlyph = value.trim(); break; } } exports.parseScriptableManifest = parseScriptableManifest; //# sourceMappingURL=parseScriptableManifest.js.map //# sourceMappingURL=parseScriptableManifest.js.map