diff --git a/src/app.ts b/src/app.ts index c7f22fa..c5e70ab 100644 --- a/src/app.ts +++ b/src/app.ts @@ -27,17 +27,30 @@ export function assertPlatform(platform: string): Platform { return platform as Platform; } -export function getSelectedApp(platform: Platform) { +export async function getSelectedApp( + platform: Platform, +): Promise<{ appId: string; appKey: string; platform: Platform }> { assertPlatform(platform); - if (!fs.existsSync('update.json')) { - throw new Error(t('appNotSelected', { platform })); + let updateInfo: Partial> = + {}; + try { + updateInfo = JSON.parse(await fs.promises.readFile('update.json', 'utf8')); + } catch (e: any) { + if (e.code === 'ENOENT') { + throw new Error(t('appNotSelected', { platform })); + } + throw e; } - const updateInfo = JSON.parse(fs.readFileSync('update.json', 'utf8')); - if (!updateInfo[platform]) { + const info = updateInfo[platform]; + if (!info) { throw new Error(t('appNotSelected', { platform })); } - return updateInfo[platform]; + return { + appId: String(info.appId), + appKey: info.appKey, + platform, + }; } export async function listApp(platform: Platform | '' = '') { @@ -125,10 +138,10 @@ export const appCommands = { let updateInfo: Partial< Record > = {}; - if (fs.existsSync('update.json')) { - try { - updateInfo = JSON.parse(fs.readFileSync('update.json', 'utf8')); - } catch (e) { + try { + updateInfo = JSON.parse(await fs.promises.readFile('update.json', 'utf8')); + } catch (e: any) { + if (e.code !== 'ENOENT') { console.error(t('failedToParseUpdateJson')); throw e; } @@ -138,7 +151,7 @@ export const appCommands = { appId: id, appKey, }; - fs.writeFileSync( + await fs.promises.writeFile( 'update.json', JSON.stringify(updateInfo, null, 4), 'utf8', diff --git a/src/package.ts b/src/package.ts index be7470d..15a5480 100644 --- a/src/package.ts +++ b/src/package.ts @@ -99,7 +99,7 @@ async function uploadNativePackage( const { appId: appIdInPkg, appKey: appKeyInPkg } = info; const { appId, appKey } = await getSelectedApp(config.platform); - if (appIdInPkg && appIdInPkg != appId) { + if (appIdInPkg && String(appIdInPkg) !== appId) { throw new Error(t(config.appIdMismatchKey, { appIdInPkg, appId })); } @@ -330,7 +330,7 @@ export const packageCommands = { packages: async ({ options }: { options: { platform: Platform } }) => { const platform = await getPlatform(options.platform); const { appId } = await getSelectedApp(platform); - await listPackage(appId); + await listPackage(String(appId)); }, deletePackage: async ({ args, @@ -348,7 +348,7 @@ export const packageCommands = { if (!appId) { const platform = await getPlatform(options.platform); - appId = (await getSelectedApp(platform)).appId as string; + appId = (await getSelectedApp(platform)).appId; } // If no packageId provided as argument, let user choose from list diff --git a/src/versions.ts b/src/versions.ts index 2c3d3eb..53637b2 100644 --- a/src/versions.ts +++ b/src/versions.ts @@ -480,12 +480,12 @@ export const versionCommands = { versions: async ({ options }: { options: VersionCommandOptions }) => { const platform = await getPlatform(options.platform); const { appId } = await getSelectedApp(platform); - await listVersions(appId); + await listVersions(String(appId)); }, update: async ({ options }: { options: VersionCommandOptions }) => { const platform = await getPlatform(options.platform); const appId = options.appId || (await getSelectedApp(platform)).appId; - let versionId = options.versionId || (await chooseVersion(appId)).id; + let versionId = options.versionId || (await chooseVersion(String(appId))).id; if (versionId === 'null') { versionId = undefined; } @@ -508,7 +508,7 @@ export const versionCommands = { } } - const allPkgs = await getAllPackages(appId); + const allPkgs = await getAllPackages(String(appId)); if (!allPkgs) { throw new Error(t('noPackagesFound', { appId })); @@ -558,7 +558,7 @@ export const versionCommands = { } } else { if (!pkgId) { - pkgId = (await choosePackage(appId)).id; + pkgId = (await choosePackage(String(appId))).id; } if (!pkgId) { @@ -575,15 +575,15 @@ export const versionCommands = { } await printDepsChangesForPublish({ - appId, - versionId, + appId: String(appId), + versionId: String(versionId), pkgs: pkgsToBind, providedVersionDeps: options.versionDeps, }); await bindVersionToPackages({ - appId, - versionId, + appId: String(appId), + versionId: String(versionId), pkgs: pkgsToBind, rollout, dryRun: options.dryRun, @@ -596,14 +596,14 @@ export const versionCommands = { }) => { const platform = await getPlatform(options.platform); const { appId } = await getSelectedApp(platform); - const versionId = options.versionId || (await chooseVersion(appId)).id; + const versionId = options.versionId || (await chooseVersion(String(appId))).id; const updateParams: Record = {}; if (options.name) updateParams.name = options.name; if (options.description) updateParams.description = options.description; if (options.metaInfo) updateParams.metaInfo = options.metaInfo; - await put(`/app/${appId}/version/${versionId}`, updateParams); + await put(`/app/${String(appId)}/version/${versionId}`, updateParams); console.log(t('operationSuccess')); }, deleteVersion: async ({ @@ -619,11 +619,11 @@ export const versionCommands = { let versionId = options.versionId; if (!versionId) { - versionId = (await chooseVersion(appId as string)).id; + versionId = (await chooseVersion(String(appId))).id; } try { - await doDelete(`/app/${appId}/version/${versionId}`); + await doDelete(`/app/${String(appId)}/version/${versionId}`); console.log(t('deleteVersionSuccess', { versionId })); } catch (error: any) { throw new Error(