Summary:
There are complaints about Android SDK being reported as "not installed" when it is actually installed. To address them, I changed the way how we detect SDK and also added some minimal actionable feedback for each check.
The problem with the previous implementation of Android SDK check via "envinfo" is that the library uses "sdkmanager" tool under the hood, and this tool doesn't work on Java 9+. To fix this I'm changing the way how we assume SDK is installed to simple check for "adb" tool existence.
Actionable feedback is shown on Doctor report when you click to an item.
Reviewed By: jknoxville
Differential Revision: D19517769
fbshipit-source-id: 1c21f1bdcd05c7c0ae3f97b9c3454efa2c861d26
Summary: According to dashboard, ~10% of healthcheck runs failed with error "Cannot find property length of undefned". So here I'm fixing the only place where length property is used by doctor.
Reviewed By: passy
Differential Revision: D19470886
fbshipit-source-id: 3ad88370e5cb652c6f20034ebf5f38fadc46bf53
Summary: Added unique keys for each healthcheck and used them to save already seen failures. Later I will also use them for gathering doctor analytics.
Reviewed By: jknoxville
Differential Revision: D19301583
fbshipit-source-id: 0c0aa977ea73ce555e0d9fb8e8ead844624fb9cd
Summary: Doctor to show warning if Watchman is not available
Reviewed By: mweststrate
Differential Revision: D19298730
fbshipit-source-id: 68f915c63c5f78aad91f549aabda8d4d972f4e39
Summary: Doctor sometimes can show false-positives and in such case there is no way to suppress showing warning message on each startup. To reduce annoyance I've added an option to save the problems already seen by user and show the Doctor warning only for new problems.
Reviewed By: mweststrate
Differential Revision: D19187095
fbshipit-source-id: 14c1fcc9674f47fbe0b5b0f2d5d1bceb47f7b45d
Summary: Rolling back workaround for Android SDK detection as it breaks detection with Java 8 while fixing Java 9+
Reviewed By: cekkaewnumchai
Differential Revision: D19146945
fbshipit-source-id: 2bea318d5f5cfafdf213d2ec73e837f6e86c9f33
Summary: Workaround for Anrdoid SDK detection not working with Java 9+ installed
Reviewed By: mweststrate
Differential Revision: D19094906
fbshipit-source-id: a7c8c9c8403d25ecc9b2d95113718ddf1821a349
Summary: Fix module resolution for flipper-doctor and return it to sonar directory and effectively to GitHub
Reviewed By: mweststrate
Differential Revision: D18963720
fbshipit-source-id: 61ea78ecbb154de79c7a2d348f347c64325e794c
Summary:
- Basic Doctor UI showing issues with installation
- Run healthchecks in background on startup and show warning message if something is wrong
Reviewed By: jknoxville
Differential Revision: D18502599
fbshipit-source-id: 194939a080ba7412ed3293d95c533bfad7031d3b
Summary: Adds a type for the return type of runHealthchecks()
Reviewed By: passy
Differential Revision: D18474919
fbshipit-source-id: b86968088d61d9d2d31815b4c725396cc05d8ca5
Summary: So we can use null coalescing and the other goodies in the doctor.
Reviewed By: passy
Differential Revision: D18477611
fbshipit-source-id: 60108d3c7c03e3fe4a4313653d5f615d287411fd
Summary:
Take the low level execution details out of the healthchecks.
The xcode-select change is sound because `xcode-select -p` returns status code > 0 when not set, so exec will throw, so no need to inspect stdout.
Reviewed By: passy
Differential Revision: D18449564
fbshipit-source-id: b2e2797a51aca45cfd78e707e99341798401897c
Summary:
Basic check for some xcode-path
There'll be a separate connected device check that looks at the current simulators and sees if they are running the same xcode version.
Reviewed By: mweststrate
Differential Revision: D18427090
fbshipit-source-id: 5e202d8920cae1ffce444e81a0c138a97936f758
Summary: Checks for xcode. We'll be able to do some version comparisons here if we find incompatible versions going forward, but for now, just check if it exists.
Reviewed By: mweststrate
Differential Revision: D18425284
fbshipit-source-id: 4a35a40de17f168f409c86264c5c3e172d7d1569
Summary:
Rework the healthchecks.
* Makes them healthcheck run api async so they can do more.
* Adds isRequired to the top level categories - this specifies if the category itself is required. The isRequired attributes of its constituent checks specifies if they are required within that category.
* Move isRequired outside the result of the healthcheck functions, because its static.
Reviewed By: mweststrate
Differential Revision: D18425189
fbshipit-source-id: 9d5c136a426732375d32cd27a758d9c92d123214