Repository: crazy-max/ghaction-docker-meta
Pull request #2 (2020-10-25 14:30:30)

Allow to disable edge branch tagging

codecov[bot]: # [Codecov](https://codecov.io/gh/crazy-max/ghaction-docker-meta/pull/2?src=pr&el=h1) Report
> Merging [#2](https://codecov.io/gh/crazy-max/ghaction-docker-meta/pull/2?src=pr&el=desc) into [master](https://codecov.io/gh/crazy-max/ghaction-docker-meta/commit/3b38d53d94282f64215d15d0105ea550958c5965?el=desc) will **not change** coverage.
> The diff coverage is `25.00%`.

[![Impacted file tree graph](https://codecov.io/gh/crazy-max/ghaction-docker-meta/pull/2/graphs/tree.svg?width=650&height=150&src=pr&token=NgkCTCjmB1)](https://codecov.io/gh/crazy-max/ghaction-docker-meta/pull/2?src=pr&el=tree)

```diff
@@           Coverage Diff           @@
##           master       #2   +/-   ##
=======================================
  Coverage   72.36%   72.36%           
=======================================
  Files           3        3           
  Lines          76       76           
  Branches       16       16           
=======================================
  Hits           55       55           
  Misses          5        5           
  Partials       16       16           
```


| [Impacted Files](https://codecov.io/gh/crazy-max/ghaction-docker-meta/pull/2?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [src/context.ts](https://codecov.io/gh/crazy-max/ghaction-docker-meta/pull/2/diff?src=pr&el=tree#diff-c3JjL2NvbnRleHQudHM=) | `92.30% <ø> (ø)` | |
| [src/meta.ts](https://codecov.io/gh/crazy-max/ghaction-docker-meta/pull/2/diff?src=pr&el=tree#diff-c3JjL21ldGEudHM=) | `74.07% <25.00%> (ø)` | |

------

[Continue to review full report at Codecov](https://codecov.io/gh/crazy-max/ghaction-docker-meta/pull/2?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/crazy-max/ghaction-docker-meta/pull/2?src=pr&el=footer). Last update [a0b5755...5912bb7](https://codecov.io/gh/crazy-max/ghaction-docker-meta/pull/2?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).


Patch:
diff --git a/README.md b/README.md
index e600345..0df9c92 100644
--- a/README.md
+++ b/README.md
@@ -112,7 +112,8 @@ Following inputs can be used as `step.with` keys
 |---------------------|----------|------------------------------------|
 | `images`            | List/CSV | List of Docker images to use as base name for tags |
 | `tag-sha`           | Bool     | Add git short SHA as Docker tag (default `false`) |
-| `tag-edge`          | String   | Branch that will be tagged as edge (default `repo.default_branch`) |
+| `tag-edge`          | Bool     | Enable edge branch tagging (default `false`) |
+| `tag-edge-branch`   | String   | Branch that will be tagged as edge (default `repo.default_branch`) |
 | `tag-schedule`      | String   | [Handlebars template](https://handlebarsjs.com/guide/) to apply to schedule tag (default `nightly`) |
 | `sep-tags`          | String   | Separator to use for tags output (default `\n`) |
 | `sep-labels`        | String   | Separator to use for labels output (default `\n`) |
diff --git a/action.yml b/action.yml
index 97185b0..1b3d523 100644
--- a/action.yml
+++ b/action.yml
@@ -15,6 +15,10 @@ inputs:
     default: 'false'
     required: false
   tag-edge:
+    description: 'Enable edge branch tagging'
+    default: 'false'
+    required: false
+  tag-edge-branch:
     description: 'Branch that will be tagged as edge (default repo.default_branch)'
     required: false
   tag-schedule:
diff --git a/dist/index.js b/dist/index.js
index 3926453..de6f95d 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -22,8 +22,9 @@ const core = __webpack_require__(2186);
 function getInputs() {
     return {
         images: getInputList('images'),
-        tagSha: /true/i.test(core.getInput('tag-sha')),
-        tagEdge: core.getInput('tag-edge'),
+        tagSha: /true/i.test(core.getInput('tag-sha') || 'false'),
+        tagEdge: /true/i.test(core.getInput('tag-edge') || 'false'),
+        tagEdgeBranch: core.getInput('tag-edge-branch'),
         tagSchedule: core.getInput('tag-schedule') || 'nightly',
         sepTags: core.getInput('sep-tags') || `\n`,
         sepLabels: core.getInput('sep-labels') || `\n`,
@@ -170,8 +171,8 @@ const core = __webpack_require__(2186);
 class Meta {
     constructor(inputs, context, repo) {
         this.inputs = inputs;
-        if (!this.inputs.tagEdge) {
-            this.inputs.tagEdge = repo.default_branch;
+        if (!this.inputs.tagEdgeBranch) {
+            this.inputs.tagEdgeBranch = repo.default_branch;
         }
         this.context = context;
         this.repo = repo;
@@ -188,7 +189,7 @@ class Meta {
         }
         else if (/^refs\/heads\//.test(this.context.ref)) {
             const branch = this.context.ref.replace(/^refs\/heads\//g, '').replace(/\//g, '-');
-            return this.inputs.tagEdge === branch ? 'edge' : branch;
+            return this.inputs.tagEdge && this.inputs.tagEdgeBranch === branch ? 'edge' : branch;
         }
         else if (/^refs\/pull\//.test(this.context.ref)) {
             const pr = this.context.ref.replace(/^refs\/pull\//g, '').replace(/\/merge$/g, '');
@@ -246,7 +247,7 @@ class Meta {
     }
     eventBranch(image) {
         const branch = this.context.ref.replace(/^refs\/heads\//g, '').replace(/\//g, '-');
-        if (this.inputs.tagEdge === branch) {
+        if (this.inputs.tagEdge && this.inputs.tagEdgeBranch === branch) {
             return [`${image}:edge`];
         }
         return [`${image}:${branch}`];
diff --git a/src/context.ts b/src/context.ts
index 977b905..805e840 100644
--- a/src/context.ts
+++ b/src/context.ts
@@ -3,7 +3,8 @@ import * as core from '@actions/core';
 export interface Inputs {
   images: string[];
   tagSha: boolean;
-  tagEdge: string;
+  tagEdge: boolean;
+  tagEdgeBranch: string;
   tagSchedule: string;
   sepTags: string;
   sepLabels: string;
@@ -13,8 +14,9 @@ export interface Inputs {
 export function getInputs(): Inputs {
   return {
     images: getInputList('images'),
-    tagSha: /true/i.test(core.getInput('tag-sha')),
-    tagEdge: core.getInput('tag-edge'),
+    tagSha: /true/i.test(core.getInput('tag-sha') || 'false'),
+    tagEdge: /true/i.test(core.getInput('tag-edge') || 'false'),
+    tagEdgeBranch: core.getInput('tag-edge-branch'),
     tagSchedule: core.getInput('tag-schedule') || 'nightly',
     sepTags: core.getInput('sep-tags') || `\n`,
     sepLabels: core.getInput('sep-labels') || `\n`,
diff --git a/src/meta.ts b/src/meta.ts
index 966aeb1..4904394 100644
--- a/src/meta.ts
+++ b/src/meta.ts
@@ -14,8 +14,8 @@ export class Meta {
 
   constructor(inputs: Inputs, context: Context, repo: ReposGetResponseData) {
     this.inputs = inputs;
-    if (!this.inputs.tagEdge) {
-      this.inputs.tagEdge = repo.default_branch;
+    if (!this.inputs.tagEdgeBranch) {
+      this.inputs.tagEdgeBranch = repo.default_branch;
     }
     this.context = context;
     this.repo = repo;
@@ -31,7 +31,7 @@ export class Meta {
       return sver ? sver : tag;
     } else if (/^refs\/heads\//.test(this.context.ref)) {
       const branch = this.context.ref.replace(/^refs\/heads\//g, '').replace(/\//g, '-');
-      return this.inputs.tagEdge === branch ? 'edge' : branch;
+      return this.inputs.tagEdge && this.inputs.tagEdgeBranch === branch ? 'edge' : branch;
     } else if (/^refs\/pull\//.test(this.context.ref)) {
       const pr = this.context.ref.replace(/^refs\/pull\//g, '').replace(/\/merge$/g, '');
       return `pr-${pr}`;
@@ -88,7 +88,7 @@ export class Meta {
 
   private eventBranch(image: string): Array<string> {
     const branch = this.context.ref.replace(/^refs\/heads\//g, '').replace(/\//g, '-');
-    if (this.inputs.tagEdge === branch) {
+    if (this.inputs.tagEdge && this.inputs.tagEdgeBranch === branch) {
       return [`${image}:edge`];
     }
     return [`${image}:${branch}`];


Test patch:
diff --git a/__tests__/meta.test.ts b/__tests__/meta.test.ts
index a8ccf27..6411922 100644
--- a/__tests__/meta.test.ts
+++ b/__tests__/meta.test.ts
@@ -119,6 +119,7 @@ describe('tags and labels', () => {
       'event_push_defbranch.env',
       {
         images: ['user/app'],
+        tagEdge: true,
       } as Inputs,
       'edge',
       [
@@ -135,6 +136,26 @@ describe('tags and labels', () => {
         "org.opencontainers.image.licenses=MIT"
       ]
     ],
+    [
+      'event_push_defbranch.env',
+      {
+        images: ['user/app'],
+      } as Inputs,
+      'master',
+      [
+        'user/app:master'
+      ],
+      [
+        "org.opencontainers.image.title=Hello-World",
+        "org.opencontainers.image.description=This your first repo!",
+        "org.opencontainers.image.url=https://github.com/octocat/Hello-World",
+        "org.opencontainers.image.source=https://github.com/octocat/Hello-World.git",
+        "org.opencontainers.image.version=master",
+        "org.opencontainers.image.created=2020-01-10T00:30:00.000Z",
+        "org.opencontainers.image.revision=90dd6032fac8bda1b6c4436a2e65de27961ed071",
+        "org.opencontainers.image.licenses=MIT"
+      ]
+    ],
     [
       'event_release.env',
       {
@@ -263,6 +284,7 @@ describe('tags and labels', () => {
       'event_workflow_dispatch.env',
       {
         images: ['user/app'],
+        tagEdge: true,
       } as Inputs,
       'edge',
       [
@@ -325,6 +347,7 @@ describe('tags and labels', () => {
       'event_push_defbranch.env',
       {
         images: ['org/app', 'ghcr.io/user/app'],
+        tagEdge: true,
       } as Inputs,
       'edge',
       [
@@ -439,6 +462,7 @@ describe('tags and labels', () => {
       {
         images: ['org/app', 'ghcr.io/user/app'],
         tagSha: true,
+        tagEdge: true,
       } as Inputs,
       'edge',
       [
@@ -513,7 +537,8 @@ describe('tags and labels', () => {
       {
         images: ['org/app', 'ghcr.io/user/app'],
         tagSha: true,
-        tagEdge: 'dev'
+        tagEdge: true,
+        tagEdgeBranch: 'dev'
       } as Inputs,
       'edge',
       [
@@ -538,7 +563,8 @@ describe('tags and labels', () => {
       {
         images: ['org/app', 'ghcr.io/user/app'],
         tagSha: true,
-        tagEdge: 'dev'
+        tagEdge: true,
+        tagEdgeBranch: 'dev'
       } as Inputs,
       'master',
       [