@guidepup/setup
Version:
Setup your environment for screen-reader automation.
75 lines (74 loc) • 3.37 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.setup = setup;
const os_1 = require("os");
const record_1 = require("@guidepup/record");
const chalk_1 = __importDefault(require("chalk"));
const checkVersion_1 = require("./checkVersion");
const enableAppleScriptControlSystemDefaults_1 = require("./enableAppleScriptControlSystemDefaults");
const disableSplashScreenSystemDefaults_1 = require("./disableSplashScreenSystemDefaults");
const disableDictationInputAutoEnable_1 = require("./disableDictationInputAutoEnable");
const isSipEnabled_1 = require("./isSipEnabled");
const writeDatabaseFile_1 = require("./writeDatabaseFile");
const updateTccDb_1 = require("./updateTccDb");
const isAppleScriptControlEnabled_1 = require("./isAppleScriptControlEnabled");
const logging_1 = require("../logging");
const errors_1 = require("../errors");
const enableDoNotDisturb_1 = require("./enableDoNotDisturb");
const enabledDbFile_1 = require("./isAppleScriptControlEnabled/enabledDbFile");
const isCi = process.argv.includes("--ci");
const ignoreTccDb = process.argv.includes("--ignore-tcc-db");
const isRecorded = process.argv.includes("--record");
async function setup() {
if (!ignoreTccDb) {
try {
(0, updateTccDb_1.updateTccDb)(updateTccDb_1.USER_PATH);
}
catch (e) {
if (isCi) {
throw e;
}
}
try {
(0, updateTccDb_1.updateTccDb)(updateTccDb_1.SYSTEM_PATH);
}
catch {
// Swallow error - most CI don't allow system configuration
}
}
else {
(0, logging_1.handleWarning)("Ignoring TCC.db updates", "If the necessary permissions have not been granted by other means, using this flag may result in your environment not being set up for reliable screen reader automation.");
}
const osName = (0, os_1.platform)();
const osVersion = (0, os_1.release)();
const stopRecording = isRecorded
? (0, record_1.macOSRecord)(`./recordings/macos-guidepup-setup-${osName}-${osVersion}-${+new Date()}.mov`)
: () => null;
try {
(0, checkVersion_1.checkVersion)();
(0, enableAppleScriptControlSystemDefaults_1.enableAppleScriptControlSystemDefaults)();
(0, disableSplashScreenSystemDefaults_1.disableSplashScreenSystemDefaults)();
(0, disableDictationInputAutoEnable_1.disableDictationInputAutoEnable)();
if (isCi) {
await (0, enableDoNotDisturb_1.enableDoNotDisturb)();
}
if (!(0, isSipEnabled_1.isSipEnabled)() && !(await (0, enabledDbFile_1.enabledDbFile)())) {
(0, writeDatabaseFile_1.writeDatabaseFile)();
return;
}
if (await (0, isAppleScriptControlEnabled_1.isAppleScriptControlEnabled)()) {
return;
}
if (isCi) {
throw new Error(errors_1.ERR_MACOS_REQUIRES_MANUAL_USER_INTERACTION);
}
(0, logging_1.logInfo)("Please complete remaining setup by following this guide:\n\n--> " +
chalk_1.default.underline(chalk_1.default.bold("https://www.guidepup.dev/docs/guides/manual-voiceover-setup")));
}
finally {
stopRecording();
}
}