Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 16 additions & 4 deletions npm_modules/cli/src/commands/doctor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ import { BazelClient } from '../utils/BazelClient';
import { checkCommandExists, runCliCommand } from '../utils/cliUtils';
import { makeCommandHandler } from '../utils/errorUtils';
import { wrapInColor } from '../utils/logUtils';
import { isFedora, isUbuntu } from '../setup/linuxSetup';

/** Discord support link for troubleshooting */
const DISCORD_SUPPORT_URL = 'https://discord.gg/uJyNEeYX2U';
Expand Down Expand Up @@ -1166,16 +1167,25 @@ class ValdiDoctor {
private getFixCommandForDependency(dep: string): string {
switch (dep) {
case 'git': {
return os.platform() === 'darwin' ? 'brew install git' : 'sudo apt-get install git';
if (os.platform() === 'darwin') return 'brew install git';
if (isUbuntu) return 'sudo apt-get install git';
if (isFedora) return 'sudo dnf install git';
return 'Install git for your distribution';
}
case 'npm': {
return 'Install Node.js from https://nodejs.org (includes npm)';
}
case 'watchman': {
return os.platform() === 'darwin' ? 'brew install watchman' : 'sudo apt-get install watchman';
if (os.platform() === 'darwin') return 'brew install watchman';
if (isUbuntu) return 'sudo apt-get install watchman';
if (isFedora) return 'sudo dnf install watchman';
return 'Install watchman for your distribution';
}
case 'git-lfs': {
return os.platform() === 'darwin' ? 'brew install git-lfs' : 'sudo apt-get install git-lfs';
if (os.platform() === 'darwin') return 'brew install git-lfs';
if (isUbuntu) return 'sudo apt-get install git-lfs';
if (isFedora) return 'sudo dnf install git-lfs';
return 'Install git-lfs for your distribution';
}
case 'bazelisk': {
return os.platform() === 'darwin' ? 'brew install bazelisk' : 'valdi dev_setup';
Expand All @@ -1184,7 +1194,9 @@ class ValdiDoctor {
return 'brew install ios-webkit-debug-proxy';
}
case 'adb': {
return 'sudo apt-get install adb';
if (isUbuntu) return 'sudo apt-get install adb';
if (isFedora) return 'sudo dnf install android-tools';
return 'Install adb for your distribution';
}
default: {
return os.platform() === 'darwin' ? `brew install ${dep}` : `Install ${dep}`;
Expand Down
16 changes: 16 additions & 0 deletions npm_modules/cli/src/setup/distros/fedoraSetup.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { checkCommandExists } from "../../utils/cliUtils";
import { DevSetupHelper } from "../DevSetupHelper";

export async function fedoraSetup(devSetup: DevSetupHelper): Promise<void> {
await devSetup.runShell('Installing dependencies from dnf', [
`sudo dnf install zlib-devel git-lfs watchman fontconfig-devel android-tools`,
]);

await devSetup.runShell('Installing ncurses-compat-libs', [
`sudo dnf install ncurses-compat-libs`,
]);

if (!checkCommandExists('java')) {
await devSetup.runShell('Installing Java Runtime Environment', ['sudo dnf install default-jre']);
}
}
17 changes: 17 additions & 0 deletions npm_modules/cli/src/setup/distros/ubuntuSetup.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import { checkCommandExists } from "../../utils/cliUtils";
import { DevSetupHelper } from "../DevSetupHelper";

export async function ubuntuSetup(devSetup: DevSetupHelper): Promise<void> {
await devSetup.runShell('Installing dependencies from apt', [
`sudo apt-get install zlib1g-dev git-lfs watchman libfontconfig-dev adb`,
]);

await devSetup.runShell('Installing libtinfo5', [
`wget http://security.ubuntu.com/ubuntu/pool/universe/n/ncurses/libtinfo5_6.3-2ubuntu0.1_amd64.deb`,
`sudo apt install ./libtinfo5_6.3-2ubuntu0.1_amd64.deb`,
]);

if (!checkCommandExists('java')) {
await devSetup.runShell('Installing Java Runtime Environment', ['sudo apt install default-jre']);
}
}
25 changes: 11 additions & 14 deletions npm_modules/cli/src/setup/linuxSetup.ts
Original file line number Diff line number Diff line change
@@ -1,26 +1,23 @@
import fs from 'fs';
import path from 'path';
import { checkCommandExists } from '../utils/cliUtils';
import { DevSetupHelper, HOME_DIR } from './DevSetupHelper';
import { ANDROID_LINUX_COMMANDLINE_TOOLS } from './versions';
import { wrapInColor } from '../utils/logUtils';
import { ANSI_COLORS } from '../core/constants';
import { ubuntuSetup } from './distros/ubuntuSetup';
import { fedoraSetup } from './distros/fedoraSetup';

const BAZELISK_URL = 'https://github.com/bazelbuild/bazelisk/releases/download/v1.26.0/bazelisk-linux-amd64';

export const isFedora = fs.existsSync('/etc/fedora-release') || fs.existsSync('/etc/redhat-release');
export const isUbuntu = fs.existsSync('/etc/lsb-release') || fs.existsSync('/etc/debian_version');

export async function linuxSetup(): Promise<void> {
const devSetup = new DevSetupHelper();

await devSetup.runShell('Installing dependencies from apt', [
`sudo apt-get install zlib1g-dev git-lfs watchman libfontconfig-dev adb`,
]);

await devSetup.runShell('Installing libtinfo5', [
`wget http://security.ubuntu.com/ubuntu/pool/universe/n/ncurses/libtinfo5_6.3-2ubuntu0.1_amd64.deb`,
`sudo apt install ./libtinfo5_6.3-2ubuntu0.1_amd64.deb`,
]);

if (!checkCommandExists('java')) {
await devSetup.runShell('Installing Java Runtime Environment', ['sudo apt install default-jre']);
}
if (isUbuntu) ubuntuSetup(devSetup)
else if (isFedora) fedoraSetup(devSetup)
else console.log(wrapInColor('Your distro is not supported yet...aborting...', ANSI_COLORS.RED_COLOR));

const bazeliskPathSuffix = '.valdi/bin/bazelisk';
const bazeliskTargetPath = path.join(HOME_DIR, bazeliskPathSuffix);
Expand All @@ -35,4 +32,4 @@ export async function linuxSetup(): Promise<void> {
await devSetup.setupAndroidSDK(ANDROID_LINUX_COMMANDLINE_TOOLS);

devSetup.onComplete();
}
}