cob-cli 2.33.1 → 2.35.0
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/bin/cob-cli.js +7 -0
- package/lib/commands/getRepos.js +40 -0
- package/package.json +1 -1
package/bin/cob-cli.js
CHANGED
|
@@ -5,6 +5,7 @@ require("./handleAutoComplete");
|
|
|
5
5
|
|
|
6
6
|
const program = require('commander');
|
|
7
7
|
|
|
8
|
+
const getRepos = require("../lib/commands/getRepos");
|
|
8
9
|
const init = require("../lib/commands/init");
|
|
9
10
|
const customize = require("../lib/commands/customize");
|
|
10
11
|
const test = require("../lib/commands/test");
|
|
@@ -20,6 +21,12 @@ program
|
|
|
20
21
|
.option('--setup','add autocomplete to system profiles')
|
|
21
22
|
.option('--cleanup', 'remove autocomplete from system profiles')
|
|
22
23
|
|
|
24
|
+
program
|
|
25
|
+
.command('getRepos')
|
|
26
|
+
.description('clone (or update) all cob accessible repositories on gitlab,')
|
|
27
|
+
.arguments('<token>', 'private token for gitlab (whit api read permission)')
|
|
28
|
+
.action( getRepos );
|
|
29
|
+
|
|
23
30
|
program
|
|
24
31
|
.command('init')
|
|
25
32
|
.usage("<servername>")
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
const colors = require("colors");
|
|
2
|
+
const path = require("path");
|
|
3
|
+
const axios = require("axios");
|
|
4
|
+
const git = require("simple-git");
|
|
5
|
+
const fs = require("fs-extra");
|
|
6
|
+
|
|
7
|
+
async function getRepos(token) {
|
|
8
|
+
console.log("Clone/update all accessible repos ...");
|
|
9
|
+
|
|
10
|
+
try {
|
|
11
|
+
const response = await axios.get( "https://gitlab.com/api/v4/projects?membership=true\&private_token="+token+"\&per_page=100&&archived=false&search=server_", { headers: { Accept: "application/json", "Accept-Encoding": "identity" } } )
|
|
12
|
+
serverRepos = response.data
|
|
13
|
+
if (serverRepos.length == 0) throw new Error("\nError: ".red + " no server repo found\n");
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
const baseDir = process.cwd();
|
|
17
|
+
|
|
18
|
+
for (const serverRepo of serverRepos) {
|
|
19
|
+
if (!fs.existsSync(path.resolve(".",serverRepo.name))) {
|
|
20
|
+
console.log(" git clone " + serverRepo.ssh_url_to_repo);
|
|
21
|
+
await git().clone(serverRepo.ssh_url_to_repo);
|
|
22
|
+
|
|
23
|
+
} else {
|
|
24
|
+
console.log(" git pull " + serverRepo.ssh_url_to_repo);
|
|
25
|
+
process.chdir(serverRepo.name);
|
|
26
|
+
try {
|
|
27
|
+
await git().pull();
|
|
28
|
+
} catch (error) {
|
|
29
|
+
console.warn("Warning: ",serverRepo.name," -> ",error)
|
|
30
|
+
}
|
|
31
|
+
process.chdir(baseDir);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
console.log( colors.green("\nDone"));
|
|
36
|
+
} catch (err) {
|
|
37
|
+
console.error("\n", err.message);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
module.exports = getRepos;
|
package/package.json
CHANGED