ogit
Version:
A lazy developer's Git CLI made simple. Makes using git on cloud IDEs (i.e. C9) a walk in the park.
96 lines (95 loc) • 3.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
require("reflect-metadata");
const json_object_mapper_1 = require("json-object-mapper");
const GitFile_1 = require("./GitFile");
class GitFilesDeserializer {
constructor() {
this.deserialize = (files) => {
const gitFiles = new Map();
for (let file of files) {
const gitFile = new GitFile_1.GitFile(file.path, file.working_dir, file.index);
if (ChangeTypes.Renamed === file.index) {
gitFile.path = file.path.split(' ').slice(-1)[0];
}
gitFiles.set(gitFile.id, gitFile);
}
return gitFiles;
};
}
}
var ChangeTypes;
(function (ChangeTypes) {
ChangeTypes["Deleted"] = "D";
ChangeTypes["New"] = "?";
ChangeTypes["Modified"] = "M";
ChangeTypes["Added"] = "A";
ChangeTypes["Renamed"] = "R";
})(ChangeTypes = exports.ChangeTypes || (exports.ChangeTypes = {}));
class GitStatus {
constructor() {
this.currentBranch = undefined;
this.trackingBranch = undefined;
this._files = new Map();
this.notAdded = undefined;
this.conflicted = undefined;
// modified: GitFile[] = this.getFiles('M');
this.renamed = undefined;
this.staged = undefined;
this.ahead = undefined;
this.behind = undefined;
}
get all() {
return Array.from(this._files.values());
}
get deleted() {
return this.getFiles(ChangeTypes.Deleted);
}
get created() {
return this.getFiles(ChangeTypes.New);
}
get added() {
return this.getFiles(ChangeTypes.Added);
}
get modified() {
return this.getFiles(ChangeTypes.Modified);
}
getFiles(type) {
const files = [];
this._files.forEach(file => {
if (file.changeType === type) {
files.push(file);
}
});
return files;
}
}
tslib_1.__decorate([
json_object_mapper_1.JsonProperty({ name: 'current' })
], GitStatus.prototype, "currentBranch", void 0);
tslib_1.__decorate([
json_object_mapper_1.JsonProperty({ name: 'tracking' })
], GitStatus.prototype, "trackingBranch", void 0);
tslib_1.__decorate([
json_object_mapper_1.JsonProperty({ name: 'files', deserializer: GitFilesDeserializer })
], GitStatus.prototype, "_files", void 0);
tslib_1.__decorate([
json_object_mapper_1.JsonProperty({ name: 'not_added' })
], GitStatus.prototype, "notAdded", void 0);
tslib_1.__decorate([
json_object_mapper_1.JsonProperty({ name: 'conflicted' })
], GitStatus.prototype, "conflicted", void 0);
tslib_1.__decorate([
json_object_mapper_1.JsonProperty({ name: 'renamed' })
], GitStatus.prototype, "renamed", void 0);
tslib_1.__decorate([
json_object_mapper_1.JsonProperty({ name: 'staged' })
], GitStatus.prototype, "staged", void 0);
tslib_1.__decorate([
json_object_mapper_1.JsonProperty()
], GitStatus.prototype, "ahead", void 0);
tslib_1.__decorate([
json_object_mapper_1.JsonProperty()
], GitStatus.prototype, "behind", void 0);
exports.GitStatus = GitStatus;