From 14772bf9e0a40e8ccbbdd6e4e29cd1327c43e2e6 Mon Sep 17 00:00:00 2001 From: Dustin Falgout Date: Fri, 5 Jun 2020 15:26:25 -0500 Subject: [PATCH] Fix bug where deleted files were not properly detected because the term used by the api is actually "removed". Replaced usage of "deleted" with "removed" while also retaining previous output using "deleted" for backwards compatability. --- action.yml | 12 ++++++------ dist/index.js | 50 ++++++++++++++++++++++++++++---------------------- index.js | 50 ++++++++++++++++++++++++++++---------------------- package.json | 2 +- 4 files changed, 63 insertions(+), 51 deletions(-) diff --git a/action.yml b/action.yml index 9abcb97..a48145c 100644 --- a/action.yml +++ b/action.yml @@ -10,15 +10,15 @@ inputs: required: true outputs: all: - description: Array of all changed files (JSON string) + description: JSON array of all changed files that weren't removed added: - description: Array of added files (JSON string) - deleted: - description: Array of deleted files (JSON string) + description: JSON array of added files modified: - description: Array of modified files (JSON string) + description: JSON array of modified files renamed: - description: Array of renamed files (JSON string) + description: JSON array of renamed files + removed: + description: JSON array of removed files branding: icon: 'search' color: 'gray-dark' diff --git a/dist/index.js b/dist/index.js index 2fe25cc..17dc4ca 100644 --- a/dist/index.js +++ b/dist/index.js @@ -296,9 +296,9 @@ const repo = context.payload.repository; const owner = repo.owner; const FILES = new Set(); -const FILES_MODIFIED = new Set(); const FILES_ADDED = new Set(); -const FILES_DELETED = new Set(); +const FILES_MODIFIED = new Set(); +const FILES_REMOVED = new Set(); const FILES_RENAMED = new Set(); const gh = github.getOctokit(core.getInput('token')); @@ -347,14 +347,14 @@ function isAdded(file) { return 'added' === file.status; } -function isDeleted(file) { - return 'deleted' === file.status; -} - function isModified(file) { return 'modified' === file.status; } +function isRemoved(file) { + return 'removed' === file.status; +} + function isRenamed(file) { return 'renamed' === file.status; } @@ -378,13 +378,13 @@ async function processCommit(commit) { if (isAdded(file)) { FILES_ADDED.add(file.filename); - FILES_DELETED.delete(file.filename); + FILES_REMOVED.delete(file.filename); return; // continue } - if (isDeleted(file)) { - FILES_DELETED.add(file.filename); + if (isRemoved(file)) { + FILES_REMOVED.add(file.filename); FILES_ADDED.delete(file.filename); FILES_MODIFIED.delete(file.filename); @@ -404,8 +404,10 @@ async function processCommit(commit) { } } -function toJSON(value) { - return JSON.stringify(value, null, 4); +function toJSON(value, pretty=true) { + return pretty + ? JSON.stringify(value, null, 4) + : JSON.stringify(value); } @@ -424,17 +426,21 @@ getCommits().then(commits => { Promise.all(commits.map(processCommit)).then(() => { debug('FILES', Array.from(FILES.values())); - core.setOutput('all', toJSON(Array.from(FILES.values()))); - core.setOutput('added', toJSON(Array.from(FILES_ADDED.values()))); - core.setOutput('deleted', toJSON(Array.from(FILES_DELETED.values()))); - core.setOutput('modified', toJSON(Array.from(FILES_MODIFIED.values()))); - core.setOutput('renamed', toJSON(Array.from(FILES_RENAMED.values()))); - - fs.writeFileSync(`${process.env.HOME}/files.json`, toJSON(Array.from(FILES.values())), 'utf-8'); - fs.writeFileSync(`${process.env.HOME}/files_modified.json`, toJSON(Array.from(FILES_MODIFIED.values())), 'utf-8'); - fs.writeFileSync(`${process.env.HOME}/files_added.json`, toJSON(Array.from(FILES_ADDED.values())), 'utf-8'); - fs.writeFileSync(`${process.env.HOME}/files_deleted.json`, toJSON(Array.from(FILES_DELETED.values())), 'utf-8'); - fs.writeFileSync(`${process.env.HOME}/files_renamed.json`, toJSON(Array.from(FILES_RENAMED.values())), 'utf-8'); + core.setOutput('all', toJSON(Array.from(FILES.values()), 0)); + core.setOutput('added', toJSON(Array.from(FILES_ADDED.values()), 0)); + core.setOutput('modified', toJSON(Array.from(FILES_MODIFIED.values()), 0)); + core.setOutput('removed', toJSON(Array.from(FILES_REMOVED.values()), 0)); + core.setOutput('renamed', toJSON(Array.from(FILES_RENAMED.values()), 0)); + + fs.writeFileSync(`${process.env.HOME}/files.json`, toJSON(Array.from(FILES.values()), 0), 'utf-8'); + fs.writeFileSync(`${process.env.HOME}/files_added.json`, toJSON(Array.from(FILES_ADDED.values()), 0), 'utf-8'); + fs.writeFileSync(`${process.env.HOME}/files_modified.json`, toJSON(Array.from(FILES_MODIFIED.values()), 0), 'utf-8'); + fs.writeFileSync(`${process.env.HOME}/files_removed.json`, toJSON(Array.from(FILES_REMOVED.values()), 0), 'utf-8'); + fs.writeFileSync(`${process.env.HOME}/files_renamed.json`, toJSON(Array.from(FILES_RENAMED.values()), 0), 'utf-8'); + + // Backwards Compatability + core.setOutput('deleted', toJSON(Array.from(FILES_REMOVED.values()), 0)); + fs.writeFileSync(`${process.env.HOME}/files_deleted.json`, toJSON(Array.from(FILES_REMOVED.values()), 0), 'utf-8'); process.exit(0); }); diff --git a/index.js b/index.js index add31fe..2d4df46 100644 --- a/index.js +++ b/index.js @@ -8,9 +8,9 @@ const repo = context.payload.repository; const owner = repo.owner; const FILES = new Set(); -const FILES_MODIFIED = new Set(); const FILES_ADDED = new Set(); -const FILES_DELETED = new Set(); +const FILES_MODIFIED = new Set(); +const FILES_REMOVED = new Set(); const FILES_RENAMED = new Set(); const gh = github.getOctokit(core.getInput('token')); @@ -59,14 +59,14 @@ function isAdded(file) { return 'added' === file.status; } -function isDeleted(file) { - return 'deleted' === file.status; -} - function isModified(file) { return 'modified' === file.status; } +function isRemoved(file) { + return 'removed' === file.status; +} + function isRenamed(file) { return 'renamed' === file.status; } @@ -90,13 +90,13 @@ async function processCommit(commit) { if (isAdded(file)) { FILES_ADDED.add(file.filename); - FILES_DELETED.delete(file.filename); + FILES_REMOVED.delete(file.filename); return; // continue } - if (isDeleted(file)) { - FILES_DELETED.add(file.filename); + if (isRemoved(file)) { + FILES_REMOVED.add(file.filename); FILES_ADDED.delete(file.filename); FILES_MODIFIED.delete(file.filename); @@ -116,8 +116,10 @@ async function processCommit(commit) { } } -function toJSON(value) { - return JSON.stringify(value, null, 4); +function toJSON(value, pretty=true) { + return pretty + ? JSON.stringify(value, null, 4) + : JSON.stringify(value); } @@ -136,17 +138,21 @@ getCommits().then(commits => { Promise.all(commits.map(processCommit)).then(() => { debug('FILES', Array.from(FILES.values())); - core.setOutput('all', toJSON(Array.from(FILES.values()))); - core.setOutput('added', toJSON(Array.from(FILES_ADDED.values()))); - core.setOutput('deleted', toJSON(Array.from(FILES_DELETED.values()))); - core.setOutput('modified', toJSON(Array.from(FILES_MODIFIED.values()))); - core.setOutput('renamed', toJSON(Array.from(FILES_RENAMED.values()))); - - fs.writeFileSync(`${process.env.HOME}/files.json`, toJSON(Array.from(FILES.values())), 'utf-8'); - fs.writeFileSync(`${process.env.HOME}/files_modified.json`, toJSON(Array.from(FILES_MODIFIED.values())), 'utf-8'); - fs.writeFileSync(`${process.env.HOME}/files_added.json`, toJSON(Array.from(FILES_ADDED.values())), 'utf-8'); - fs.writeFileSync(`${process.env.HOME}/files_deleted.json`, toJSON(Array.from(FILES_DELETED.values())), 'utf-8'); - fs.writeFileSync(`${process.env.HOME}/files_renamed.json`, toJSON(Array.from(FILES_RENAMED.values())), 'utf-8'); + core.setOutput('all', toJSON(Array.from(FILES.values()), 0)); + core.setOutput('added', toJSON(Array.from(FILES_ADDED.values()), 0)); + core.setOutput('modified', toJSON(Array.from(FILES_MODIFIED.values()), 0)); + core.setOutput('removed', toJSON(Array.from(FILES_REMOVED.values()), 0)); + core.setOutput('renamed', toJSON(Array.from(FILES_RENAMED.values()), 0)); + + fs.writeFileSync(`${process.env.HOME}/files.json`, toJSON(Array.from(FILES.values()), 0), 'utf-8'); + fs.writeFileSync(`${process.env.HOME}/files_added.json`, toJSON(Array.from(FILES_ADDED.values()), 0), 'utf-8'); + fs.writeFileSync(`${process.env.HOME}/files_modified.json`, toJSON(Array.from(FILES_MODIFIED.values()), 0), 'utf-8'); + fs.writeFileSync(`${process.env.HOME}/files_removed.json`, toJSON(Array.from(FILES_REMOVED.values()), 0), 'utf-8'); + fs.writeFileSync(`${process.env.HOME}/files_renamed.json`, toJSON(Array.from(FILES_RENAMED.values()), 0), 'utf-8'); + + // Backwards Compatability + core.setOutput('deleted', toJSON(Array.from(FILES_REMOVED.values()), 0)); + fs.writeFileSync(`${process.env.HOME}/files_deleted.json`, toJSON(Array.from(FILES_REMOVED.values()), 0), 'utf-8'); process.exit(0); }); diff --git a/package.json b/package.json index 7c022cf..373a3a3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "gh-action-get-changed-files", - "version": "2.1.1rc1", + "version": "2.1.1rc2", "private": true, "main": "dist/index.js", "scripts":{