fix(core): update

This commit is contained in:
2019-06-18 15:41:03 +02:00
parent ff0318534f
commit 872f2354c5
6 changed files with 44 additions and 152 deletions

View File

@@ -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';

View File

@@ -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]);
}
}