Add watchman installation check
Summary: Doctor to show warning if Watchman is not available Reviewed By: mweststrate Differential Revision: D19298730 fbshipit-source-id: 68f915c63c5f78aad91f549aabda8d4d972f4e39
This commit is contained in:
committed by
Facebook Github Bot
parent
857b9816a0
commit
5c8ab0790b
@@ -1,12 +1,13 @@
|
||||
{
|
||||
"name": "flipper-doctor",
|
||||
"version": "0.4.1",
|
||||
"version": "0.5.0",
|
||||
"description": "Utility for checking for issues with a flipper installation",
|
||||
"main": "lib/index.js",
|
||||
"types": "lib/index.d.ts",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"@types/jest": "^24.0.21",
|
||||
"@types/fb-watchman": "2.0.0",
|
||||
"@typescript-eslint/eslint-plugin": "^2.8.0",
|
||||
"eslint": "^6.6.0",
|
||||
"eslint-plugin-babel": "^5.3.0",
|
||||
@@ -41,6 +42,7 @@
|
||||
"author": "Facebook, Inc",
|
||||
"dependencies": {
|
||||
"@types/node": "^12.12.12",
|
||||
"envinfo": "^7.4.0"
|
||||
"envinfo": "^7.4.0",
|
||||
"fb-watchman": "^2.0.1"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ import {exec} from 'child_process';
|
||||
import {promisify} from 'util';
|
||||
import {EnvironmentInfo, getEnvInfo} from './environmentInfo';
|
||||
export {getEnvInfo} from './environmentInfo';
|
||||
import * as watchman from 'fb-watchman';
|
||||
|
||||
export type HealthcheckCategory = {
|
||||
label: string;
|
||||
@@ -70,6 +71,15 @@ export function getHealthchecks(): Healthchecks {
|
||||
};
|
||||
},
|
||||
},
|
||||
{
|
||||
label: 'Watchman Installed',
|
||||
run: async (_: EnvironmentInfo) => {
|
||||
const isAvailable = await isWatchmanAvailable();
|
||||
return {
|
||||
hasProblem: !isAvailable,
|
||||
};
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
android: {
|
||||
@@ -179,3 +189,25 @@ async function commandSucceeds(command: string): Promise<boolean> {
|
||||
.then(() => true)
|
||||
.catch(() => false);
|
||||
}
|
||||
|
||||
async function isWatchmanAvailable(): Promise<boolean> {
|
||||
const client = new watchman.Client();
|
||||
return new Promise(resolve => {
|
||||
const complete = (result: boolean) => {
|
||||
resolve(result);
|
||||
client.removeAllListeners('error');
|
||||
client.end();
|
||||
};
|
||||
client.once('error', () => complete(false));
|
||||
client.capabilityCheck(
|
||||
{optional: [], required: ['relative_root']},
|
||||
error => {
|
||||
if (error) {
|
||||
complete(false);
|
||||
return;
|
||||
}
|
||||
complete(true);
|
||||
},
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -326,6 +326,18 @@
|
||||
dependencies:
|
||||
"@babel/types" "^7.3.0"
|
||||
|
||||
"@types/events@*":
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7"
|
||||
integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==
|
||||
|
||||
"@types/fb-watchman@2.0.0":
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/fb-watchman/-/fb-watchman-2.0.0.tgz#ca60ded406baa8c81c65ac1f86763a5d00aa7c55"
|
||||
integrity sha512-Ao2jlksPEUGCEXBvJz5e2MuDpYUtxXgtUk45cg0g5Mmy4f0j7bQuDlOlqBMgKGRl9dZAK4ZTzFtukuzj2mURlQ==
|
||||
dependencies:
|
||||
"@types/events" "*"
|
||||
|
||||
"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0":
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff"
|
||||
@@ -739,7 +751,7 @@ bs-logger@0.x:
|
||||
dependencies:
|
||||
fast-json-stable-stringify "2.x"
|
||||
|
||||
bser@^2.0.0:
|
||||
bser@2.1.1, bser@^2.0.0:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05"
|
||||
integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==
|
||||
@@ -1481,6 +1493,13 @@ fb-watchman@^2.0.0:
|
||||
dependencies:
|
||||
bser "^2.0.0"
|
||||
|
||||
fb-watchman@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85"
|
||||
integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==
|
||||
dependencies:
|
||||
bser "2.1.1"
|
||||
|
||||
figures@^3.0.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/figures/-/figures-3.1.0.tgz#4b198dd07d8d71530642864af2d45dd9e459c4ec"
|
||||
|
||||
@@ -141,7 +141,7 @@
|
||||
"expand-tilde": "^2.0.2",
|
||||
"express": "^4.15.2",
|
||||
"fb-watchman": "^2.0.0",
|
||||
"flipper-doctor": "^0.4.1",
|
||||
"flipper-doctor": "^0.6.0",
|
||||
"fs-extra": "^8.0.1",
|
||||
"immer": "^5.0.1",
|
||||
"immutable": "^4.0.0-rc.12",
|
||||
@@ -193,7 +193,8 @@
|
||||
},
|
||||
"greenkeeper": {
|
||||
"ignore": [
|
||||
"tmp"
|
||||
"tmp",
|
||||
"flipper-doctor"
|
||||
]
|
||||
},
|
||||
"scripts": {
|
||||
|
||||
@@ -24,6 +24,7 @@ const HEALTHCHECKS: Healthchecks = {
|
||||
isRequired: true,
|
||||
healthchecks: [
|
||||
{
|
||||
key: 'ios.sdk',
|
||||
label: 'SDK Installed',
|
||||
run: async (_env: EnvironmentInfo) => {
|
||||
return {hasProblem: false};
|
||||
@@ -37,6 +38,7 @@ const HEALTHCHECKS: Healthchecks = {
|
||||
isRequired: true,
|
||||
healthchecks: [
|
||||
{
|
||||
key: 'android.sdk',
|
||||
label: 'SDK Installed',
|
||||
run: async (_env: EnvironmentInfo) => {
|
||||
return {hasProblem: true};
|
||||
@@ -50,6 +52,7 @@ const HEALTHCHECKS: Healthchecks = {
|
||||
isRequired: false,
|
||||
healthchecks: [
|
||||
{
|
||||
key: 'common.openssl',
|
||||
label: 'OpenSSL Istalled',
|
||||
run: async (_env: EnvironmentInfo) => {
|
||||
return {hasProblem: false};
|
||||
|
||||
23
yarn.lock
23
yarn.lock
@@ -2334,6 +2334,13 @@ bs-logger@0.x:
|
||||
dependencies:
|
||||
fast-json-stable-stringify "2.x"
|
||||
|
||||
bser@2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05"
|
||||
integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==
|
||||
dependencies:
|
||||
node-int64 "^0.4.0"
|
||||
|
||||
bser@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.0.tgz#65fc784bf7f87c009b973c12db6546902fa9c7b5"
|
||||
@@ -4054,6 +4061,13 @@ fb-watchman@^2.0.0:
|
||||
dependencies:
|
||||
bser "^2.0.0"
|
||||
|
||||
fb-watchman@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85"
|
||||
integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==
|
||||
dependencies:
|
||||
bser "2.1.1"
|
||||
|
||||
fbjs-css-vars@^1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8"
|
||||
@@ -4182,13 +4196,14 @@ flatted@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08"
|
||||
integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==
|
||||
|
||||
flipper-doctor@^0.4.1:
|
||||
version "0.4.1"
|
||||
resolved "https://registry.yarnpkg.com/flipper-doctor/-/flipper-doctor-0.4.1.tgz#bc4ce11a920e983da04e492ba04d5fe108659bb5"
|
||||
integrity sha512-1N7wgM03i1aHgTgMiv4V1mWkfkfoAgbBQmt4ai7AW2rhb2ocmy6p+8I51L2rJEOVmsRP/oDafpdgVNm1ggHp4w==
|
||||
flipper-doctor@^0.6.0:
|
||||
version "0.6.0"
|
||||
resolved "https://registry.yarnpkg.com/flipper-doctor/-/flipper-doctor-0.6.0.tgz#850eaf5e2f7abfb6cb3db0a383f7aa09c35d8176"
|
||||
integrity sha512-aUdsw2b+9oVs/5V3X1TGEETu5TdheriY18pt8PWbhhliln7mUv0dnpvdA02tLlLfHKQ0B07OUrHO/kFaFAfI9Q==
|
||||
dependencies:
|
||||
"@types/node" "^12.12.12"
|
||||
envinfo "^7.4.0"
|
||||
fb-watchman "^2.0.1"
|
||||
|
||||
flow-bin@0.115.0:
|
||||
version "0.115.0"
|
||||
|
||||
Reference in New Issue
Block a user