Browse Source

enhanced remove and add

production
Pradeep Bhaskaran 4 years ago
parent
commit
2dce1afa85
1 changed files with 96 additions and 0 deletions
  1. 96
    0
      index.js

+ 96
- 0
index.js View File

@@ -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 => {

Loading…
Cancel
Save