projen
Version:
CDK for software projects
33 lines • 4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Clobber = void 0;
const component_1 = require("./component");
class Clobber extends component_1.Component {
constructor(project) {
super(project);
const task = this.project.addTask("clobber", {
description: "hard resets to HEAD of origin and cleans the local repo",
condition: "git diff --exit-code > /dev/null",
env: {
BRANCH: "$(git branch --show-current)",
},
});
task.execArgs(["git", "checkout", "-b", "scratch"], {
name: 'save current HEAD in "scratch" branch',
});
// `$BRANCH` needs a shell to expand
task.exec('git checkout "$BRANCH"');
task.execArgs(["git", "fetch", "origin"], {
name: "fetch latest changes from origin",
});
task.exec('git reset --hard "origin/$BRANCH"', {
name: "hard reset to origin commit",
});
task.execArgs(["git", "clean", "-fdx"], {
name: "clean all untracked files",
});
task.say('ready to rock! (unpushed commits are under the "scratch" branch)');
}
}
exports.Clobber = Clobber;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvYmJlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jbG9iYmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUF3QztBQUd4QyxNQUFhLE9BQVEsU0FBUSxxQkFBUztJQUNwQyxZQUFZLE9BQWdCO1FBQzFCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVmLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtZQUMzQyxXQUFXLEVBQUUseURBQXlEO1lBQ3RFLFNBQVMsRUFBRSxrQ0FBa0M7WUFDN0MsR0FBRyxFQUFFO2dCQUNILE1BQU0sRUFBRSw4QkFBOEI7YUFDdkM7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLEVBQUU7WUFDbEQsSUFBSSxFQUFFLHVDQUF1QztTQUM5QyxDQUFDLENBQUM7UUFDSCxvQ0FBb0M7UUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxFQUFFO1lBQ3hDLElBQUksRUFBRSxrQ0FBa0M7U0FDekMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxtQ0FBbUMsRUFBRTtZQUM3QyxJQUFJLEVBQUUsNkJBQTZCO1NBQ3BDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUFFO1lBQ3RDLElBQUksRUFBRSwyQkFBMkI7U0FDbEMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEdBQUcsQ0FDTixrRUFBa0UsQ0FDbkUsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQTlCRCwwQkE4QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwiLi9jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgUHJvamVjdCB9IGZyb20gXCIuL3Byb2plY3RcIjtcblxuZXhwb3J0IGNsYXNzIENsb2JiZXIgZXh0ZW5kcyBDb21wb25lbnQge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0KSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICBjb25zdCB0YXNrID0gdGhpcy5wcm9qZWN0LmFkZFRhc2soXCJjbG9iYmVyXCIsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcImhhcmQgcmVzZXRzIHRvIEhFQUQgb2Ygb3JpZ2luIGFuZCBjbGVhbnMgdGhlIGxvY2FsIHJlcG9cIixcbiAgICAgIGNvbmRpdGlvbjogXCJnaXQgZGlmZiAtLWV4aXQtY29kZSA+IC9kZXYvbnVsbFwiLFxuICAgICAgZW52OiB7XG4gICAgICAgIEJSQU5DSDogXCIkKGdpdCBicmFuY2ggLS1zaG93LWN1cnJlbnQpXCIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdGFzay5leGVjQXJncyhbXCJnaXRcIiwgXCJjaGVja291dFwiLCBcIi1iXCIsIFwic2NyYXRjaFwiXSwge1xuICAgICAgbmFtZTogJ3NhdmUgY3VycmVudCBIRUFEIGluIFwic2NyYXRjaFwiIGJyYW5jaCcsXG4gICAgfSk7XG4gICAgLy8gYCRCUkFOQ0hgIG5lZWRzIGEgc2hlbGwgdG8gZXhwYW5kXG4gICAgdGFzay5leGVjKCdnaXQgY2hlY2tvdXQgXCIkQlJBTkNIXCInKTtcbiAgICB0YXNrLmV4ZWNBcmdzKFtcImdpdFwiLCBcImZldGNoXCIsIFwib3JpZ2luXCJdLCB7XG4gICAgICBuYW1lOiBcImZldGNoIGxhdGVzdCBjaGFuZ2VzIGZyb20gb3JpZ2luXCIsXG4gICAgfSk7XG4gICAgdGFzay5leGVjKCdnaXQgcmVzZXQgLS1oYXJkIFwib3JpZ2luLyRCUkFOQ0hcIicsIHtcbiAgICAgIG5hbWU6IFwiaGFyZCByZXNldCB0byBvcmlnaW4gY29tbWl0XCIsXG4gICAgfSk7XG4gICAgdGFzay5leGVjQXJncyhbXCJnaXRcIiwgXCJjbGVhblwiLCBcIi1mZHhcIl0sIHtcbiAgICAgIG5hbWU6IFwiY2xlYW4gYWxsIHVudHJhY2tlZCBmaWxlc1wiLFxuICAgIH0pO1xuICAgIHRhc2suc2F5KFxuICAgICAgJ3JlYWR5IHRvIHJvY2shICh1bnB1c2hlZCBjb21taXRzIGFyZSB1bmRlciB0aGUgXCJzY3JhdGNoXCIgYnJhbmNoKScsXG4gICAgKTtcbiAgfVxufVxuIl19