aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/packages/turbo-workspaces/src/getWorkspaceDetails.ts
diff options
context:
space:
mode:
author简律纯 <hsiangnianian@outlook.com>2023-04-28 01:36:44 +0800
committer简律纯 <hsiangnianian@outlook.com>2023-04-28 01:36:44 +0800
commitdd84b9d64fb98746a230cd24233ff50a562c39c9 (patch)
treeb583261ef00b3afe72ec4d6dacb31e57779a6faf /packages/turbo-workspaces/src/getWorkspaceDetails.ts
parent0b46fcd72ac34382387b2bcf9095233efbcc52f4 (diff)
downloadHydroRoll-dd84b9d64fb98746a230cd24233ff50a562c39c9.tar.gz
HydroRoll-dd84b9d64fb98746a230cd24233ff50a562c39c9.zip
Diffstat (limited to 'packages/turbo-workspaces/src/getWorkspaceDetails.ts')
-rw-r--r--packages/turbo-workspaces/src/getWorkspaceDetails.ts35
1 files changed, 35 insertions, 0 deletions
diff --git a/packages/turbo-workspaces/src/getWorkspaceDetails.ts b/packages/turbo-workspaces/src/getWorkspaceDetails.ts
new file mode 100644
index 0000000..ad86a97
--- /dev/null
+++ b/packages/turbo-workspaces/src/getWorkspaceDetails.ts
@@ -0,0 +1,35 @@
+import { ConvertError } from "./errors";
+import managers from "./managers";
+import { Project } from "./types";
+import { directoryInfo } from "./utils";
+
+export default async function getWorkspaceDetails({
+ root,
+}: {
+ root: string;
+}): Promise<Project> {
+ const { exists, absolute: workspaceRoot } = directoryInfo({
+ directory: root,
+ });
+ if (!exists) {
+ throw new ConvertError(
+ `Could not find directory at ${workspaceRoot}. Ensure the directory exists.`,
+ {
+ type: "invalid_directory",
+ }
+ );
+ }
+
+ for (const { detect, read } of Object.values(managers)) {
+ if (await detect({ workspaceRoot })) {
+ return read({ workspaceRoot });
+ }
+ }
+
+ throw new ConvertError(
+ "Could not determine package manager. Add `packageManager` to `package.json` or ensure a lockfile is present.",
+ {
+ type: "package_manager-unable_to_detect",
+ }
+ );
+}