Skip to content

Commit

Permalink
Move ref parsing code to a separate file. (#3779)
Browse files Browse the repository at this point in the history
* migrating parseRef to ref

* moving ref parsing into its own file

* add jsdocs

* renaming to refs

* forgot to save
  • Loading branch information
joehan committed Sep 24, 2021
1 parent 6878ae8 commit 00dcfb4
Show file tree
Hide file tree
Showing 11 changed files with 181 additions and 157 deletions.
5 changes: 3 additions & 2 deletions src/commands/ext-dev-extension-delete.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ import * as clc from "cli-color";

import { Command } from "../command";
import { logPrefix } from "../extensions/extensionsHelper";
import { parseRef, getExtension, deleteExtension } from "../extensions/extensionsApi";
import { getExtension, deleteExtension } from "../extensions/extensionsApi";
import * as refs from "../extensions/refs";
import { promptOnce } from "../prompt";
import { requireAuth } from "../requireAuth";
import { FirebaseError } from "../error";
Expand All @@ -18,7 +19,7 @@ module.exports = new Command("ext:dev:delete <extensionRef>")
.before(requireAuth)
.before(checkMinRequiredVersion, "extDevMinVersion")
.action(async (extensionRef: string) => {
const { publisherId, extensionId, version } = parseRef(extensionRef);
const { publisherId, extensionId, version } = refs.parse(extensionRef);
if (version) {
throw new FirebaseError(
`Deleting a single version is not currently supported. You can only delete ${clc.bold(
Expand Down
4 changes: 2 additions & 2 deletions src/commands/ext-dev-publish.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import TerminalRenderer = require("marked-terminal");

import { Command } from "../command";
import { publishExtensionVersionFromLocalSource, logPrefix } from "../extensions/extensionsHelper";
import { parseRef } from "../extensions/extensionsApi";
import * as refs from "../extensions/refs";
import { findExtensionYaml } from "../extensions/localHelper";
import { consoleInstallLink } from "../extensions/publishHelpers";
import { requireAuth } from "../requireAuth";
Expand All @@ -29,7 +29,7 @@ export default new Command("ext:dev:publish <extensionRef>")
)
.before(requireAuth)
.action(async (extensionRef: string, options: any) => {
const { publisherId, extensionId, version } = parseRef(extensionRef);
const { publisherId, extensionId, version } = refs.parse(extensionRef);
if (version) {
throw new FirebaseError(
`The input extension reference must be of the format ${clc.bold(
Expand Down
5 changes: 3 additions & 2 deletions src/commands/ext-dev-unpublish.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import { Command } from "../command";
import { logPrefix } from "../extensions/extensionsHelper";
import { unpublishExtension, parseRef, getExtension } from "../extensions/extensionsApi";
import { unpublishExtension, getExtension } from "../extensions/extensionsApi";
import * as utils from "../utils";
import * as refs from "../extensions/refs";
import { promptOnce } from "../prompt";
import * as clc from "cli-color";
import { requireAuth } from "../requireAuth";
Expand All @@ -17,7 +18,7 @@ module.exports = new Command("ext:dev:unpublish <extensionRef>")
.before(requireAuth)
.before(checkMinRequiredVersion, "extDevMinVersion")
.action(async (extensionRef: string) => {
const { publisherId, extensionId, version } = parseRef(extensionRef);
const { publisherId, extensionId, version } = refs.parse(extensionRef);
utils.logLabeledWarning(
logPrefix,
"If you unpublish this extension, developers won't be able to install it. For developers who currently have this extension installed, it will continue to run and will appear as unpublished when listed in the Firebase console or Firebase CLI."
Expand Down
5 changes: 3 additions & 2 deletions src/commands/ext-install.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import { FirebaseError } from "../error";
import { needProjectId } from "../projectUtils";
import * as extensionsApi from "../extensions/extensionsApi";
import * as provisioningHelper from "../extensions/provisioningHelper";
import * as refs from "../extensions/refs";
import { displayWarningPrompts } from "../extensions/warnings";
import * as paramHelper from "../extensions/paramHelper";
import {
Expand Down Expand Up @@ -225,8 +226,8 @@ async function infoInstallByReference(
extensionName = `firebase/${extensionID}@${version || "latest"}`;
}
// Get the correct version for a given extension reference from the Registry API.
const ref = extensionsApi.parseRef(extensionName);
const extension = await extensionsApi.getExtension(`${ref.publisherId}/${ref.extensionId}`);
const ref = refs.parse(extensionName);
const extension = await extensionsApi.getExtension(refs.toExtensionRef(ref));
if (!ref.version) {
extensionName = `${extensionName}@latest`;
}
Expand Down
6 changes: 2 additions & 4 deletions src/commands/ext-update.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ import {
getExistingSourceOrigin,
inferUpdateSource,
} from "../extensions/updateHelper";
import * as refs from "../extensions/refs";
import { needProjectId } from "../projectUtils";
import { requirePermissions } from "../requirePermissions";
import * as utils from "../utils";
Expand Down Expand Up @@ -249,10 +250,7 @@ export default new Command("ext:update <extensionInstanceId> [updateSource]")
instanceId,
};
if (newSourceName.includes("publisher")) {
const { publisherId, extensionId, version } = extensionsApi.parseExtensionVersionName(
newSourceName
);
updateOptions.extRef = `${publisherId}/${extensionId}@${version}`;
updateOptions.extRef = refs.toExtensionVersionRef(refs.parse(newSourceName));
} else {
updateOptions.source = newSource;
}
Expand Down
5 changes: 3 additions & 2 deletions src/extensions/changelog.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,10 @@ import * as semver from "semver";
import TerminalRenderer = require("marked-terminal");
import Table = require("cli-table");

import { listExtensionVersions, parseRef } from "./extensionsApi";
import { listExtensionVersions } from "./extensionsApi";
import { readFile } from "./localHelper";
import { logger } from "../logger";
import * as refs from "./refs";
import { logLabeledWarning } from "../utils";

marked.setOptions({
Expand Down Expand Up @@ -38,7 +39,7 @@ export async function getReleaseNotesForUpdate(args: {
});
for (const extensionVersion of extensionVersions) {
if (extensionVersion.releaseNotes) {
const version = parseRef(extensionVersion.ref).version!;
const version = refs.parse(extensionVersion.ref).version!;
releaseNotes[version] = extensionVersion.releaseNotes;
}
}
Expand Down

0 comments on commit 00dcfb4

Please sign in to comment.