diff --git a/package.json b/package.json index 9315dad..578b4f5 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "version": "3.2.1", + "version": "3.2.2", "license": "MIT", "name": "@mollie/crowdin-cli", "author": { diff --git a/src/delete-branch.ts b/src/delete-branch.ts index a25a2ba..fe4ede8 100644 --- a/src/delete-branch.ts +++ b/src/delete-branch.ts @@ -5,6 +5,7 @@ import { listFiles, listTasks, } from "./lib/crowdin"; +import { getCrowdinBranchName } from "./utils/get-crowdin-branch-name"; import log from "./utils/logging"; export interface DeleteBranchOptions { @@ -12,16 +13,29 @@ export interface DeleteBranchOptions { deleteTasks?: boolean; } -export default async ({ branchName, deleteTasks }: DeleteBranchOptions) => { +export default async ({ + branchName: gitBranchName, + deleteTasks, +}: DeleteBranchOptions) => { log.info("Deleting branch from Crowdin"); + const branchName = getCrowdinBranchName(gitBranchName); + let branches = null; - const branches = await listBranches(branchName); + try { + branches = await listBranches(branchName); + } catch (error) { + return log.error("Error while fetching branches from Crowdin"); + } - if (branches.data.length === 0) { + if (branches?.data.length === 0) { return log.error(`Couldn’t find a branch with the name: "${branchName}"`); } - const branchId = branches.data[0].data.id; + const branchId = branches?.data[0].data.id; + + if (!branchId) { + return log.error(`Error determining the ID for branch: "${branchName}"`); + } try { if (deleteTasks) { diff --git a/src/utils/get-crowdin-branch-name.ts b/src/utils/get-crowdin-branch-name.ts new file mode 100644 index 0000000..a314e9e --- /dev/null +++ b/src/utils/get-crowdin-branch-name.ts @@ -0,0 +1,4 @@ +export function getCrowdinBranchName(gitBranchName: string) { + // Replace all slashes with dashes + return gitBranchName.replace(/\//g, "-"); +} diff --git a/tests/index.test.ts b/tests/index.test.ts index dda59a6..fa39fc0 100644 --- a/tests/index.test.ts +++ b/tests/index.test.ts @@ -9,6 +9,7 @@ import upload from "../src/upload"; import deleteBranch from "../src/delete-branch"; import preTranslate from "../src/pre-translate"; import createTasks from "../src/create-tasks"; +import { getCrowdinBranchName } from "../src/utils/get-crowdin-branch-name"; import { sync } from "mkdirp"; jest.mock("@crowdin/crowdin-api-client", () => ({ @@ -333,3 +334,13 @@ describe("Handlers", () => { expect(file).toMatchSnapshot(); }); }); + +describe("Utils", () => { + test("getCrowdinBranchName()", () => { + expect(getCrowdinBranchName("main")).toBe("main"); + expect(getCrowdinBranchName("branch-name")).toBe("branch-name"); + expect(getCrowdinBranchName("feature/branch-name")).toBe( + "feature-branch-name" + ); + }); +});