| @@ -424,6 +424,96 @@ var __runcmd = function(label){ | |||
| , 'is-git-repo' : (dir)=>{ | |||
| return nodeShellExec('git', ['-C', dir.name, 'rev-parse'], { stdio : 'ignore'}) | |||
| } | |||
| , 'add' : (remotename, url) => { | |||
| remotename = remotename || processedArgs._[1] | |||
| url = url || processedArgs._[2] | |||
| var branch = 'master'; | |||
| var serial_perform_git_add = (repo)=>{ | |||
| var options = { cwd : repo } | |||
| // console.log(repo) | |||
| return [ | |||
| ['git', ['remote', 'add', remotename, url + '/' + repo], { cwd : repo }] | |||
| , ['git', ['pull', remotename, branch], { cwd : repo }] | |||
| , ['git', ['branch', `--set-upstream-to=${remotename}/${branch}`, branch], { cwd : repo }] | |||
| ] | |||
| } | |||
| var x = (args)=>{ | |||
| return ()=>{ | |||
| // console.log(args) | |||
| return nodeShellExec.apply(null, args) | |||
| } | |||
| // return Promise.resolve(true) | |||
| } | |||
| var perform_git_add = (dir)=>{ | |||
| op['is-git-repo'](dir).then((code)=>{ | |||
| // console.log(code) | |||
| if(code) { | |||
| nodeShellExec('git',['remote', 'get-url', remotename], { cwd : dir.name, stdio : 'ignore' }).then(()=>{ | |||
| console.log('skipped : ' + dir.name + ', reason : No remote named origin') | |||
| }) | |||
| .catch((e)=>{ | |||
| any( serial_perform_git_add(dir.name).map(x) ) | |||
| }) | |||
| } | |||
| // else console.log('Skipped : Not a Git Repo : ' + dir.name) | |||
| }).catch((e)=>{ | |||
| // console.log('Failed : ' + dir.name) | |||
| }) | |||
| } | |||
| const { readdir } = require("fs").promises | |||
| const dirs = async (perform, path) => { | |||
| for (const dir of await readdir(path || process.cwd(), { withFileTypes: true })) { | |||
| if (dir.isDirectory()) perform(dir) | |||
| } | |||
| } | |||
| dirs(perform_git_add) | |||
| } | |||
| , 'remove' : (remotename) => { | |||
| remotename = remotename || processedArgs._[1] | |||
| var serial_perform_git_remove = (repo)=>{ | |||
| var options = { cwd : repo } | |||
| // console.log(repo) | |||
| return [ | |||
| ['git', ['remote', 'remove', remotename], { cwd : repo }] | |||
| ] | |||
| } | |||
| var x = (args)=>{ | |||
| return ()=>{ | |||
| // console.log(args) | |||
| return nodeShellExec.apply(null, args) | |||
| } | |||
| // return Promise.resolve(true) | |||
| } | |||
| var perform_git_remove = (dir)=>{ | |||
| op['is-git-repo'](dir).then((code)=>{ | |||
| // console.log(code) | |||
| if(code) { | |||
| nodeShellExec('git',['remote', 'get-url', remotename], { cwd : dir.name, stdio : 'ignore' }).then(()=>{ | |||
| any( serial_perform_git_remove(dir.name).map(x) ) | |||
| }) | |||
| .catch((e)=>{ | |||
| console.log('skipped : ' + dir.name + ', reason : No remote named origin') | |||
| }) | |||
| } | |||
| // else console.log('Skipped : Not a Git Repo : ' + dir.name) | |||
| }).catch((e)=>{ | |||
| // console.log('Failed : ' + dir.name) | |||
| }) | |||
| } | |||
| const { readdir } = require("fs").promises | |||
| const dirs = async (perform, path) => { | |||
| for (const dir of await readdir(path || process.cwd(), { withFileTypes: true })) { | |||
| if (dir.isDirectory()) perform(dir) | |||
| } | |||
| } | |||
| dirs(perform_git_remove) | |||
| } | |||
| , 'init-gitea' : (user) => { | |||
| user = user || processedArgs._[1] | |||
| if(!user) throw 'User name required' | |||
| @@ -544,6 +634,12 @@ var __runcmd = function(label){ | |||
| } | |||
| ) | |||
| } | |||
| , 'isInstalled' : ()=>{ | |||
| return nodeShellExec('where', [processedArgs._[1]], { inherit : true} ).then(()=>{ | |||
| console.log(processedArgs._[1] + ' exists.') | |||
| return true; | |||
| }); | |||
| } | |||
| , 'npmi' : ()=>{ | |||
| var tasks = []; | |||
| gitRepos.forEach(repo => { | |||