Skip to content

Commit

Permalink
feat(cli): automatically install @refinedev/inferencer after resour…
Browse files Browse the repository at this point in the history
…ces are generated (#6221)

Co-authored-by: Ali Emir Şen <senaliemir@gmail.com>
  • Loading branch information
alicanerdurmaz and aliemir committed Aug 5, 2024
1 parent aefd093 commit cbf2fd7
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 1 deletion.
7 changes: 7 additions & 0 deletions .changeset/eleven-bottles-rush.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
"@refinedev/cli": minor
---

feat: Automatically install `@refinedev/inferencer` if missing after generating new resources.

[Resolves #6220](https://github.com/refinedev/refine/issues/6220)
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import { ProjectTypes } from "@definitions/projectTypes";
import { compileDir } from "@utils/compile";
import { installPackages, isInstalled } from "@utils/package";
import { getProjectType, getUIFramework } from "@utils/project";
import { getResourcePath } from "@utils/resource";
import spinner from "@utils/spinner";
import { uppercaseFirstChar } from "@utils/text";
import execa from "execa";
import {
Expand Down Expand Up @@ -56,6 +58,7 @@ export const createResources = async (
actions = selectedActions.join(",");
}

let isAtleastOneResourceCreated = false;
resources.forEach((resourceName) => {
const customActions = actions ? actions.split(",") : undefined;
const resourceFolderName = plural(resourceName).toLowerCase();
Expand All @@ -76,6 +79,7 @@ export const createResources = async (
);
return;
}
isAtleastOneResourceCreated = true;

// uppercase first letter
const resource = uppercaseFirstChar(resourceName);
Expand Down Expand Up @@ -169,6 +173,10 @@ export const createResources = async (
);
});

if (isAtleastOneResourceCreated) {
installInferencer();
}

return;
};

Expand Down Expand Up @@ -223,3 +231,19 @@ const generateNextJsPages = (
const compileParams = { resource, resourceFolderName };
compileDir(resourcePageRootDirPath, compileParams);
};

export const installInferencer = async () => {
console.log();
const isInferencerInstalled = await spinner(
() => isInstalled("@refinedev/inferencer"),
"Checking if '@refinedev/inferencer' package is installed...",
);
if (!isInferencerInstalled) {
console.log("📦 Installing '@refinedev/inferencer' package...");
await installPackages(
["@refinedev/inferencer@latest"],
"add",
"✅ '@refinedev/inferencer' package installed successfully!",
);
}
};
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ import { existsSync, readFileSync, rmdirSync } from "fs-extra";
const srcDirPath = `${__dirname}/../../../..`;

describe("add", () => {
beforeEach(() => {
jest.spyOn(testTargetModule, "installInferencer").mockImplementation();
});

it("should generate next js pages", () => {
jest
.spyOn(utilsProject, "getProjectType")
Expand Down
12 changes: 11 additions & 1 deletion packages/cli/src/utils/package/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,7 @@ export const getPreferedPM = async () => {
export const installPackages = async (
packages: string[],
type: "all" | "add" = "all",
successMessage = "All `Refine` packages updated 🎉",
) => {
const pm = await getPreferedPM();

Expand All @@ -187,7 +188,7 @@ export const installPackages = async (

execution.on("exit", (exitCode) => {
if (exitCode === 0) {
console.log("All `Refine` packages updated 🎉");
console.log(successMessage);
return;
}

Expand Down Expand Up @@ -334,3 +335,12 @@ export const getAllVersionsOfPackage = async (

return result;
};

export const isInstalled = async (packageName: string) => {
const installedPackages = await getInstalledRefinePackages();
if (!installedPackages) {
return false;
}

return installedPackages.some((pkg) => pkg.name === packageName);
};

0 comments on commit cbf2fd7

Please sign in to comment.