From f1655f3d1a938af1c48c3e284d352d9581f4efce Mon Sep 17 00:00:00 2001 From: Sairam Sakhamuri Date: Tue, 14 Nov 2023 19:00:55 +0000 Subject: [PATCH 1/4] Updated backends:list command w.r.t M2 --- src/commands/frameworks-backends-list.ts | 69 ++++++++++++++++++------ 1 file changed, 54 insertions(+), 15 deletions(-) diff --git a/src/commands/frameworks-backends-list.ts b/src/commands/frameworks-backends-list.ts index c5f72961888..92f5eac97b9 100644 --- a/src/commands/frameworks-backends-list.ts +++ b/src/commands/frameworks-backends-list.ts @@ -5,33 +5,46 @@ import * as gcp from "../gcp/frameworks"; import { FirebaseError } from "../error"; import { logger } from "../logger"; import { bold } from "colorette"; -const Table = require("cli-table"); +import { ALLOWED_REGIONS } from "../init/features/frameworks/constants"; +const Table = require("cli-table"); +const COLUMN_LENGTH = 20; +const TABLE_HEAD = [ + "Backend Id", + "Repository Name", + "URL", + "Location", + "Created Date", + "Updated Date", +]; export const command = new Command("backends:list") .description("List backends of a Firebase project.") - .option("-l, --location ", "App Backend location", "us-central1") + .option("-l, --location ", "App Backend location", "") .action(async (options: Options) => { const projectId = needProjectId(options); const location = options.location as string; const table = new Table({ - head: ["Backend Id", "Repository Name", "URL", "Location", "Created Date", "Updated Date"], + head: TABLE_HEAD, style: { head: ["green"] }, }); - - let backendsList; + table.colWidths = COLUMN_LENGTH; + let backendsList: gcp.ListBackendsResponse[] = []; try { - backendsList = await gcp.listBackends(projectId, location); - for (const backend of backendsList.backends) { - const entry = [ - backend.name, - backend.codebase.repository, - backend.uri, - backend.createTime, - backend.updateTime, - ]; - table.push(entry); + if (!location) { + for (const region of ALLOWED_REGIONS) { + const backendsPerRegion = await gcp.listBackends(projectId, region.value) + backendsList.push(backendsPerRegion); + populateTable(backendsPerRegion, region.name, table); + } + } else { + const backendsPerRegion = await gcp.listBackends(projectId, location) + backendsList.push(backendsPerRegion); + populateTable(backendsPerRegion, location, table); } + + logger.info(); logger.info(`Backends for project ${bold(projectId)}`); + logger.info(); logger.info(table.toString()); } catch (err: any) { throw new FirebaseError( @@ -42,3 +55,29 @@ export const command = new Command("backends:list") return backendsList; }); + +function populateTable( + backendsLists: gcp.ListBackendsResponse, + location: string, + table: any +) { + for (const backend of backendsLists.backends) { + const entry = [ + backend.name.split("/").pop(), + backend.codebase.repository?.split("/").pop(), + backend.uri, + location, + backend.createTime, + backend.updateTime, + ]; + const newRow = entry.map((name) => { + const maxCellWidth = COLUMN_LENGTH - 2; + const chunks = []; + for (let i = 0; name && i < name.length; i += maxCellWidth) { + chunks.push(name.substring(i, i + maxCellWidth)); + } + return chunks.join("\n"); + }); + table.push(newRow); + } +} \ No newline at end of file From d6b0c010f224735abeed490a7253d1f136404423 Mon Sep 17 00:00:00 2001 From: Sairam Sakhamuri Date: Tue, 14 Nov 2023 19:01:35 +0000 Subject: [PATCH 2/4] formatting file --- src/commands/frameworks-backends-list.ts | 50 +++++++++++------------- 1 file changed, 23 insertions(+), 27 deletions(-) diff --git a/src/commands/frameworks-backends-list.ts b/src/commands/frameworks-backends-list.ts index 92f5eac97b9..31ddd0923f9 100644 --- a/src/commands/frameworks-backends-list.ts +++ b/src/commands/frameworks-backends-list.ts @@ -32,12 +32,12 @@ export const command = new Command("backends:list") try { if (!location) { for (const region of ALLOWED_REGIONS) { - const backendsPerRegion = await gcp.listBackends(projectId, region.value) + const backendsPerRegion = await gcp.listBackends(projectId, region.value); backendsList.push(backendsPerRegion); populateTable(backendsPerRegion, region.name, table); } } else { - const backendsPerRegion = await gcp.listBackends(projectId, location) + const backendsPerRegion = await gcp.listBackends(projectId, location); backendsList.push(backendsPerRegion); populateTable(backendsPerRegion, location, table); } @@ -56,28 +56,24 @@ export const command = new Command("backends:list") return backendsList; }); -function populateTable( - backendsLists: gcp.ListBackendsResponse, - location: string, - table: any -) { - for (const backend of backendsLists.backends) { - const entry = [ - backend.name.split("/").pop(), - backend.codebase.repository?.split("/").pop(), - backend.uri, - location, - backend.createTime, - backend.updateTime, - ]; - const newRow = entry.map((name) => { - const maxCellWidth = COLUMN_LENGTH - 2; - const chunks = []; - for (let i = 0; name && i < name.length; i += maxCellWidth) { - chunks.push(name.substring(i, i + maxCellWidth)); - } - return chunks.join("\n"); - }); - table.push(newRow); - } -} \ No newline at end of file +function populateTable(backendsLists: gcp.ListBackendsResponse, location: string, table: any) { + for (const backend of backendsLists.backends) { + const entry = [ + backend.name.split("/").pop(), + backend.codebase.repository?.split("/").pop(), + backend.uri, + location, + backend.createTime, + backend.updateTime, + ]; + const newRow = entry.map((name) => { + const maxCellWidth = COLUMN_LENGTH - 2; + const chunks = []; + for (let i = 0; name && i < name.length; i += maxCellWidth) { + chunks.push(name.substring(i, i + maxCellWidth)); + } + return chunks.join("\n"); + }); + table.push(newRow); + } +} From 5293fde35fd5f7d4dca6f3831a2d8eba3c4a33aa Mon Sep 17 00:00:00 2001 From: Sairam Sakhamuri Date: Wed, 15 Nov 2023 00:47:07 +0000 Subject: [PATCH 3/4] Added changes to backends:list --- src/commands/frameworks-backends-list.ts | 26 ++++++++---------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/src/commands/frameworks-backends-list.ts b/src/commands/frameworks-backends-list.ts index 31ddd0923f9..1af581d7320 100644 --- a/src/commands/frameworks-backends-list.ts +++ b/src/commands/frameworks-backends-list.ts @@ -5,21 +5,20 @@ import * as gcp from "../gcp/frameworks"; import { FirebaseError } from "../error"; import { logger } from "../logger"; import { bold } from "colorette"; -import { ALLOWED_REGIONS } from "../init/features/frameworks/constants"; const Table = require("cli-table"); const COLUMN_LENGTH = 20; const TABLE_HEAD = [ "Backend Id", "Repository Name", - "URL", "Location", + "URL", "Created Date", "Updated Date", ]; export const command = new Command("backends:list") .description("List backends of a Firebase project.") - .option("-l, --location ", "App Backend location", "") + .option("-l, --location ", "App Backend location", "-") .action(async (options: Options) => { const projectId = needProjectId(options); const location = options.location as string; @@ -30,17 +29,9 @@ export const command = new Command("backends:list") table.colWidths = COLUMN_LENGTH; let backendsList: gcp.ListBackendsResponse[] = []; try { - if (!location) { - for (const region of ALLOWED_REGIONS) { - const backendsPerRegion = await gcp.listBackends(projectId, region.value); - backendsList.push(backendsPerRegion); - populateTable(backendsPerRegion, region.name, table); - } - } else { - const backendsPerRegion = await gcp.listBackends(projectId, location); - backendsList.push(backendsPerRegion); - populateTable(backendsPerRegion, location, table); - } + const backendsPerRegion = await gcp.listBackends(projectId, location); + backendsList.push(backendsPerRegion); + populateTable(backendsPerRegion, location, table); logger.info(); logger.info(`Backends for project ${bold(projectId)}`); @@ -48,7 +39,7 @@ export const command = new Command("backends:list") logger.info(table.toString()); } catch (err: any) { throw new FirebaseError( - `Unable to list backends present in project: ${projectId}. Please check the parameters you have provided.`, + `Unable to list backends present for project: ${projectId}. Please check the parameters you have provided.`, { original: err } ); } @@ -58,11 +49,12 @@ export const command = new Command("backends:list") function populateTable(backendsLists: gcp.ListBackendsResponse, location: string, table: any) { for (const backend of backendsLists.backends) { + const [location, _, backendId] = backend.name.split("/").slice(3,6); const entry = [ - backend.name.split("/").pop(), + backendId, backend.codebase.repository?.split("/").pop(), - backend.uri, location, + backend.uri, backend.createTime, backend.updateTime, ]; From afa6db5691daa727500d2c858ae7e10e6b4a4945 Mon Sep 17 00:00:00 2001 From: Sairam Sakhamuri Date: Thu, 16 Nov 2023 06:23:57 +0000 Subject: [PATCH 4/4] resolved linter errors --- src/commands/frameworks-backends-list.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/commands/frameworks-backends-list.ts b/src/commands/frameworks-backends-list.ts index 1af581d7320..0c3420a7941 100644 --- a/src/commands/frameworks-backends-list.ts +++ b/src/commands/frameworks-backends-list.ts @@ -27,7 +27,7 @@ export const command = new Command("backends:list") style: { head: ["green"] }, }); table.colWidths = COLUMN_LENGTH; - let backendsList: gcp.ListBackendsResponse[] = []; + const backendsList: gcp.ListBackendsResponse[] = []; try { const backendsPerRegion = await gcp.listBackends(projectId, location); backendsList.push(backendsPerRegion); @@ -49,7 +49,7 @@ export const command = new Command("backends:list") function populateTable(backendsLists: gcp.ListBackendsResponse, location: string, table: any) { for (const backend of backendsLists.backends) { - const [location, _, backendId] = backend.name.split("/").slice(3,6); + const [location, , backendId] = backend.name.split("/").slice(3, 6); const entry = [ backendId, backend.codebase.repository?.split("/").pop(),