fix(core): update
This commit is contained in:
27
ts/index.ts
27
ts/index.ts
@@ -1,28 +1,3 @@
|
||||
import plugins = require('./smartgit.plugins');
|
||||
|
||||
import { GitRepo } from './smartgit.classes.gitrepo';
|
||||
export { GitRepo };
|
||||
|
||||
/**
|
||||
* creates a new GitRepo Instance after cloning a project
|
||||
*/
|
||||
export const createRepoFromClone = async (fromArg: string, toArg: string): Promise<GitRepo> => {
|
||||
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 const createRepoFromInit = async (destinationDirArg: string): Promise<GitRepo> => {
|
||||
const done = q.defer<GitRepo>();
|
||||
plugins.smartfile.fs.ensureDir(destinationDirArg);
|
||||
plugins.shelljs.exec(`cd ${destinationDirArg} && git init`);
|
||||
let newRepo = new GitRepo(destinationDirArg);
|
||||
done.resolve(newRepo);
|
||||
return done.promise;
|
||||
};
|
||||
export * from './smartgit.classes.gitrepo';
|
||||
|
@@ -9,16 +9,51 @@ export class GitRepo {
|
||||
* creates a new GitRepo Instance after cloning a project
|
||||
*/
|
||||
public static async createRepoFromClone(fromArg: string, toArg: string): Promise<GitRepo> {
|
||||
return new GitRepo();
|
||||
const dirArg = plugins.path.resolve(toArg);
|
||||
const ngRespository = await plugins.nodegit.Clone.clone(fromArg, toArg, {
|
||||
bare: 0,
|
||||
checkoutBranch: 'master'
|
||||
});
|
||||
return new GitRepo(ngRespository);
|
||||
}
|
||||
|
||||
/**
|
||||
* creates a new GitRepo instance after initializing a new Git Repository
|
||||
*/
|
||||
public static async createRepoFromInit(destinationDirArg: string): Promise<GitRepo> {
|
||||
return new GitRepo();
|
||||
public static async createNewRepoInDir(dirArg: string): Promise<GitRepo> {
|
||||
dirArg = plugins.path.resolve(dirArg);
|
||||
const ngRepository = await plugins.nodegit.Repository.init(dirArg, 0);
|
||||
return new GitRepo(ngRepository);
|
||||
}
|
||||
|
||||
public static async openRepoAt(dirArg: string) {
|
||||
dirArg = plugins.path.resolve(dirArg);
|
||||
const ngRepository = await plugins.nodegit.Repository.open(dirArg);
|
||||
return new GitRepo(ngRepository);
|
||||
}
|
||||
|
||||
// INSTANCE
|
||||
nodegitRepo;
|
||||
public nodegitRepo: plugins.nodegit.Repository;
|
||||
|
||||
constructor(nodegitRepoArg: plugins.nodegit.Repository) {
|
||||
this.nodegitRepo = nodegitRepoArg;
|
||||
}
|
||||
|
||||
/**
|
||||
* lists remotes
|
||||
*/
|
||||
public async listRemotes(): Promise<string[]> {
|
||||
return this.nodegitRepo.getRemotes();
|
||||
}
|
||||
|
||||
/**
|
||||
* gets the url for a specific remote
|
||||
*/
|
||||
public async getUrlForRemote(remoteName: string) {
|
||||
const ngRemote = await this.nodegitRepo.getRemote(remoteName);
|
||||
return ngRemote.url;
|
||||
}
|
||||
|
||||
public async pushBranchToRemote(branchName: string, remoteName: string) {
|
||||
await this.nodegitRepo.checkoutBranch(branchName);
|
||||
const ngRemote = await this.nodegitRepo.getRemote(remoteName);
|
||||
ngRemote.push([branchName]);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user