Add Linux distribution version to debug logs

This commit is contained in:
ayumi-signal 2023-09-05 18:03:30 -07:00 committed by GitHub
parent 507986db92
commit 08e2716e6e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 32 additions and 4 deletions

View file

@ -2415,7 +2415,8 @@ ipc.handle(
process.versions.node,
app.getVersion(),
os.version(),
userAgent
userAgent,
OS.getLinuxName()
);
}
);

View file

@ -42,7 +42,8 @@ const getHeader = (
nodeVersion: string,
appVersion: string,
osVersion: string,
userAgent: string
userAgent: string,
linuxVersion?: string
): string =>
[
headerSection('System info', {
@ -52,6 +53,7 @@ const getHeader = (
Environment: getEnvironment(),
'App version': appVersion,
'OS version': osVersion,
...(linuxVersion && { 'Linux version': linuxVersion }),
}),
headerSection('User info', user),
headerSection('Capabilities', capabilities),
@ -84,13 +86,21 @@ export function getLog(
nodeVersion: string,
appVersion: string,
osVersion: string,
userAgent: string
userAgent: string,
linuxVersion?: string
): string {
let header: string;
let body: string;
if (isFetchLogIpcData(data)) {
const { logEntries } = data;
header = getHeader(data, nodeVersion, appVersion, osVersion, userAgent);
header = getHeader(
data,
nodeVersion,
appVersion,
osVersion,
userAgent,
linuxVersion
);
body = logEntries.map(formatLine).join('\n');
} else {
header = headerSectionTitle('Partial logs');

View file

@ -2,6 +2,7 @@
// SPDX-License-Identifier: AGPL-3.0-only
import semver from 'semver';
import { readFileSync } from 'fs-extra';
function createIsPlatform(
platform: typeof process.platform,
@ -26,6 +27,7 @@ export type OSType = {
isLinux: (minVersion?: string) => boolean;
isMacOS: (minVersion?: string) => boolean;
isWindows: (minVersion?: string) => boolean;
getLinuxName: () => string | undefined;
};
export function getOSFunctions(osRelease: string): OSType {
@ -57,6 +59,20 @@ export function getOSFunctions(osRelease: string): OSType {
return 'os-linux';
};
const getLinuxName = (): string | undefined => {
if (!isLinux()) {
return undefined;
}
const etcOsRelease = readFileSync('/etc/os-release', 'utf-8');
const match = etcOsRelease.match(/^PRETTY_NAME=(.+?)$/m);
if (!match) {
return undefined;
}
return match[1];
};
return {
getClassName,
getName,
@ -64,5 +80,6 @@ export function getOSFunctions(osRelease: string): OSType {
isLinux,
isMacOS,
isWindows,
getLinuxName,
};
}