From 08e2716e6e7ae0b8eb41f852e320ec767352d06b Mon Sep 17 00:00:00 2001 From: ayumi-signal <143036029+ayumi-signal@users.noreply.github.com> Date: Tue, 5 Sep 2023 18:03:30 -0700 Subject: [PATCH] Add Linux distribution version to debug logs --- app/main.ts | 3 ++- ts/logging/debuglogs.ts | 16 +++++++++++++--- ts/util/os/shared.ts | 17 +++++++++++++++++ 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/app/main.ts b/app/main.ts index 382ab2c34b..1541ddd6a3 100644 --- a/app/main.ts +++ b/app/main.ts @@ -2415,7 +2415,8 @@ ipc.handle( process.versions.node, app.getVersion(), os.version(), - userAgent + userAgent, + OS.getLinuxName() ); } ); diff --git a/ts/logging/debuglogs.ts b/ts/logging/debuglogs.ts index cb53c14819..8fc662df6f 100644 --- a/ts/logging/debuglogs.ts +++ b/ts/logging/debuglogs.ts @@ -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'); diff --git a/ts/util/os/shared.ts b/ts/util/os/shared.ts index 01fcd66f8d..a46120910a 100644 --- a/ts/util/os/shared.ts +++ b/ts/util/os/shared.ts @@ -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, }; }