diff --git a/app/nose/bin/share.ts b/app/nose/bin/share.ts index fc7b8e1..849dcdd 100644 --- a/app/nose/bin/share.ts +++ b/app/nose/bin/share.ts @@ -1,14 +1,23 @@ import { apps } from "app/src/webapp" -import { connectSneaker } from "app/src/sneaker" +import { connectSneaker, sneakers, sneakerUrl } from "app/src/sneaker" export default async function (app: string, subdomain = "") { if (!app) { - return `usage: share [subdomain]` + let out = `usage: share <app> [subdomain]` + const apps = sneakers() + if (apps.length) { + out += "\n\nsharing\n" + apps.map(app => { + const url = sneakerUrl(app) + return `${app}: ${url}` + }).join("\n") + } + return { html: out } } if (!apps().includes(app)) { return { error: `${app} not found` } } - return await connectSneaker(app, subdomain) + const url = sneakerUrl(await connectSneaker(app, subdomain)) + return { html: `${url}` } } \ No newline at end of file diff --git a/app/src/sneaker.ts b/app/src/sneaker.ts index f5e356c..2ab3fd0 100644 --- a/app/src/sneaker.ts +++ b/app/src/sneaker.ts @@ -11,6 +11,30 @@ type Connection = { } const conns: Record = {} +export function sneakerUrl(appOrSubdomain: string): string { + let conn = conns[appOrSubdomain] + if (!conn) { + for (const appName of Object.keys(conns)) { + if (conns[appName]?.subdomain === appOrSubdomain) { + conn = conns[appName] + break + } + } + if (!conn) + return "none" + } + + + let url = "http" + (SNEAKER_TLS ? "s" : "") + "://" + url += conn.subdomain + "." + SNEAKER_URL + + return url +} + +export function sneakers(): string[] { + return Object.keys(conns) +} + // returns the sneaker subdomain if successful export async function connectSneaker(app: string, subdomain = ""): Promise { if (conns[app]) {