"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.isPlatformSupported = isPlatformSupported;
exports.addToPathAsync = addToPathAsync;
exports.unblockAndGetVersionAsync = unblockAndGetVersionAsync;
function _path() {
const data = _interopRequireDefault(require("path"));
_path = function () {
return data;
};
return data;
}
function _fsExtra() {
const data = _interopRequireDefault(require("fs-extra"));
_fsExtra = function () {
return data;
};
return data;
}
function _spawnAsync() {
const data = _interopRequireDefault(require("@expo/spawn-async"));
_spawnAsync = function () {
return data;
};
return data;
}
function _pTimeout() {
const data = _interopRequireDefault(require("p-timeout"));
_pTimeout = function () {
return data;
};
return data;
}
function Binaries() {
const data = _interopRequireWildcard(require("./Binaries"));
Binaries = function () {
return data;
};
return data;
}
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const WAIT_FOR_WATCHMAN_VERSION_MS = 3000;
function isPlatformSupported() {
return process.platform === 'darwin';
}
async function addToPathAsync() {
if (!isPlatformSupported()) {
return;
}
await Binaries().addToPathAsync('watchman');
}
async function unblockAndGetVersionAsync(projectRoot) {
if (!isPlatformSupported()) {
return null;
}
try {
// `watchman version` returns:
// {
// "version": "4.7.0"
// }
const result = await _unblockAndVersionAsync(projectRoot);
const watchmanVersion = JSON.parse(result.stdout.trim()).version;
return watchmanVersion;
} catch (e) {
// TODO: Maybe check to make sure this is ENOENT (which means watchman isn't installed)
// We might want to report other errors
return null;
}
}
async function _unblockAndVersionAsync(projectRoot) {
try {
return await (0, _pTimeout().default)(_versionAsync(), WAIT_FOR_WATCHMAN_VERSION_MS);
} catch (error) {
await _unblockAsync(projectRoot);
return await (0, _pTimeout().default)(_versionAsync(), WAIT_FOR_WATCHMAN_VERSION_MS, '`watchman version` failed even after `launchctl unload`');
}
}
async function _unblockAsync(projectRoot) {
if (process.env.TMPDIR && process.env.USER) {
// XDL's copy of watchman:
_fsExtra().default.removeSync(_path().default.join(process.env.TMPDIR, `${process.env.USER}-state`)); // homebrew's watchman:
_fsExtra().default.removeSync(`/usr/local/var/run/watchman/${process.env.USER}-state`);
}
if (process.platform === 'darwin') {
await (0, _spawnAsync().default)('launchctl', ['unload', '-F', '~/Library/LaunchAgents/com.github.facebook.watchman.plist']);
}
if (projectRoot) {
await (0, _spawnAsync().default)('watchman', ['watch-del', projectRoot]);
await (0, _spawnAsync().default)('watchman', ['watch-project', projectRoot]);
}
}
async function _versionAsync() {
return await (0, _spawnAsync().default)('watchman', ['version']);
}
//# sourceMappingURL=__sourcemaps__/Watchman.js.map