@vaharoni/devops 1.2.2 → 1.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -18,6 +18,6 @@ EXAMPLES
18
18
  ${keyExamples}
19
19
  `;
20
20
  async function run(cmdObj) {
21
- cmdObj.executorFromEnv(`${execShPath} db prisma ${cmdObj.args.join(" ")}`, { checkEnvYaml: false }).spawn();
21
+ cmdObj.executorFromEnv(`${execShPath} db bunx prisma ${cmdObj.args.join(" ")}`, { checkEnvYaml: false }).spawn();
22
22
  }
23
23
  export const prisma = { oneLiner, keyExamples, run };
@@ -1 +1 @@
1
- {"version":3,"file":"process-pyproject-toml.d.ts","sourceRoot":"","sources":["../../../src/libs/discovery/process-pyproject-toml.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2B,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AASxE,wBAAgB,gBAAgB,gCAqC/B"}
1
+ {"version":3,"file":"process-pyproject-toml.d.ts","sourceRoot":"","sources":["../../../src/libs/discovery/process-pyproject-toml.ts"],"names":[],"mappings":"AAGA,OAAO,EAA2B,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAUxE,wBAAgB,gBAAgB,gCAkD/B"}
@@ -1,40 +1,49 @@
1
1
  import chalk from "chalk";
2
+ import fs from "fs";
2
3
  import { globSync } from "glob";
3
4
  import { packageFilePythonSchema } from "../../types";
4
5
  import { PackageDataProcessor } from "./process-common";
5
6
  import TOML from "@iarna/toml";
6
7
  import path from "path";
7
8
  const rootPath = process.env.MONOREPO_ROOT || process.cwd();
9
+ const rootPyprojectPath = path.join(rootPath, "pyproject.toml");
8
10
  const _workspaces = {};
9
11
  let _workspacesLoaded = false;
10
12
  export function pythonWorkspaces() {
11
- if (!_workspacesLoaded) {
12
- const allPyprojectTomls = globSync(path.join(rootPath, "**/*/pyproject.toml"));
13
- const processor = new PackageDataProcessor({
14
- language: "python",
15
- pathList: allPyprojectTomls,
16
- zodSchema: packageFilePythonSchema,
17
- fileParser: TOML.parse,
18
- nameExtractor: (data) => data.project.name,
19
- });
20
- processor
21
- .convert((data) => {
22
- const deployment = data.tool?.devops?.deployment;
23
- const scripts = data.tool?.devops?.scripts;
24
- const dependencyNames = data.project.dependencies ?? [];
25
- return {
26
- scripts,
27
- deployment,
28
- dependencyNames: processor.filterDependencies(dependencyNames),
29
- };
30
- })
31
- .forEach((pkgData) => {
32
- _workspaces[pkgData.name] = pkgData;
33
- });
34
- console.warn(chalk.yellow(
35
- // prettier-ignore
36
- `Python workspace discovery initialized. Workspaces found: ${Object.keys(_workspaces).join(", ")}`));
13
+ if (_workspacesLoaded)
14
+ return _workspaces;
15
+ // No root pyproject.toml means no Python workspaces - skip discovery
16
+ if (!fs.existsSync(rootPyprojectPath)) {
37
17
  _workspacesLoaded = true;
18
+ return _workspaces;
38
19
  }
20
+ const rootPyproject = TOML.parse(fs.readFileSync(rootPyprojectPath, "utf8"));
21
+ const workspaceMembers = rootPyproject?.tool?.uv?.workspace?.members ?? [];
22
+ const allPyprojectTomls = workspaceMembers.flatMap((member) => globSync(path.join(rootPath, member, "pyproject.toml")));
23
+ const processor = new PackageDataProcessor({
24
+ language: "python",
25
+ pathList: allPyprojectTomls,
26
+ zodSchema: packageFilePythonSchema,
27
+ fileParser: TOML.parse,
28
+ nameExtractor: (data) => data.project.name,
29
+ });
30
+ processor
31
+ .convert((data) => {
32
+ const deployment = data.tool?.devops?.deployment;
33
+ const scripts = data.tool?.devops?.scripts;
34
+ const dependencyNames = data.project.dependencies ?? [];
35
+ return {
36
+ scripts,
37
+ deployment,
38
+ dependencyNames: processor.filterDependencies(dependencyNames),
39
+ };
40
+ })
41
+ .forEach((pkgData) => {
42
+ _workspaces[pkgData.name] = pkgData;
43
+ });
44
+ console.warn(chalk.yellow(
45
+ // prettier-ignore
46
+ `Python workspace discovery initialized. Workspaces found: ${Object.keys(_workspaces).join(", ")}`));
47
+ _workspacesLoaded = true;
39
48
  return _workspaces;
40
49
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vaharoni/devops",
3
3
  "type": "module",
4
- "version": "1.2.2",
4
+ "version": "1.2.7",
5
5
  "description": "Devops utility",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
@@ -23,7 +23,7 @@ EXAMPLES
23
23
 
24
24
  async function run(cmdObj: CLICommandParser) {
25
25
  cmdObj.executorFromEnv(
26
- `${execShPath} db prisma ${cmdObj.args.join(" ")}`,
26
+ `${execShPath} db bunx prisma ${cmdObj.args.join(" ")}`,
27
27
  { checkEnvYaml: false }
28
28
  ).spawn()
29
29
  }
@@ -1,4 +1,5 @@
1
1
  import chalk from "chalk";
2
+ import fs from "fs";
2
3
  import { globSync } from "glob";
3
4
  import { packageFilePythonSchema, type PackageData } from "../../types";
4
5
  import { PackageDataProcessor } from "./process-common";
@@ -6,44 +7,58 @@ import TOML from "@iarna/toml";
6
7
  import path from "path";
7
8
 
8
9
  const rootPath = process.env.MONOREPO_ROOT || process.cwd();
10
+ const rootPyprojectPath = path.join(rootPath, "pyproject.toml");
9
11
  const _workspaces: Record<string, PackageData> = {};
10
12
  let _workspacesLoaded = false;
11
13
 
12
14
  export function pythonWorkspaces() {
13
- if (!_workspacesLoaded) {
14
- const allPyprojectTomls = globSync(
15
- path.join(rootPath, "**/*/pyproject.toml")
16
- );
17
- const processor = new PackageDataProcessor({
18
- language: "python",
19
- pathList: allPyprojectTomls,
20
- zodSchema: packageFilePythonSchema,
21
- fileParser: TOML.parse,
22
- nameExtractor: (data) => data.project.name,
23
- });
15
+ if (_workspacesLoaded) return _workspaces;
24
16
 
25
- processor
26
- .convert((data) => {
27
- const deployment = data.tool?.devops?.deployment;
28
- const scripts = data.tool?.devops?.scripts;
29
- const dependencyNames = data.project.dependencies ?? [];
30
- return {
31
- scripts,
32
- deployment,
33
- dependencyNames: processor.filterDependencies(dependencyNames),
34
- };
35
- })
36
- .forEach((pkgData) => {
37
- _workspaces[pkgData.name] = pkgData;
38
- });
39
-
40
- console.warn(
41
- chalk.yellow(
42
- // prettier-ignore
43
- `Python workspace discovery initialized. Workspaces found: ${Object.keys(_workspaces).join(", ")}`
44
- )
45
- );
17
+ // No root pyproject.toml means no Python workspaces - skip discovery
18
+ if (!fs.existsSync(rootPyprojectPath)) {
46
19
  _workspacesLoaded = true;
20
+ return _workspaces;
47
21
  }
22
+
23
+ const rootPyproject = TOML.parse(
24
+ fs.readFileSync(rootPyprojectPath, "utf8")
25
+ ) as { tool?: { uv?: { workspace?: { members?: string[] } } } };
26
+ const workspaceMembers: string[] =
27
+ rootPyproject?.tool?.uv?.workspace?.members ?? [];
28
+
29
+ const allPyprojectTomls = workspaceMembers.flatMap((member) =>
30
+ globSync(path.join(rootPath, member, "pyproject.toml"))
31
+ );
32
+
33
+ const processor = new PackageDataProcessor({
34
+ language: "python",
35
+ pathList: allPyprojectTomls,
36
+ zodSchema: packageFilePythonSchema,
37
+ fileParser: TOML.parse,
38
+ nameExtractor: (data) => data.project.name,
39
+ });
40
+
41
+ processor
42
+ .convert((data) => {
43
+ const deployment = data.tool?.devops?.deployment;
44
+ const scripts = data.tool?.devops?.scripts;
45
+ const dependencyNames = data.project.dependencies ?? [];
46
+ return {
47
+ scripts,
48
+ deployment,
49
+ dependencyNames: processor.filterDependencies(dependencyNames),
50
+ };
51
+ })
52
+ .forEach((pkgData) => {
53
+ _workspaces[pkgData.name] = pkgData;
54
+ });
55
+
56
+ console.warn(
57
+ chalk.yellow(
58
+ // prettier-ignore
59
+ `Python workspace discovery initialized. Workspaces found: ${Object.keys(_workspaces).join(", ")}`
60
+ )
61
+ );
62
+ _workspacesLoaded = true;
48
63
  return _workspaces;
49
64
  }