Skip to content

Commit

Permalink
refactor: move some logging into functions
Browse files Browse the repository at this point in the history
  • Loading branch information
eglavin committed Apr 7, 2024
1 parent 784d8f5 commit 6585d2b
Show file tree
Hide file tree
Showing 7 changed files with 55 additions and 29 deletions.
13 changes: 5 additions & 8 deletions src/cli.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,13 @@ async function runFork() {
const logger = new Logger(config);
const fileManager = new FileManager(config, logger);

logger.log(`Running Fork: ${new Date().toLocaleString()}
${config.dryRun ? "Dry run, no changes will be written to disk.\n" : ""}`);
logger.log(`Running Fork: ${new Date().toLocaleString()}`);
logger.log(config.dryRun ? "Dry run, no changes will be written to disk.\n" : "");

const current = await getCurrentVersion(config, fileManager);
const next = await getNextVersion(config, current.version);

logger.log(`Current version: ${current.version}
Next version: ${next.version} (${next.releaseType})
Updating Files: `);
const current = await getCurrentVersion(config, logger, fileManager);
const next = await getNextVersion(config, logger, current.version);

logger.log("Updating Files: ");
for (const outFile of current.files) {
logger.log(`\t${outFile.path}`);

Expand Down
28 changes: 15 additions & 13 deletions src/process/__tests__/version.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ describe("version > getCurrentVersion", () => {
const { config, logger } = await createTestConfig();
const fileManager = new FileManager(config, logger);

const result = await getCurrentVersion(config, fileManager);
const result = await getCurrentVersion(config, logger, fileManager);
expect(result).toEqual({
files: [
{
Expand All @@ -41,7 +41,7 @@ describe("version > getCurrentVersion", () => {
const { config, logger } = await createTestConfig();
const fileManager = new FileManager(config, logger);

const result = await getCurrentVersion(config, fileManager);
const result = await getCurrentVersion(config, logger, fileManager);
expect(result).toEqual({
files: [
{
Expand Down Expand Up @@ -75,7 +75,7 @@ describe("version > getCurrentVersion", () => {
const { config, logger } = await createTestConfig();
const fileManager = new FileManager(config, logger);

const result = await getCurrentVersion(config, fileManager);
const result = await getCurrentVersion(config, logger, fileManager);
expect(result).toEqual({
files: [
{
Expand Down Expand Up @@ -109,7 +109,9 @@ describe("version > getCurrentVersion", () => {
const { config, logger } = await createTestConfig();
const fileManager = new FileManager(config, logger);

expect(getCurrentVersion(config, fileManager)).rejects.toThrow("Found multiple versions");
expect(getCurrentVersion(config, logger, fileManager)).rejects.toThrow(
"Found multiple versions",
);

deleteTestDir();
});
Expand All @@ -120,7 +122,7 @@ describe("version > getCurrentVersion", () => {
const { config, logger } = await createTestConfig();
const fileManager = new FileManager(config, logger);

expect(getCurrentVersion(config, fileManager)).rejects.toThrow(
expect(getCurrentVersion(config, logger, fileManager)).rejects.toThrow(
"Unable to find current version",
);

Expand All @@ -138,7 +140,7 @@ describe("version > getCurrentVersion", () => {
config.currentVersion = "3.2.1";
const fileManager = new FileManager(config, logger);

const result = await getCurrentVersion(config, fileManager);
const result = await getCurrentVersion(config, logger, fileManager);
expect(result).toEqual({
files: [
{
Expand Down Expand Up @@ -169,7 +171,7 @@ describe("version > getCurrentVersion", () => {
config.inspectVersion = true;
const fileManager = new FileManager(config, logger);

await getCurrentVersion(config, fileManager);
await getCurrentVersion(config, logger, fileManager);
expect(spyOnConsole).toHaveBeenCalledWith("1.2.3");
expect(spyOnProcess).toHaveBeenCalledWith(0);
spyOnConsole.mockRestore();
Expand All @@ -187,9 +189,9 @@ describe("version > getNextVersion", () => {
createJSONFile({ version: "1.2.3" });
createCommits(["feat: A feature commit"]);

const { config } = await createTestConfig();
const { config, logger } = await createTestConfig();

const result = await getNextVersion(config, "1.2.3");
const result = await getNextVersion(config, logger, "1.2.3");
expect(result).toEqual({
level: 1,
preMajor: false,
Expand All @@ -204,9 +206,9 @@ describe("version > getNextVersion", () => {
it("should throw an error if not able to determine the next version", async () => {
const { createTestConfig, deleteTestDir } = createTestDir("version getNextVersion");

const { config } = await createTestConfig();
const { config, logger } = await createTestConfig();

expect(getNextVersion(config, "1.2.3")).rejects.toThrow(
expect(getNextVersion(config, logger, "1.2.3")).rejects.toThrow(
"[conventional-recommended-bump] Unable to determine next version",
);

Expand All @@ -220,10 +222,10 @@ describe("version > getNextVersion", () => {
createJSONFile({ version: "1.2.3" });
createCommits(["feat: A feature commit"]);

const { config } = await createTestConfig();
const { config, logger } = await createTestConfig();
config.nextVersion = "2.0.0";

const result = await getNextVersion(config, "1.2.3");
const result = await getNextVersion(config, logger, "1.2.3");
expect(result).toEqual({ version: "2.0.0" });

deleteTestDir();
Expand Down
23 changes: 17 additions & 6 deletions src/process/version.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import semver, { type ReleaseType } from "semver";
import conventionalRecommendedBump from "conventional-recommended-bump";

import type { ForkConfig } from "../config/schema";
import type { IFileManager, FileState } from "../strategies/file-manager";
import { getLatestGitTagVersion } from "../utils/git-tag-version";
import { getReleaseType } from "../utils/release-type";
import type { ForkConfig } from "../config/schema";
import type { IFileManager, FileState } from "../strategies/file-manager";
import type { Logger } from "../utils/logger";

export interface CurrentVersion {
version: string;
Expand All @@ -13,6 +14,7 @@ export interface CurrentVersion {

export async function getCurrentVersion(
config: ForkConfig,
logger: Logger,
fileManager: IFileManager,
): Promise<CurrentVersion> {
const files: FileState[] = [];
Expand Down Expand Up @@ -52,15 +54,18 @@ export async function getCurrentVersion(
throw new Error("Found multiple versions");
}

const currentVersion = versions.entries().next().value[0];

// If we're just inspecting the version, output the version and exit
if (config.inspectVersion) {
console.log(versions.entries().next().value[0]);
console.log(currentVersion);
process.exit(0);
}

logger.log(`Current version: ${currentVersion}`);
return {
files,
version: versions.entries().next().value[0],
version: currentVersion,
};
}

Expand All @@ -74,9 +79,11 @@ export interface NextVersion {

export async function getNextVersion(
config: ForkConfig,
logger: Logger,
currentVersion: string,
): Promise<NextVersion> {
if (config.nextVersion && semver.valid(config.nextVersion)) {
logger.log(`Next version: ${config.nextVersion}`);
return { version: config.nextVersion };
}

Expand Down Expand Up @@ -105,7 +112,8 @@ export async function getNextVersion(
config.preReleaseTag,
);

return Object.assign(recommendedBump, {
const state: NextVersion = {
...recommendedBump,
preMajor: isPreMajor,
releaseType,
version:
Expand All @@ -114,7 +122,10 @@ export async function getNextVersion(
releaseType,
typeof config.preReleaseTag === "string" ? config.preReleaseTag : undefined,
) ?? "",
} satisfies NextVersion);
};

logger.log(`Next version: ${state.version} (${state.releaseType})`);
return state;
}

throw new Error("Unable to find next version");
Expand Down
2 changes: 1 addition & 1 deletion src/strategies/__tests__/json-package.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ describe("strategies json-package", () => {
const file = fileManager.read("package.json");
expect(file).toBeUndefined();

expect(logger.log).toBeCalledWith("Unable to determine json package file: package.json");
expect(logger.warn).toBeCalledWith("Unable to determine json package file: package.json");

deleteTestDir();
});
Expand Down
14 changes: 14 additions & 0 deletions src/strategies/__tests__/plain-text.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,20 @@ describe("strategies plain-text", () => {
deleteTestDir();
});

it('should log a warning when "version.txt" file is not found', async () => {
const { deleteTestDir, createTestConfig } = createTestDir("strategies plain-text");

const { config, logger } = await createTestConfig();
const fileManager = new PlainText(config, logger);

const file = fileManager.read("version.txt");

expect(file).toBeUndefined();
expect(logger.warn).toHaveBeenCalledWith("Unable to determine plain text file: version.txt");

deleteTestDir();
});

it("should return empty string when version.txt is empty", async () => {
const { testDir, deleteTestDir, createFile, createTestConfig } =
createTestDir("strategies plain-text");
Expand Down
2 changes: 1 addition & 1 deletion src/strategies/json-package.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ export class JSONPackage implements IFileManager {
};
}

this.logger.log(`Unable to determine json package file: ${fileName}`);
this.logger.warn(`Unable to determine json package file: ${fileName}`);
}
}

Expand Down
2 changes: 2 additions & 0 deletions src/strategies/plain-text.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ export class PlainText implements IFileManager {
version: fileContents || "",
};
}

this.logger.warn(`Unable to determine plain text file: ${fileName}`);
}

public write(filePath: string, newVersion: string) {
Expand Down

0 comments on commit 6585d2b

Please sign in to comment.