@digigov/cli 1.1.0 → 1.1.1-rc.10

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.
package/README.md CHANGED
@@ -19,7 +19,7 @@ $ npm install -g @digigov/cli
19
19
  $ digigov COMMAND
20
20
  running command...
21
21
  $ digigov (-v|--version|version)
22
- @digigov/cli/1.1.0 darwin-arm64 node-v18.19.0
22
+ @digigov/cli/1.1.1-rc.10 darwin-arm64 node-v16.20.2
23
23
  $ digigov --help [COMMAND]
24
24
  USAGE
25
25
  $ digigov COMMAND
package/lib.js CHANGED
@@ -1,228 +1,17 @@
1
- const pkgUp = require("pkg-up");
2
1
  const fs = require("fs-extra");
3
2
  const path = require("path");
4
- const merge = require("deepmerge");
5
3
  const execa = require("execa");
6
4
  const glob = require("glob");
7
5
  const { Command } = require("@oclif/command");
6
+ const {
7
+ makeConfig,
8
+ resolveLocalPackages,
9
+ aliases,
10
+ resolveProject,
11
+ resolveWorkspace,
12
+ extractCommandArgs
13
+ } = require("./resolveProject");
8
14
 
9
- function resolveProject(dir) {
10
- const pkg = pkgUp.sync({ cwd: dir || process.cwd() });
11
- const root = path.dirname(pkg);
12
- let externalLockFile = false;
13
- if (
14
- fs.existsSync(path.join(root, "yarn.lock")) ||
15
- fs.existsSync(path.join(root, "package-lock.json"))
16
- ) {
17
- externalLockFile = true;
18
- }
19
- let distDir = "dist";
20
- let src = "src";
21
- let workspace = {};
22
- if (!fs.existsSync(path.join(root, src))) {
23
- src = ".";
24
- distDir = ".";
25
- }
26
- // project type heuristics
27
- let isLib = false;
28
- let isWorkspace = false;
29
- let isApp = false;
30
- let isDocs = false;
31
-
32
- if (
33
- fs.existsSync(path.join(root, "next.config.js")) ||
34
- fs.existsSync(path.join(root, "pages"))
35
- ) {
36
- isApp = true;
37
- }
38
- if (
39
- fs.existsSync(path.join(root, "docusaurus.config.js")) &&
40
- fs.existsSync(path.join(root, "docs"))
41
- ) {
42
- isDocs = true;
43
- }
44
- if (fs.existsSync(path.join(root, "src")) && !isApp) {
45
- isLib = true;
46
- }
47
-
48
- const rush = resolveWorkspace();
49
- if (rush) {
50
- isWorkspace = true;
51
- workspace = {
52
- config: rush,
53
- root: rush.rushJsonFolder,
54
- };
55
- }
56
-
57
- const isNodeLib = !isLib && !isApp && !isWorkspace && !isDocs;
58
-
59
- let ignore = path.resolve(root, ".gitignore");
60
- if (!fs.existsSync(ignore) && workspace.root) {
61
- ignore = path.resolve(workspace.root, ".gitignore");
62
- }
63
-
64
- if (!fs.existsSync(ignore)) {
65
- ignore = null;
66
- }
67
-
68
- let digigov = {};
69
- if (fs.existsSync(path.join(root, "digigovrc.json"))) {
70
- digigov = require(path.join(root, "digigovrc.json"));
71
- }
72
- if (fs.existsSync(path.join(root, "digigovrc.js"))) {
73
- digigov = require(path.join(root, "digigovrc.js"));
74
- }
75
-
76
- const packageJS = require(pkg);
77
-
78
- const devDependencies = packageJS.devDependencies || {};
79
- const dependencies = packageJS.dependencies || {};
80
- const peerDependencies = packageJS.peerDependencies || {};
81
- const isTs = Object.keys(devDependencies).includes("typescript");
82
- const allDependencies = {
83
- ...dependencies,
84
- ...devDependencies,
85
- ...peerDependencies,
86
- };
87
- // hook applies extra properties based on project type
88
- return {
89
- name: packageJS.name,
90
- isTs,
91
- isLib,
92
- isApp,
93
- isDocs,
94
- isWorkspace,
95
- isNodeLib,
96
- distDir,
97
- package: packageJS,
98
- dependencies: allDependencies,
99
- src,
100
- root,
101
- workspace,
102
- ignore,
103
- digigov,
104
- externalLockFile,
105
- };
106
- }
107
-
108
- function localRequire(file, dflt) {
109
- const project = resolveProject();
110
- const filePath = path.join(project.root, file);
111
- if (fs.existsSync(filePath)) {
112
- return require(filePath);
113
- }
114
- return dflt;
115
- }
116
-
117
- function makeConfig(file, cfg) {
118
- let hook = {};
119
- if (file && typeof file !== "string") {
120
- hook = file;
121
- } else if (typeof file === "string") {
122
- hook = localRequire(file, {});
123
- }
124
- if (typeof hook === "function") {
125
- return hook(cfg);
126
- }
127
- if (hook) {
128
- return merge(cfg, hook);
129
- }
130
- }
131
-
132
- function resolveWorkspace(dir) {
133
- try {
134
- const rushLib = require("@microsoft/rush-lib");
135
- const rushConfiguration = rushLib.RushConfiguration.loadFromDefaultLocation(
136
- {
137
- startingFolder: process.cwd(),
138
- },
139
- );
140
- return rushConfiguration;
141
- } catch (err) {
142
- // console.log(err);
143
- }
144
- }
145
-
146
- /*
147
- Identify if project running the command from, is lerna-enabled. If so, return
148
- lerna registered projects metadata.
149
- */
150
- function resolveLocalPackages(dir, dependencies) {
151
- const packages = {};
152
- const rush = resolveWorkspace(dir);
153
- if (rush) {
154
- rush.projects.forEach((p) => {
155
- if (dependencies.includes(p.packageName)) {
156
- packages[p.packageName] = resolveProject(p.projectFolder);
157
- }
158
- });
159
- return packages;
160
- }
161
- return {};
162
- }
163
-
164
- /**
165
- * Map `resolveLocalPackages` result to a babel/jest compatible package aliases
166
- * object. Use only packages which are declared as a dependency for the current
167
- * project
168
- */
169
- function aliases(dir, absolute = false) {
170
- const aliases = {};
171
- const project = resolveProject(dir);
172
- const depKeys = ["dependencies", "peerDependencies", "devDependencies"];
173
- const root = project.root;
174
- const deps = depKeys.reduce((deps, key) => {
175
- return deps.concat(Object.keys(project.package[key] || {}));
176
- }, []);
177
- const packages = resolveLocalPackages(project.root, deps);
178
- Object.keys(packages).forEach((key) => {
179
- const project = packages[key];
180
- if (
181
- deps.includes(project.name) &&
182
- project.package.devDependencies &&
183
- project.package.devDependencies["@digigov/cli-build"] &&
184
- project.isWorkspace
185
- ) {
186
- const projectSrc = path.join(project.root, project.src);
187
- if (absolute) {
188
- aliases[project.name] = path.resolve(root, projectSrc);
189
- } else {
190
- aliases[project.name] = projectSrc;
191
- }
192
- }
193
- });
194
- if (absolute) {
195
- aliases[project.name] = path.resolve(root, project.src);
196
- } else {
197
- aliases[project.name] = project.src;
198
- }
199
- return aliases;
200
- }
201
-
202
- const extractCommandArgs = (config, commandArgs) => {
203
- const vars = Object.values(args).reduce((values, v) => {
204
- return {
205
- ...values,
206
- ...(v.default && { [v.var]: v.default }),
207
- };
208
- }, {});
209
-
210
- const exclude = [];
211
- commandArgs.forEach((arg, idx) => {
212
- if (exclude.includes(idx)) {
213
- return;
214
- }
215
- if (args[arg]) {
216
- if (args[arg].type) {
217
- vars[args[arg].var] = args[arg].type(commandArgs[idx + 1]);
218
- exclude.push(idx + 1);
219
- } else {
220
- vars[args[arg].var] = true;
221
- }
222
- }
223
- });
224
- return vars;
225
- };
226
15
 
227
16
  class DigigovCommand extends Command {
228
17
  async exec(script, args, config) {
@@ -1 +1 @@
1
- {"version":"1.1.0","commands":{"hello":{"id":"hello","description":"describe the command here","pluginName":"@digigov/cli","pluginType":"core","aliases":[],"examples":["$ digigov hello\nhello world from ./src/hello.ts!\n"],"flags":{},"args":[{"name":"file"}]}}}
1
+ {"version":"1.1.1-rc.10","commands":{"hello":{"id":"hello","description":"describe the command here","pluginName":"@digigov/cli","pluginType":"core","aliases":[],"examples":["$ digigov hello\nhello world from ./src/hello.ts!\n"],"flags":{},"args":[{"name":"file"}]}}}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@digigov/cli",
3
3
  "description": "CLI for Digigov apps and libs with plugin support",
4
- "version": "1.1.0",
4
+ "version": "1.1.1-rc.10",
5
5
  "author": "GRNET Devs <devs@lists.grnet.gr>",
6
6
  "bin": {
7
7
  "digigov": "./bin/run"