Export client logs for the active client as a part of the universal export
Summary: Design doc: https://docs.google.com/document/d/1HLCFl46RfqG0o1mSt8SWrwf_HMfOCRg_oENioc1rkvQ/edit# Introduce a command rto fetch debug data from the devices Reviewed By: passy Differential Revision: D40470838 fbshipit-source-id: 40a7ec66b1266ceff1b31b5b4f19b93765b78615
This commit is contained in:
committed by
Facebook GitHub Bot
parent
ef0d9fb77e
commit
2db9bccf75
@@ -162,6 +162,12 @@ export interface FSStatsLike {
|
||||
birthtimeMs: number;
|
||||
}
|
||||
|
||||
export interface DeviceDebugData {
|
||||
serial: string;
|
||||
appId: string;
|
||||
files: {path: string; data: string}[];
|
||||
}
|
||||
|
||||
export type FlipperServerCommands = {
|
||||
'get-server-state': () => Promise<{
|
||||
state: FlipperServerState;
|
||||
@@ -234,6 +240,7 @@ export type FlipperServerCommands = {
|
||||
) => Promise<boolean>;
|
||||
'device-clear-logs': (serial: string) => Promise<void>;
|
||||
'device-navigate': (serial: string, location: string) => Promise<void>;
|
||||
'fetch-debug-data': () => Promise<DeviceDebugData[]>;
|
||||
'metro-command': (serial: string, command: string) => Promise<void>;
|
||||
'client-list': () => Promise<ClientDescription[]>;
|
||||
'client-find': (clientId: string) => Promise<ClientDescription | undefined>;
|
||||
|
||||
@@ -419,6 +419,10 @@ export class FlipperServerImpl implements FlipperServer {
|
||||
'device-clear-logs': async (serial) => this.getDevice(serial).clearLogs(),
|
||||
'device-navigate': async (serial, loc) =>
|
||||
this.getDevice(serial).navigateToLocation(loc),
|
||||
'fetch-debug-data': async () => {
|
||||
// TODO: Implement fetching client logs from all devices
|
||||
return [];
|
||||
},
|
||||
'metro-command': async (serial: string, command: string) => {
|
||||
const device = this.getDevice(serial);
|
||||
if (!(device instanceof MetroDevice)) {
|
||||
|
||||
@@ -63,7 +63,7 @@ import {
|
||||
showOpenDialog,
|
||||
startFileExport,
|
||||
startLinkExport,
|
||||
startLogsExport,
|
||||
startFlipperLogsExport,
|
||||
} from '../utils/exportData';
|
||||
import {openDeeplinkDialog} from '../deeplink';
|
||||
import {css} from '@emotion/css';
|
||||
@@ -229,7 +229,7 @@ function ExtrasMenu() {
|
||||
);
|
||||
const startLogsExportTracked = useTrackedCallback(
|
||||
'Logs export',
|
||||
startLogsExport,
|
||||
startFlipperLogsExport,
|
||||
[],
|
||||
);
|
||||
const startLinkExportTracked = useTrackedCallback(
|
||||
|
||||
@@ -605,13 +605,21 @@ export function canFileExport() {
|
||||
return !!getRenderHostInstance().showSaveDialog;
|
||||
}
|
||||
|
||||
export async function startLogsExport() {
|
||||
export async function startFlipperLogsExport() {
|
||||
const serializedLogs = exportLogs
|
||||
.map((item) => JSON.stringify(item))
|
||||
.join('\n');
|
||||
await getRenderHostInstance().exportFile?.(serializedLogs);
|
||||
}
|
||||
|
||||
export async function startClientLogsExport() {
|
||||
const _clientLogs = await getRenderHostInstance().flipperServer.exec(
|
||||
'fetch-debug-data',
|
||||
);
|
||||
|
||||
// TODO: Save all log files
|
||||
}
|
||||
|
||||
export async function exportEverythingEverywhereAllAtOnce(
|
||||
store: MiddlewareAPI,
|
||||
) {
|
||||
@@ -619,10 +627,10 @@ export async function exportEverythingEverywhereAllAtOnce(
|
||||
// TODO: Pack all files in a single archive
|
||||
|
||||
// Step 1: Export Flipper logs
|
||||
await startLogsExport();
|
||||
await startFlipperLogsExport();
|
||||
|
||||
// Step 2: Export device logs
|
||||
// TODO: Implement me
|
||||
await startClientLogsExport();
|
||||
|
||||
// Step 3: Export Flipper State
|
||||
// TODO: Export all plugins automatically
|
||||
|
||||
Reference in New Issue
Block a user