diff --git a/src/cli/nso/presence.ts b/src/cli/nso/presence.ts index d031e5a..5ea3939 100644 --- a/src/cli/nso/presence.ts +++ b/src/cli/nso/presence.ts @@ -232,7 +232,7 @@ export class ZncDiscordPresence extends ZncNotifications { throw new Error('User "' + this.presence_user + '" is not friends with this user'); } - await this.updatePresenceForDiscord(friend.presence, user); + await this.updatePresenceForDiscord(friend.presence, friend); } else { await this.updatePresenceForDiscord(user!.presence, user, user!.links.friendCode, activeevent); } diff --git a/src/discord/util.ts b/src/discord/util.ts index 08f8bf2..2e39f73 100644 --- a/src/discord/util.ts +++ b/src/discord/util.ts @@ -1,9 +1,12 @@ import DiscordRPC from 'discord-rpc'; import { ActiveEvent, CurrentUser, Friend, Game, PresenceState } from '../api/znc-types.js'; import { defaultTitle, titles } from './titles.js'; -import { getTitleIdFromEcUrl, hrduration, version } from '../util.js'; +import { dev, getTitleIdFromEcUrl, hrduration, version } from '../util.js'; import { ZncDiscordPresence } from '../cli/nso/presence.js'; +const product = 'nxapi ' + version + + (dev ? '-' + dev.revision.substr(0, 7) + (dev.branch ? ' (' + dev.branch + ')' : '') : ''); + export function getDiscordPresence( state: PresenceState, game: Game, context?: DiscordPresenceContext ): DiscordPresence { @@ -34,7 +37,7 @@ export function getDiscordPresence( details: text[0], state: text[1], largeImageKey: title.largeImageKey ?? game.imageUri, - largeImageText: title.largeImageText ?? 'nxapi ' + version, + largeImageText: title.largeImageText ? title.largeImageText + ' | ' + product : product, smallImageKey: title.smallImageKey || (context?.friendcode ? context?.user?.imageUri : undefined), smallImageText: title.smallImageKey ? title.smallImageText : context?.friendcode && context?.user?.imageUri ? 'SW-' + context.friendcode.id : undefined, @@ -72,7 +75,7 @@ export function getInactiveDiscordPresence( activity: { state: 'Not playing', largeImageKey: 'nintendoswitch', - largeImageText: 'nxapi ' + version, + largeImageText: product, smallImageKey: context?.friendcode ? context?.user?.imageUri : undefined, smallImageText: context?.friendcode && context?.user?.imageUri ? 'SW-' + context.friendcode.id : undefined, }, diff --git a/src/util.ts b/src/util.ts index 8018b46..64c5d77 100644 --- a/src/util.ts +++ b/src/util.ts @@ -1,5 +1,6 @@ import * as path from 'path'; import * as fs from 'fs'; +import * as child_process from 'child_process'; import * as yargs from 'yargs'; import type * as yargstypes from '../node_modules/@types/yargs/index.js'; import createDebug from 'debug'; @@ -24,9 +25,19 @@ export const version = pkg.version; export const dev = (() => { try { fs.statSync(path.join(dir, '.git')); - return true; - } catch (err) {} - return false; + } catch (err) { + return null; + } + + const revision = child_process.execSync('git rev-parse HEAD').toString().trim(); + const branch = child_process.execSync('git rev-parse --abbrev-ref HEAD').toString().trim(); + const changed_files = child_process.execSync('git diff --name-only HEAD').toString().trim(); + + return { + revision, + branch: branch && branch !== 'HEAD' ? branch : null, + changed_files: changed_files.length ? changed_files.split('\n') : [], + }; })(); export type YargsArguments = T extends yargs.Argv ? R : any;