From a3db5e0ee4b075a695df174584834a0467bb205c Mon Sep 17 00:00:00 2001 From: Timothee Guerin Date: Fri, 21 Apr 2023 10:55:17 -0700 Subject: [PATCH 1/5] fix migrate --- packages/migrate/src/cli.ts | 50 +++++++++++++++++++++---------------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/packages/migrate/src/cli.ts b/packages/migrate/src/cli.ts index bbdd47f1217..7137af86d2a 100644 --- a/packages/migrate/src/cli.ts +++ b/packages/migrate/src/cli.ts @@ -18,7 +18,7 @@ import { findTypeSpecFiles } from "./utils.js"; interface Options { path: string; - tspVersion: string; + tspVersion?: string; } async function main() { @@ -34,35 +34,25 @@ async function main() { .option("tspVersion", { alias: "t", describe: - "Specifies the TypeSpec compiler version used by the input. Defaults to the version of the compiler package in package.json.", + "Specifies the TypeSpec compiler version used by the input(Version you want to upgrade from). Defaults to the version of the compiler package in package.json.", type: "string", - default: "", }) .help().argv; const PackageJsonFile = "package.json"; - if (cliOptions.tspVersion.length === 0) { + if (cliOptions.tspVersion === undefined) { // Locate current package.json const pkgFile = resolvePath(cliOptions.path, PackageJsonFile); const packageJson: NodePackage = JSON.parse(await readFile(pkgFile, "utf-8")); - + cliOptions.tspVersion = lookupExistingVersion(packageJson); // Locate current compiler version - const CadlCompiler = "@cadl-lang/compiler"; - const TypeSpecCompiler = "@typespec/compiler"; - if ( - packageJson?.devDependencies !== undefined && - packageJson?.devDependencies[CadlCompiler] !== undefined - ) { - cliOptions.tspVersion = packageJson.devDependencies[CadlCompiler]; - } else if ( - packageJson?.devDependencies !== undefined && - packageJson?.devDependencies[TypeSpecCompiler] !== undefined - ) { - cliOptions.tspVersion = packageJson.devDependencies[TypeSpecCompiler]; - } else { - console.error("Unable to find TypeSpec compiler version in package.json."); - return; - } + } + + if (cliOptions.tspVersion === undefined) { + console.error( + "Couldn't resolve TypeSpec compiler version to upgrade from. Use `--tspVersion` flag to specify it." + ); + process.exit(1); } if (!fs.existsSync(cliOptions.path)) { @@ -127,6 +117,24 @@ async function main() { } } +function lookupExistingVersion(packageJson: NodePackage) { + const CadlCompiler = "@cadl-lang/compiler"; + const TypeSpecCompiler = "@typespec/compiler"; + + const depKinds = ["devDependencies", "peerDependencies", "dependencies"] as const; + for (const depKind of depKinds) { + const deps = packageJson[depKind]; + if (deps === undefined) { + continue; + } + const found = deps[CadlCompiler] ?? deps[TypeSpecCompiler]; + if (found) { + return found; + } + } + return undefined; +} + main().catch((e) => { // eslint-disable-next-line no-console console.error(e); From 126965e508792597ff6ef24f4d327772ae6b5a90 Mon Sep 17 00:00:00 2001 From: Timothee Guerin Date: Fri, 21 Apr 2023 10:57:54 -0700 Subject: [PATCH 2/5] fix migrate --- packages/migrate/src/cli.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/migrate/src/cli.ts b/packages/migrate/src/cli.ts index 7137af86d2a..78399e32406 100644 --- a/packages/migrate/src/cli.ts +++ b/packages/migrate/src/cli.ts @@ -50,7 +50,7 @@ async function main() { if (cliOptions.tspVersion === undefined) { console.error( - "Couldn't resolve TypeSpec compiler version to upgrade from. Use `--tspVersion` flag to specify it." + "Couldn't resolve TypeSpec compiler version to upgrade from. Use `--tspVersion` flag to specify it. (e.g. `--tspVersion=0.42` to upgrade from version 0.42)" ); process.exit(1); } From b3c8b147a302d6fcfc3764bbabb4435cdd2e9989 Mon Sep 17 00:00:00 2001 From: Timothee Guerin Date: Fri, 21 Apr 2023 11:02:45 -0700 Subject: [PATCH 3/5] . --- .../migrate/fix-migrate_2023-04-21-18-02.json | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 common/changes/@typespec/migrate/fix-migrate_2023-04-21-18-02.json diff --git a/common/changes/@typespec/migrate/fix-migrate_2023-04-21-18-02.json b/common/changes/@typespec/migrate/fix-migrate_2023-04-21-18-02.json new file mode 100644 index 00000000000..8a22e4cc708 --- /dev/null +++ b/common/changes/@typespec/migrate/fix-migrate_2023-04-21-18-02.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@typespec/migrate", + "comment": "Fix resolution of tsp version", + "type": "none" + } + ], + "packageName": "@typespec/migrate" +} \ No newline at end of file From 9bc55c15df6c24af2916b2cb0e79a1b19c536df5 Mon Sep 17 00:00:00 2001 From: Timothee Guerin Date: Fri, 21 Apr 2023 11:08:29 -0700 Subject: [PATCH 4/5] . --- packages/migrate/src/cli.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/migrate/src/cli.ts b/packages/migrate/src/cli.ts index 78399e32406..6e82520869b 100644 --- a/packages/migrate/src/cli.ts +++ b/packages/migrate/src/cli.ts @@ -50,7 +50,7 @@ async function main() { if (cliOptions.tspVersion === undefined) { console.error( - "Couldn't resolve TypeSpec compiler version to upgrade from. Use `--tspVersion` flag to specify it. (e.g. `--tspVersion=0.42` to upgrade from version 0.42)" + "Couldn't resolve TypeSpec compiler version to upgrade from. Use `--tspVersion` flag to specify it. (e.g. `--tspVersion=0.42.0` to upgrade from version 0.42.0)" ); process.exit(1); } From 9737d00873ba4dffa5cb00a2fe8c1d934e5d5d78 Mon Sep 17 00:00:00 2001 From: Timothee Guerin Date: Fri, 21 Apr 2023 11:10:47 -0700 Subject: [PATCH 5/5] fix --- packages/migrate/src/cli.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/migrate/src/cli.ts b/packages/migrate/src/cli.ts index 6e82520869b..34e90dee61d 100644 --- a/packages/migrate/src/cli.ts +++ b/packages/migrate/src/cli.ts @@ -43,8 +43,10 @@ async function main() { if (cliOptions.tspVersion === undefined) { // Locate current package.json const pkgFile = resolvePath(cliOptions.path, PackageJsonFile); - const packageJson: NodePackage = JSON.parse(await readFile(pkgFile, "utf-8")); - cliOptions.tspVersion = lookupExistingVersion(packageJson); + const packageJson = await readPackageJson(pkgFile); + if (packageJson) { + cliOptions.tspVersion = lookupExistingVersion(packageJson); + } // Locate current compiler version } @@ -117,6 +119,13 @@ async function main() { } } +async function readPackageJson(pkgFile: string): Promise { + try { + return JSON.parse(await readFile(pkgFile, "utf-8")); + } catch (e) { + return undefined; + } +} function lookupExistingVersion(packageJson: NodePackage) { const CadlCompiler = "@cadl-lang/compiler"; const TypeSpecCompiler = "@typespec/compiler";