diff --git a/action.yml b/action.yml index fb67ceb..19a4173 100644 --- a/action.yml +++ b/action.yml @@ -5,9 +5,9 @@ branding: color: "blue" inputs: branch: - description: "The branch name" + description: "Set to specify a specific branch, default is the current HEAD" required: true - default: "master" + default: "HEAD" tag_prefix: description: "The prefix to use to identify tags" required: false diff --git a/dist/index.js b/dist/index.js index 044ada7..b2acdaf 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1072,6 +1072,10 @@ const setOutput = (major, minor, patch, increment, changed, branch, namespace) = tag = `${tagPrefix}${major}`; } + if (namespace !== '') { + tag += `-${namespace}` + } + const repository = process.env.GITHUB_REPOSITORY; if (!changed) { @@ -1126,15 +1130,15 @@ const createMatchTest = (pattern) => { async function run() { try { - const remote = await cmd('git', 'remote'); - const remoteExists = remote !== ''; - const remotePrefix = remoteExists ? 'origin/' : ''; - - const branch = `${remotePrefix}${core.getInput('branch', { required: true })}`; + let branch = core.getInput('branch', { required: true }); const majorPattern = createMatchTest(core.getInput('major_pattern', { required: true })); const minorPattern = createMatchTest(core.getInput('minor_pattern', { required: true })); const changePath = core.getInput('change_path') || ''; + if (branch === 'HEAD') { + branch = (await cmd('git', 'rev-parse', 'HEAD')).trim(); + } + const versionPattern = shortTags ? '*[0-9.]' : '[0-9]+\\.[0-9]+\\.[0-9]+' const releasePattern = namespace === '' ? `${tagPrefix}${versionPattern}` : `${tagPrefix}${versionPattern}-${namespace}`; let major = 0, minor = 0, patch = 0, increment = 0; @@ -1169,7 +1173,7 @@ async function run() { let root; if (tag === '') { - if (remoteExists) { + if (await cmd('git', 'remote') !== '') { core.warning('No tags are present for this repository. If this is unexpected, check to ensure that tags have been pulled from the remote.'); } // no release tags yet, use the initial commit as the root diff --git a/index.js b/index.js index 1acd438..16489d2 100644 --- a/index.js +++ b/index.js @@ -109,15 +109,15 @@ const createMatchTest = (pattern) => { async function run() { try { - const remote = await cmd('git', 'remote'); - const remoteExists = remote !== ''; - const remotePrefix = remoteExists ? 'origin/' : ''; - - const branch = `${remotePrefix}${core.getInput('branch', { required: true })}`; + let branch = core.getInput('branch', { required: true }); const majorPattern = createMatchTest(core.getInput('major_pattern', { required: true })); const minorPattern = createMatchTest(core.getInput('minor_pattern', { required: true })); const changePath = core.getInput('change_path') || ''; + if (branch === 'HEAD') { + branch = (await cmd('git', 'rev-parse', 'HEAD')).trim(); + } + const versionPattern = shortTags ? '*[0-9.]' : '[0-9]+\\.[0-9]+\\.[0-9]+' const releasePattern = namespace === '' ? `${tagPrefix}${versionPattern}` : `${tagPrefix}${versionPattern}-${namespace}`; let major = 0, minor = 0, patch = 0, increment = 0; @@ -152,7 +152,7 @@ async function run() { let root; if (tag === '') { - if (remoteExists) { + if (await cmd('git', 'remote') !== '') { core.warning('No tags are present for this repository. If this is unexpected, check to ensure that tags have been pulled from the remote.'); } // no release tags yet, use the initial commit as the root diff --git a/index.test.js b/index.test.js index 63f2717..55d7371 100644 --- a/index.test.js +++ b/index.test.js @@ -6,7 +6,7 @@ const windows = process.platform === "win32"; // Action input variables const defaultInputs = { - branch: "master", + branch: "HEAD", tag_prefix: "v", major_pattern: "(MAJOR)", minor_pattern: "(MINOR)", @@ -85,6 +85,22 @@ test('Repository with commits shows increment', () => { repo.clean(); }); +test('Repository show commit for checked out commit', () => { + const repo = createTestRepo(); // 0.0.0+0 + + repo.makeCommit('Initial Commit'); // 0.0.1+0 + repo.makeCommit(`Second Commit`); // 0.0.1+1 + let result = repo.runAction(); + expect(result).toMatch('Version is 0.0.1+1'); + + repo.exec(`git checkout HEAD~1`); // 0.0.1+1 + result = repo.runAction(); + expect(result).toMatch('Version is 0.0.1+0'); + + + repo.clean(); +}); + test('Tagging does not break version', () => { const repo = createTestRepo(); // 0.0.0+0