implement new class approach
This commit is contained in:
29
ts/index.ts
29
ts/index.ts
@ -1,3 +1,30 @@
|
||||
import * as q from 'q'
|
||||
import plugins = require("./smartgit.plugins");
|
||||
|
||||
export * from './smartgit.classes.smartgit'
|
||||
import { GitRepo } from './smartgit.classes.gitrepo'
|
||||
export {
|
||||
GitRepo
|
||||
}
|
||||
|
||||
/**
|
||||
* creates a new GitRepo Instance after cloning a project
|
||||
*/
|
||||
export let createRepoFromClone = (fromArg: string, toArg: string) => {
|
||||
let done = q.defer<GitRepo>()
|
||||
plugins.smartfile.fs.ensureDir(toArg)
|
||||
plugins.shelljs.exec(`git clone ${fromArg} ${toArg}`)
|
||||
let newRepo = new GitRepo(toArg)
|
||||
done.resolve(newRepo)
|
||||
return done.promise
|
||||
}
|
||||
|
||||
/**
|
||||
* creates a new GitRepo instance after initializing a new Git Repository
|
||||
*/
|
||||
export let createRepoFromInit = (destinationDirArg: string) => {
|
||||
let done = q.defer<GitRepo>()
|
||||
plugins.smartfile.fs.ensureDir(destinationDirArg)
|
||||
plugins.shelljs.exec(`cd destinationDirArg && git init`)
|
||||
let newRepo = new GitRepo(destinationDirArg)
|
||||
done.resolve(newRepo)
|
||||
}
|
||||
|
@ -1,2 +0,0 @@
|
||||
let shelljs = require("shelljs");
|
||||
import beautylog = require("beautylog");
|
@ -1,5 +0,0 @@
|
||||
import * as plugins from "./smartgit.plugins";
|
||||
|
||||
export let add = {
|
||||
addAll: addAll
|
||||
}
|
@ -31,6 +31,49 @@ export class GitRepo {
|
||||
return done.promise
|
||||
};
|
||||
|
||||
/**
|
||||
* add a remote to the GitRepo
|
||||
*/
|
||||
remoteAdd(remoteNameArg: string, remoteLinkArg: string) {
|
||||
let done = q.defer()
|
||||
if (!remoteNameArg) {
|
||||
let err = new Error('smartgit.remote.add expects a valid remote name')
|
||||
plugins.beautylog.error(err.message)
|
||||
done.reject(err)
|
||||
return done.promise
|
||||
};
|
||||
if (!remoteLinkArg) {
|
||||
let err = new Error()
|
||||
plugins.beautylog.error(err.message)
|
||||
done.reject(err)
|
||||
return done.promise
|
||||
};
|
||||
|
||||
// if everything is all right proceed
|
||||
plugins.shelljs.exec(`cd ${this.repoBase} && git remote add ${remoteNameArg} ${remoteLinkArg}`)
|
||||
done.resolve()
|
||||
return done.promise
|
||||
}
|
||||
|
||||
/**
|
||||
* list remotes for a Gip
|
||||
*/
|
||||
remoteList(dirPathArg) {
|
||||
let done = q.defer()
|
||||
let remotes = {}
|
||||
plugins.shelljs.exec(`cd ${dirPathArg} && git remote -v`)
|
||||
done.resolve(remotes)
|
||||
return done.promise
|
||||
};
|
||||
|
||||
/**
|
||||
* remove remote
|
||||
*/
|
||||
remoteRemove(dirPathArg: string) {
|
||||
let done = q.defer()
|
||||
return done.promise
|
||||
}
|
||||
|
||||
/**
|
||||
* commit all files that are currently staged
|
||||
*/
|
||||
@ -41,6 +84,7 @@ export class GitRepo {
|
||||
return done.promise
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* pull latest changes from remote
|
||||
*/
|
||||
@ -71,9 +115,21 @@ export class GitRepo {
|
||||
this.push()
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* get the current status
|
||||
*/
|
||||
status() {
|
||||
let done = q.defer()
|
||||
plugins.shelljs.exec(`(cd ${this.repoBase} && git status)`)
|
||||
done.resolve()
|
||||
return done.promise
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* creates a new GitRepo Instance after cloning a project
|
||||
*/
|
||||
export let createRepoFromClone = (fromArg: string, toArg: string) => {
|
||||
let done = q.defer<GitRepo>()
|
||||
plugins.smartfile.fs.ensureDir(toArg)
|
||||
@ -83,6 +139,9 @@ export let createRepoFromClone = (fromArg: string, toArg: string) => {
|
||||
return done.promise
|
||||
}
|
||||
|
||||
/**
|
||||
* creates a new GitRepo instance after initializing a new Git Repository
|
||||
*/
|
||||
export let createRepoFromInit = (destinationDirArg: string) => {
|
||||
let done = q.defer<GitRepo>()
|
||||
plugins.smartfile.fs.ensureDir(destinationDirArg)
|
@ -1,65 +0,0 @@
|
||||
import * as plugins from "./smartgit.plugins";
|
||||
import * as helpers from "./smartgit.helpers";
|
||||
|
||||
let add = (dirPathArg,remoteNameArg:string, remoteLinkArg:string) => {
|
||||
let done = plugins.Q.defer();
|
||||
if(!helpers.isGitDirectory(dirPathArg)){
|
||||
let err = new Error("smartgit.remote.add expects a valid git directory");
|
||||
plugins.beautylog.error(err.message);
|
||||
done.reject(err);
|
||||
return done.promise;
|
||||
};
|
||||
if(!remoteNameArg) {
|
||||
let err = new Error("smartgit.remote.add expects a valid remote name");
|
||||
plugins.beautylog.error(err.message);
|
||||
done.reject(err);
|
||||
return done.promise;
|
||||
};
|
||||
if(!remoteLinkArg) {
|
||||
let err = new Error();
|
||||
plugins.beautylog.error(err.message);
|
||||
done.reject(err);
|
||||
return done.promise;
|
||||
};
|
||||
// if everything is all right proceed
|
||||
plugins.shelljs.exec(`cd ${dirPathArg} && git remote add ${remoteNameArg} ${remoteLinkArg}`);
|
||||
remote.list(dirPathArg);
|
||||
done.resolve();
|
||||
return done.promise;
|
||||
};
|
||||
|
||||
let check = (dirPathArg:string, remoteNameArg:string, remoteLinkArg) => {
|
||||
|
||||
}
|
||||
|
||||
let list = (dirPathArg) => {
|
||||
let done = plugins.Q.defer();
|
||||
let remotes = {};
|
||||
if(!helpers.isGitDirectory(dirPathArg)){
|
||||
let err = new Error("smartgit.remote.list expects a valid git directory");
|
||||
plugins.beautylog.error(err.message);
|
||||
done.reject(err);
|
||||
return done.promise;
|
||||
};
|
||||
// if everything is all right proceed
|
||||
plugins.shelljs.exec(`cd ${dirPathArg} && git remote -v`).stdout;
|
||||
done.resolve(remotes);
|
||||
return done.promise;
|
||||
};
|
||||
|
||||
let remove = (dirPathArg:string) => {
|
||||
let done = plugins.Q.defer();
|
||||
if(!helpers.isGitDirectory(dirPathArg)){
|
||||
let err = new Error("smartgit.remote.remove expects a valid git directory");
|
||||
plugins.beautylog.error(err.message);
|
||||
done.reject(err);
|
||||
return done.promise;
|
||||
};
|
||||
// if everything is all right
|
||||
}
|
||||
|
||||
export let remote = {
|
||||
add: add,
|
||||
list: list,
|
||||
remove: remove
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
import * as plugins from "./smartgit.plugins";
|
||||
import * as helpers from "./smartgit.helpers";
|
||||
|
||||
export let status = (dirPathArg:string) => {
|
||||
let done = plugins.Q.defer();
|
||||
if(!helpers.isGitDirectory(dirPathArg)){
|
||||
let err = new Error("smartgit.status expects a valid git directory");
|
||||
plugins.beautylog.error(err.message);
|
||||
done.reject(err);
|
||||
return done.promise;
|
||||
};
|
||||
// if everything seems allright proceed
|
||||
plugins.shelljs.exec(`(cd ${dirPathArg} && git status)`);
|
||||
done.resolve();
|
||||
return done.promise;
|
||||
};
|
Reference in New Issue
Block a user