From 9d8906d2509ccb45bb077dd96dbb14ef5e876137 Mon Sep 17 00:00:00 2001 From: Asher Date: Wed, 4 Sep 2019 16:57:23 -0500 Subject: [PATCH] Add version format flag --- src/cli.ts | 14 ++++++++++++-- src/util.ts | 4 ++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/cli.ts b/src/cli.ts index 99d6cf84..ef55d8f9 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -12,7 +12,7 @@ import product from "vs/platform/product/node/product"; import { ipcMain } from "vs/server/src/ipc"; import { enableCustomMarketplace } from "vs/server/src/marketplace"; import { MainServer } from "vs/server/src/server"; -import { AuthType, buildAllowedMessage, enumToArray, generateCertificate, generatePassword, localRequire, open, unpackExecutables } from "vs/server/src/util"; +import { AuthType, buildAllowedMessage, enumToArray, FormatType, generateCertificate, generatePassword, localRequire, open, unpackExecutables } from "vs/server/src/util"; const { logger } = localRequire("@coder/logger/out/index"); setUnexpectedErrorHandler((error) => logger.warn(error.message)); @@ -22,6 +22,7 @@ interface Args extends ParsedArgs { "base-path"?: string; cert?: string; "cert-key"?: string; + format?: string; host?: string; open?: string; port?: string; @@ -66,6 +67,7 @@ const getArgs = (): Args => { options.push({ id: "cert-key", type: "string", cat: "o", description: "Path to the certificate's key if one was provided." }); options.push({ id: "extra-builtin-extensions-dir", type: "string", cat: "o", description: "Path to an extra builtin extension directory." }); options.push({ id: "extra-extensions-dir", type: "string", cat: "o", description: "Path to an extra user extension directory." }); + options.push({ id: "format", type: "string", cat: "o", description: `Format for the version. ${buildAllowedMessage(FormatType)}.` }); options.push({ id: "host", type: "string", cat: "o", description: "Host for the server." }); options.push({ id: "auth", type: "string", cat: "o", description: `The type of authentication to use. ${buildAllowedMessage(AuthType)}.` }); options.push({ id: "open", type: "boolean", cat: "o", description: "Open in the browser on startup." }); @@ -164,7 +166,15 @@ const startCli = (): boolean | Promise => { } if (args.version) { - buildVersionMessage(pkg.codeServerVersion, product.commit).split("\n").map((line) => logger.info(line)); + if (args.format === "json") { + console.log(JSON.stringify({ + codeServerVersion: pkg.codeServerVersion, + commit: product.commit, + vscodeVersion: pkg.version, + })); + } else { + buildVersionMessage(pkg.codeServerVersion, product.commit).split("\n").map((line) => logger.info(line)); + } return true; } diff --git a/src/util.ts b/src/util.ts index 46ea8741..10639239 100644 --- a/src/util.ts +++ b/src/util.ts @@ -16,6 +16,10 @@ export enum AuthType { Password = "password", } +export enum FormatType { + Json = "json", +} + export const tmpdir = path.join(os.tmpdir(), "code-server"); export const generateCertificate = async (): Promise<{ cert: string, certKey: string }> => {