git-release-manager
Version:
A tool to generate release notes from git commit history
56 lines • 2.25 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ReleaseManager = void 0;
const simple_git_1 = __importDefault(require("simple-git"));
const fs_1 = require("fs");
const git = (0, simple_git_1.default)();
class ReleaseManager {
// createVersion()
// createGitHubRelease()
// readReleaseNotesFromFile()
async createVersion(version, options) {
const releaseManager = new ReleaseManager();
// Create release branch if requested
if (options.branch) {
const branchName = `release/v${version}`;
await git.checkoutLocalBranch(branchName);
console.log(`Created release branch: ${branchName}`);
}
// Handle release notes
let releaseNotes = '';
if (options.note) {
releaseNotes = options.note;
}
else if (options.noteFile) {
releaseNotes = await releaseManager.readReleaseNotesFromFile(options.noteFile);
}
// Create GitHub release if draft option is specified
if (options.draft) {
await releaseManager.createGitHubRelease(version, releaseNotes, true);
console.log(`Created draft release for version ${version}`);
}
console.log(`Version ${version} created successfully`);
}
async createGitHubRelease(version, notes, draft) {
// GitHub API implementation would go here
// This is a placeholder for actual GitHub release creation
console.log(`Would create GitHub release for ${version}`);
}
async readReleaseNotesFromFile(filePath) {
try {
return (0, fs_1.readFileSync)(filePath, 'utf8');
}
catch (error) {
if (error instanceof Error) {
throw new Error(`Could not read release notes file: ${error.message}`);
}
// Handle case where error is not an Error object
throw new Error(`Could not read release notes file: ${String(error)}`);
}
}
}
exports.ReleaseManager = ReleaseManager;
//# sourceMappingURL=ReleaseManager.js.map