From 1b71e8b8fe630d998ea063be4d04ec21b06bc01d Mon Sep 17 00:00:00 2001 From: Samuel Elliott Date: Wed, 16 Mar 2022 20:16:53 +0000 Subject: [PATCH] Add an option to output JSON --- src/cli/announcements.ts | 17 ++++++++++++++++- src/cli/friends.ts | 17 ++++++++++++++++- src/cli/notify.ts | 2 +- src/cli/presence.ts | 4 ++-- src/cli/users.ts | 2 +- src/cli/webservices.ts | 17 ++++++++++++++++- src/cli/webservicetoken.ts | 21 +++++++++++++++++++++ src/util.ts | 2 +- 8 files changed, 74 insertions(+), 8 deletions(-) diff --git a/src/cli/announcements.ts b/src/cli/announcements.ts index 1427bc3..c7dc21a 100644 --- a/src/cli/announcements.ts +++ b/src/cli/announcements.ts @@ -16,13 +16,19 @@ export function builder(yargs: Argv) { }).option('token', { describe: 'Nintendo Account session token', type: 'string', + }).option('json', { + describe: 'Output raw JSON', + type: 'boolean', + }).option('json-pretty-print', { + describe: 'Output pretty-printed JSON', + type: 'boolean', }); } type Arguments = YargsArguments>; export async function handler(argv: ArgumentsCamelCase) { - console.log('Listing announcements'); + console.warn('Listing announcements'); const storage = await initStorage(argv.dataPath); @@ -37,6 +43,15 @@ export async function handler(argv: ArgumentsCamelCase) { const webservices = await nso.getWebServices(); const activeevent = await nso.getActiveEvent(); + if (argv.jsonPrettyPrint) { + console.log(JSON.stringify(announcements.result, null, 4)); + return; + } + if (argv.json) { + console.log(JSON.stringify(announcements.result)); + return; + } + const table = new Table({ head: [ 'ID', diff --git a/src/cli/friends.ts b/src/cli/friends.ts index d22147b..d5a9fb6 100644 --- a/src/cli/friends.ts +++ b/src/cli/friends.ts @@ -17,13 +17,19 @@ export function builder(yargs: Argv) { }).option('token', { describe: 'Nintendo Account session token', type: 'string', + }).option('json', { + describe: 'Output raw JSON', + type: 'boolean', + }).option('json-pretty-print', { + describe: 'Output pretty-printed JSON', + type: 'boolean', }); } type Arguments = YargsArguments>; export async function handler(argv: ArgumentsCamelCase) { - console.log('Listing friends'); + console.warn('Listing friends'); const storage = await initStorage(argv.dataPath); @@ -38,6 +44,15 @@ export async function handler(argv: ArgumentsCamelCase) { const webservices = await nso.getWebServices(); const activeevent = await nso.getActiveEvent(); + if (argv.jsonPrettyPrint) { + console.log(JSON.stringify(friends.result.friends, null, 4)); + return; + } + if (argv.json) { + console.log(JSON.stringify(friends.result.friends)); + return; + } + const table = new Table({ head: [ 'ID', diff --git a/src/cli/notify.ts b/src/cli/notify.ts index 7664e45..2c6cd4b 100644 --- a/src/cli/notify.ts +++ b/src/cli/notify.ts @@ -52,7 +52,7 @@ export async function handler(argv: ArgumentsCamelCase) { const i = new ZncNotifications(argv, storage, token, nso, data); - console.log('Authenticated as Nintendo Account %s (NA %s, NSO %s)', + console.warn('Authenticated as Nintendo Account %s (NA %s, NSO %s)', data.user.screenName, data.user.nickname, data.nsoAccount.user.name); await i.init(); diff --git a/src/cli/presence.ts b/src/cli/presence.ts index faeaff7..4b018b6 100644 --- a/src/cli/presence.ts +++ b/src/cli/presence.ts @@ -59,7 +59,7 @@ export async function handler(argv: ArgumentsCamelCase) { const i = new ZncProxyDiscordPresence(argv, argv.presenceUrl); - console.log('Not authenticated; using znc proxy'); + console.warn('Not authenticated; using znc proxy'); await i.init(); @@ -80,7 +80,7 @@ export async function handler(argv: ArgumentsCamelCase) { const i = new ZncDiscordPresence(argv, storage, token, nso, data); - console.log('Authenticated as Nintendo Account %s (NA %s, NSO %s)', + console.warn('Authenticated as Nintendo Account %s (NA %s, NSO %s)', data.user.screenName, data.user.nickname, data.nsoAccount.user.name); await i.init(); diff --git a/src/cli/users.ts b/src/cli/users.ts index f479368..bdf71de 100644 --- a/src/cli/users.ts +++ b/src/cli/users.ts @@ -44,7 +44,7 @@ export function builder(yargs: Argv) { } if (!table.length) { - console.log('No Nintendo Accounts'); + console.warn('No Nintendo Accounts'); return; } diff --git a/src/cli/webservices.ts b/src/cli/webservices.ts index 085b0c9..6c098b4 100644 --- a/src/cli/webservices.ts +++ b/src/cli/webservices.ts @@ -16,13 +16,19 @@ export function builder(yargs: Argv) { }).option('token', { describe: 'Nintendo Account session token', type: 'string', + }).option('json', { + describe: 'Output raw JSON', + type: 'boolean', + }).option('json-pretty-print', { + describe: 'Output pretty-printed JSON', + type: 'boolean', }); } type Arguments = YargsArguments>; export async function handler(argv: ArgumentsCamelCase) { - console.log('Listing web services'); + console.warn('Listing web services'); const storage = await initStorage(argv.dataPath); @@ -37,6 +43,15 @@ export async function handler(argv: ArgumentsCamelCase) { const webservices = await nso.getWebServices(); const activeevent = await nso.getActiveEvent(); + if (argv.jsonPrettyPrint) { + console.log(JSON.stringify(webservices.result, null, 4)); + return; + } + if (argv.json) { + console.log(JSON.stringify(webservices.result)); + return; + } + const table = new Table({ head: [ 'ID', diff --git a/src/cli/webservicetoken.ts b/src/cli/webservicetoken.ts index a314cfd..1a5023d 100644 --- a/src/cli/webservicetoken.ts +++ b/src/cli/webservicetoken.ts @@ -19,6 +19,12 @@ export function builder(yargs: Argv) { }).option('token', { describe: 'Nintendo Account session token', type: 'string', + }).option('json', { + describe: 'Output raw JSON', + type: 'boolean', + }).option('json-pretty-print', { + describe: 'Output pretty-printed JSON', + type: 'boolean', }); } @@ -54,6 +60,21 @@ export async function handler(argv: ArgumentsCamelCase) { na_lang: data.user.language, }).toString(); + if (argv.jsonPrettyPrint) { + console.log(JSON.stringify({ + webservice, + token: webserviceToken.result, + }, null, 4)); + return; + } + if (argv.json) { + console.log(JSON.stringify({ + webservice, + token: webserviceToken.result, + })); + return; + } + console.log('Web service', { name: webservice.name, url: url.toString(), diff --git a/src/util.ts b/src/util.ts index b5d8874..cd22da0 100644 --- a/src/util.ts +++ b/src/util.ts @@ -50,7 +50,7 @@ export async function getToken(storage: persist.LocalStorage, token: string, pro const existingToken: SavedToken | undefined = await storage.getItem('NsoToken.' + token); if (!existingToken || existingToken.expires_at <= Date.now()) { - console.log('Authenticating to Nintendo Switch Online app'); + console.warn('Authenticating to Nintendo Switch Online app'); debug('Authenticating to znc with session token'); const {nso, data} = proxy_url ?