Add a single place to initialize Flipper utilitary folders
Summary: We have several folders Flipper uses that sometimes we forget to create before Flipper starts. With this diff we have a single place to initialise the necessary folder structure. Reviewed By: lblasa Differential Revision: D37036601 fbshipit-source-id: f945f2bfdfc6be24ba87bd4b13c7fcef3fd74451
This commit is contained in:
committed by
Facebook GitHub Bot
parent
60f9a5e8de
commit
d987e36c62
@@ -50,6 +50,8 @@ import rm from 'rimraf';
|
|||||||
import assert from 'assert';
|
import assert from 'assert';
|
||||||
import {initializeAdbClient} from './devices/android/adbClient';
|
import {initializeAdbClient} from './devices/android/adbClient';
|
||||||
import {assertNotNull} from './comms/Utilities';
|
import {assertNotNull} from './comms/Utilities';
|
||||||
|
import {mkdirp} from 'fs-extra';
|
||||||
|
import {flipperDataFolder, flipperSettingsFolder} from './utils/paths';
|
||||||
|
|
||||||
const {access, copyFile, mkdir, unlink, stat, readlink, readFile, writeFile} =
|
const {access, copyFile, mkdir, unlink, stat, readlink, readFile, writeFile} =
|
||||||
promises;
|
promises;
|
||||||
@@ -167,6 +169,7 @@ export class FlipperServerImpl implements FlipperServer {
|
|||||||
this.setServerState('starting');
|
this.setServerState('starting');
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
await this.createFolders();
|
||||||
await this.server.init();
|
await this.server.init();
|
||||||
await this.pluginManager.start();
|
await this.pluginManager.start();
|
||||||
await this.startDeviceListeners();
|
await this.startDeviceListeners();
|
||||||
@@ -179,6 +182,11 @@ export class FlipperServerImpl implements FlipperServer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async createFolders() {
|
||||||
|
await mkdirp(flipperDataFolder);
|
||||||
|
await mkdirp(flipperSettingsFolder);
|
||||||
|
}
|
||||||
|
|
||||||
async startDeviceListeners() {
|
async startDeviceListeners() {
|
||||||
const asyncDeviceListenersPromises: Array<Promise<void>> = [];
|
const asyncDeviceListenersPromises: Array<Promise<void>> = [];
|
||||||
if (this.config.settings.enableAndroid) {
|
if (this.config.settings.enableAndroid) {
|
||||||
|
|||||||
@@ -16,15 +16,15 @@ import {
|
|||||||
import path from 'path';
|
import path from 'path';
|
||||||
import tmp, {FileOptions} from 'tmp';
|
import tmp, {FileOptions} from 'tmp';
|
||||||
import {reportPlatformFailures} from 'flipper-common';
|
import {reportPlatformFailures} from 'flipper-common';
|
||||||
import os from 'os';
|
|
||||||
import {isTest} from 'flipper-common';
|
import {isTest} from 'flipper-common';
|
||||||
|
import {flipperDataFolder} from './paths';
|
||||||
|
|
||||||
const tmpFile = promisify(tmp.file) as (
|
const tmpFile = promisify(tmp.file) as (
|
||||||
options?: FileOptions,
|
options?: FileOptions,
|
||||||
) => Promise<string>;
|
) => Promise<string>;
|
||||||
|
|
||||||
const getFilePath = (fileName: string): string => {
|
const getFilePath = (fileName: string): string => {
|
||||||
return path.resolve(os.homedir(), '.flipper', 'certs', fileName);
|
return path.resolve(flipperDataFolder, 'certs', fileName);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Desktop file paths
|
// Desktop file paths
|
||||||
|
|||||||
18
desktop/flipper-server-core/src/utils/paths.tsx
Normal file
18
desktop/flipper-server-core/src/utils/paths.tsx
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*
|
||||||
|
* @format
|
||||||
|
*/
|
||||||
|
|
||||||
|
import path from 'path';
|
||||||
|
import os from 'os';
|
||||||
|
import xdg from 'xdg-basedir';
|
||||||
|
|
||||||
|
export const flipperDataFolder = path.resolve(os.homedir(), '.flipper');
|
||||||
|
export const flipperSettingsFolder = path.resolve(
|
||||||
|
...(xdg.config ? [xdg.config] : [os.homedir(), '.config']),
|
||||||
|
'flipper',
|
||||||
|
);
|
||||||
@@ -9,9 +9,9 @@
|
|||||||
|
|
||||||
import os from 'os';
|
import os from 'os';
|
||||||
import {resolve} from 'path';
|
import {resolve} from 'path';
|
||||||
import xdg from 'xdg-basedir';
|
|
||||||
import {Settings, Tristate} from 'flipper-common';
|
import {Settings, Tristate} from 'flipper-common';
|
||||||
import {readFile, writeFile, pathExists, mkdirp} from 'fs-extra';
|
import {readFile, writeFile, pathExists, mkdirp} from 'fs-extra';
|
||||||
|
import {flipperSettingsFolder} from './paths';
|
||||||
|
|
||||||
export async function loadSettings(
|
export async function loadSettings(
|
||||||
settingsString: string = '',
|
settingsString: string = '',
|
||||||
@@ -36,21 +36,14 @@ export async function loadSettings(
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function saveSettings(settings: Settings): Promise<void> {
|
export async function saveSettings(settings: Settings): Promise<void> {
|
||||||
await mkdirp(getSettingsDir());
|
await mkdirp(flipperSettingsFolder);
|
||||||
await writeFile(getSettingsFile(), JSON.stringify(settings, null, 2), {
|
await writeFile(getSettingsFile(), JSON.stringify(settings, null, 2), {
|
||||||
encoding: 'utf8',
|
encoding: 'utf8',
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function getSettingsDir() {
|
|
||||||
return resolve(
|
|
||||||
...(xdg.config ? [xdg.config] : [os.homedir(), '.config']),
|
|
||||||
'flipper',
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
function getSettingsFile() {
|
function getSettingsFile() {
|
||||||
return resolve(getSettingsDir(), 'settings.json');
|
return resolve(flipperSettingsFolder, 'settings.json');
|
||||||
}
|
}
|
||||||
|
|
||||||
export const DEFAULT_ANDROID_SDK_PATH = getDefaultAndroidSdkPath();
|
export const DEFAULT_ANDROID_SDK_PATH = getDefaultAndroidSdkPath();
|
||||||
|
|||||||
Reference in New Issue
Block a user