- use different pen for write logs

- remove default value for configuration, to cleanly fallback to defaults
- rename gitHelper, move dir exists helper
- add reading input values group
- improve warning for configuration
This commit is contained in:
Mike Penz
2020-10-17 19:37:11 +02:00
parent 1e0f6ab49e
commit bd49950417
7 changed files with 78 additions and 76 deletions
-2
View File
@@ -6,9 +6,7 @@ branding:
color: 'green' color: 'green'
inputs: inputs:
configuration: configuration:
required: true
description: 'path to the configuration file' description: 'path to the configuration file'
default: "configuration.json"
path: path:
description: 'the path to runt his action in' description: 'the path to runt his action in'
owner: owner:
Generated Vendored
+38 -35
View File
@@ -146,7 +146,7 @@ exports.DefaultConfiguration = {
/***/ }), /***/ }),
/***/ 9621: /***/ 353:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) { /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict"; "use strict";
@@ -182,39 +182,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
Object.defineProperty(exports, "__esModule", ({ value: true })); Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.createCommandManager = void 0; exports.createCommandManager = void 0;
const exec = __importStar(__webpack_require__(1514)); const exec = __importStar(__webpack_require__(1514));
const fs = __importStar(__webpack_require__(5747));
const io = __importStar(__webpack_require__(7436)); const io = __importStar(__webpack_require__(7436));
const utils_1 = __webpack_require__(918);
function createCommandManager(workingDirectory) { function createCommandManager(workingDirectory) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
return yield GitCommandManager.createCommandManager(workingDirectory); return yield GitCommandManager.createCommandManager(workingDirectory);
}); });
} }
exports.createCommandManager = createCommandManager; exports.createCommandManager = createCommandManager;
function directoryExistsSync(path, required) {
if (!path) {
throw new Error("Arg 'path' must not be empty");
}
let stats;
try {
stats = fs.statSync(path);
}
catch (error) {
if (error.code === 'ENOENT') {
if (!required) {
return false;
}
throw new Error(`Directory '${path}' does not exist`);
}
throw new Error(`Encountered an error when checking whether path '${path}' exists: ${error.message}`);
}
if (stats.isDirectory()) {
return true;
}
else if (!required) {
return false;
}
throw new Error(`Directory '${path}' does not exist`);
}
class GitCommandManager { class GitCommandManager {
// Private constructor; use createCommandManager() // Private constructor; use createCommandManager()
constructor() { constructor() {
@@ -250,7 +225,7 @@ class GitCommandManager {
} }
execGit(args, allowAllExitCodes = false, silent = false) { execGit(args, allowAllExitCodes = false, silent = false) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
directoryExistsSync(this.workingDirectory, true); utils_1.directoryExistsSync(this.workingDirectory, true);
const result = new GitOutput(); const result = new GitOutput();
const stdout = []; const stdout = [];
const options = { const options = {
@@ -322,12 +297,13 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
const core = __importStar(__webpack_require__(2186)); const core = __importStar(__webpack_require__(2186));
const utils_1 = __webpack_require__(918); const utils_1 = __webpack_require__(918);
const releaseNotes_1 = __webpack_require__(5882); const releaseNotes_1 = __webpack_require__(5882);
const git_helper_1 = __webpack_require__(9621); const gitHelper_1 = __webpack_require__(353);
const github = __importStar(__webpack_require__(5438)); const github = __importStar(__webpack_require__(5438));
const path = __importStar(__webpack_require__(5622)); const path = __importStar(__webpack_require__(5622));
const configuration_1 = __webpack_require__(5527); const configuration_1 = __webpack_require__(5527);
function run() { function run() {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
core.startGroup(`📘 Reading input values`);
try { try {
let githubWorkspacePath = process.env['GITHUB_WORKSPACE']; let githubWorkspacePath = process.env['GITHUB_WORKSPACE'];
if (!githubWorkspacePath) { if (!githubWorkspacePath) {
@@ -345,7 +321,7 @@ function run() {
core.debug(`configurationPath = '${configurationPath}'`); core.debug(`configurationPath = '${configurationPath}'`);
const providedConfiguration = utils_1.readConfiguration(configurationPath); const providedConfiguration = utils_1.readConfiguration(configurationPath);
if (!providedConfiguration) { if (!providedConfiguration) {
core.error(`Configuration provided, but it couldn't be found, or failed to parse`); core.info(`⚠️ Configuration provided, but it couldn't be found, or failed to parse. Fallback to Defaults`);
} }
else { else {
configuration = providedConfiguration; configuration = providedConfiguration;
@@ -359,7 +335,7 @@ function run() {
const ignorePreReleases = core.getInput('ignorePreReleases'); const ignorePreReleases = core.getInput('ignorePreReleases');
if (!toTag) { if (!toTag) {
// if not specified try to retrieve tag from git // if not specified try to retrieve tag from git
const gitHelper = yield git_helper_1.createCommandManager(repositoryPath); const gitHelper = yield gitHelper_1.createCommandManager(repositoryPath);
const latestTag = yield gitHelper.latestTag(); const latestTag = yield gitHelper.latestTag();
toTag = latestTag; toTag = latestTag;
core.debug(`toTag = '${latestTag}'`); core.debug(`toTag = '${latestTag}'`);
@@ -399,6 +375,7 @@ function run() {
else { else {
core.debug(`Resolved 'toTag' as ${toTag}`); core.debug(`Resolved 'toTag' as ${toTag}`);
} }
core.endGroup();
const releaseNotes = new releaseNotes_1.ReleaseNotes({ const releaseNotes = new releaseNotes_1.ReleaseNotes({
owner, owner,
repo, repo,
@@ -964,7 +941,7 @@ function buildChangelog(prs, config) {
: configuration_1.DefaultConfiguration.pr_template), validatedTransformers)); : configuration_1.DefaultConfiguration.pr_template), validatedTransformers));
} }
core.info(`️ Used ${validateTransfomers.length} transformers to adjust message`); core.info(`️ Used ${validateTransfomers.length} transformers to adjust message`);
core.info(` Wrote messages for ${prs.length} pull requests`); core.info(` Wrote messages for ${prs.length} pull requests`);
// bring PRs into the order of categories // bring PRs into the order of categories
const categorized = new Map(); const categorized = new Map();
const categories = (_b = config.categories) !== null && _b !== void 0 ? _b : configuration_1.DefaultConfiguration.categories; const categories = (_b = config.categories) !== null && _b !== void 0 ? _b : configuration_1.DefaultConfiguration.categories;
@@ -998,12 +975,12 @@ function buildChangelog(prs, config) {
changelog = `${changelog}\n`; changelog = `${changelog}\n`;
} }
} }
core.info(` Wrote ${categorized.size} categorized pull requests down`); core.info(` Wrote ${categorized.size} categorized pull requests down`);
let changelogUncategorized = ''; let changelogUncategorized = '';
for (const pr of uncategorized) { for (const pr of uncategorized) {
changelogUncategorized = `${changelogUncategorized + pr}\n`; changelogUncategorized = `${changelogUncategorized + pr}\n`;
} }
core.info(` Wrote ${changelogUncategorized.length} non categorized pull requests down`); core.info(` Wrote ${changelogUncategorized.length} non categorized pull requests down`);
// fill template // fill template
let transformedChangelog = (_c = config.template) !== null && _c !== void 0 ? _c : configuration_1.DefaultConfiguration.template; let transformedChangelog = (_c = config.template) !== null && _c !== void 0 ? _c : configuration_1.DefaultConfiguration.template;
transformedChangelog = transformedChangelog.replace('${{CHANGELOG}}', changelog); transformedChangelog = transformedChangelog.replace('${{CHANGELOG}}', changelog);
@@ -1089,7 +1066,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
return result; return result;
}; };
Object.defineProperty(exports, "__esModule", ({ value: true })); Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.readConfiguration = void 0; exports.directoryExistsSync = exports.readConfiguration = void 0;
const fs = __importStar(__webpack_require__(5747)); const fs = __importStar(__webpack_require__(5747));
function readConfiguration(filename) { function readConfiguration(filename) {
try { try {
@@ -1102,6 +1079,32 @@ function readConfiguration(filename) {
} }
} }
exports.readConfiguration = readConfiguration; exports.readConfiguration = readConfiguration;
function directoryExistsSync(path, required) {
if (!path) {
throw new Error("Arg 'path' must not be empty");
}
let stats;
try {
stats = fs.statSync(path);
}
catch (error) {
if (error.code === 'ENOENT') {
if (!required) {
return false;
}
throw new Error(`Directory '${path}' does not exist`);
}
throw new Error(`Encountered an error when checking whether path '${path}' exists: ${error.message}`);
}
if (stats.isDirectory()) {
return true;
}
else if (!required) {
return false;
}
throw new Error(`Directory '${path}' does not exist`);
}
exports.directoryExistsSync = directoryExistsSync;
/***/ }), /***/ }),
Generated Vendored
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -31
View File
@@ -1,6 +1,7 @@
import * as exec from '@actions/exec' import * as exec from '@actions/exec'
import * as fs from 'fs' import * as fs from 'fs'
import * as io from '@actions/io' import * as io from '@actions/io'
import { directoryExistsSync } from './utils';
export async function createCommandManager( export async function createCommandManager(
workingDirectory: string workingDirectory: string
@@ -8,37 +9,6 @@ export async function createCommandManager(
return await GitCommandManager.createCommandManager(workingDirectory) return await GitCommandManager.createCommandManager(workingDirectory)
} }
function directoryExistsSync(path: string, required?: boolean): boolean {
if (!path) {
throw new Error("Arg 'path' must not be empty")
}
let stats: fs.Stats
try {
stats = fs.statSync(path)
} catch (error) {
if (error.code === 'ENOENT') {
if (!required) {
return false
}
throw new Error(`Directory '${path}' does not exist`)
}
throw new Error(
`Encountered an error when checking whether path '${path}' exists: ${error.message}`
)
}
if (stats.isDirectory()) {
return true
} else if (!required) {
return false
}
throw new Error(`Directory '${path}' does not exist`)
}
class GitCommandManager { class GitCommandManager {
private gitPath = '' private gitPath = ''
private workingDirectory = '' private workingDirectory = ''
+4 -4
View File
@@ -1,12 +1,13 @@
import * as core from '@actions/core' import * as core from '@actions/core'
import {readConfiguration} from './utils' import {readConfiguration} from './utils'
import {ReleaseNotes} from './releaseNotes' import {ReleaseNotes} from './releaseNotes'
import {createCommandManager} from './git-helper' import {createCommandManager} from './gitHelper'
import * as github from '@actions/github' import * as github from '@actions/github'
import * as path from 'path' import * as path from 'path'
import {DefaultConfiguration} from './configuration' import {DefaultConfiguration} from './configuration'
async function run(): Promise<void> { async function run(): Promise<void> {
core.startGroup(`📘 Reading input values`)
try { try {
let githubWorkspacePath = process.env['GITHUB_WORKSPACE'] let githubWorkspacePath = process.env['GITHUB_WORKSPACE']
if (!githubWorkspacePath) { if (!githubWorkspacePath) {
@@ -29,9 +30,7 @@ async function run(): Promise<void> {
core.debug(`configurationPath = '${configurationPath}'`) core.debug(`configurationPath = '${configurationPath}'`)
const providedConfiguration = readConfiguration(configurationPath) const providedConfiguration = readConfiguration(configurationPath)
if (!providedConfiguration) { if (!providedConfiguration) {
core.error( core.info(`⚠️ Configuration provided, but it couldn't be found, or failed to parse. Fallback to Defaults`)
`Configuration provided, but it couldn't be found, or failed to parse`
)
} else { } else {
configuration = providedConfiguration configuration = providedConfiguration
} }
@@ -94,6 +93,7 @@ async function run(): Promise<void> {
} else { } else {
core.debug(`Resolved 'toTag' as ${toTag}`) core.debug(`Resolved 'toTag' as ${toTag}`)
} }
core.endGroup()
const releaseNotes = new ReleaseNotes({ const releaseNotes = new ReleaseNotes({
owner, owner,
+3 -3
View File
@@ -35,7 +35,7 @@ export function buildChangelog(
) )
} }
core.info(`️ Used ${validateTransfomers.length} transformers to adjust message`) core.info(`️ Used ${validateTransfomers.length} transformers to adjust message`)
core.info(` Wrote messages for ${prs.length} pull requests`) core.info(` Wrote messages for ${prs.length} pull requests`)
// bring PRs into the order of categories // bring PRs into the order of categories
const categorized = new Map<Category, string[]>() const categorized = new Map<Category, string[]>()
@@ -76,13 +76,13 @@ export function buildChangelog(
changelog = `${changelog}\n` changelog = `${changelog}\n`
} }
} }
core.info(` Wrote ${categorized.size} categorized pull requests down`) core.info(` Wrote ${categorized.size} categorized pull requests down`)
let changelogUncategorized = '' let changelogUncategorized = ''
for (const pr of uncategorized) { for (const pr of uncategorized) {
changelogUncategorized = `${changelogUncategorized + pr}\n` changelogUncategorized = `${changelogUncategorized + pr}\n`
} }
core.info(` Wrote ${changelogUncategorized.length} non categorized pull requests down`) core.info(` Wrote ${changelogUncategorized.length} non categorized pull requests down`)
// fill template // fill template
let transformedChangelog = config.template ?? DefaultConfiguration.template let transformedChangelog = config.template ?? DefaultConfiguration.template
+31
View File
@@ -10,3 +10,34 @@ export function readConfiguration(filename: string): Configuration | null {
return null return null
} }
} }
export function directoryExistsSync(path: string, required?: boolean): boolean {
if (!path) {
throw new Error("Arg 'path' must not be empty")
}
let stats: fs.Stats
try {
stats = fs.statSync(path)
} catch (error) {
if (error.code === 'ENOENT') {
if (!required) {
return false
}
throw new Error(`Directory '${path}' does not exist`)
}
throw new Error(
`Encountered an error when checking whether path '${path}' exists: ${error.message}`
)
}
if (stats.isDirectory()) {
return true
} else if (!required) {
return false
}
throw new Error(`Directory '${path}' does not exist`)
}