mirror of
https://gitea.com/docker/metadata-action.git
synced 2024-11-29 07:29:32 +01:00
wip
Signed-off-by: Trim21 <trim21.me@gmail.com>
This commit is contained in:
parent
35e9aff4f5
commit
27abb2813b
4 changed files with 29 additions and 4 deletions
1
.github/workflows/ci.yml
vendored
1
.github/workflows/ci.yml
vendored
|
@ -196,6 +196,7 @@ jobs:
|
||||||
tags: |
|
tags: |
|
||||||
type=sha
|
type=sha
|
||||||
type=raw,value=gexp-branch-{{branch}}
|
type=raw,value=gexp-branch-{{branch}}
|
||||||
|
type=raw,value=gexp-date-{{commit_date 'YYYYMMDD'}}
|
||||||
type=raw,value=gexp-date-{{date 'YYYYMMDD'}}
|
type=raw,value=gexp-date-{{date 'YYYYMMDD'}}
|
||||||
type=raw,value=gexp-tag-{{tag}}
|
type=raw,value=gexp-tag-{{tag}}
|
||||||
type=raw,value=gexp-baseref-{{base_ref}}
|
type=raw,value=gexp-baseref-{{base_ref}}
|
||||||
|
|
6
dist/index.js
generated
vendored
6
dist/index.js
generated
vendored
File diff suppressed because one or more lines are too long
2
dist/index.js.map
generated
vendored
2
dist/index.js.map
generated
vendored
File diff suppressed because one or more lines are too long
24
src/meta.ts
24
src/meta.ts
|
@ -8,6 +8,7 @@ import * as core from '@actions/core';
|
||||||
import {Context} from '@actions/github/lib/context';
|
import {Context} from '@actions/github/lib/context';
|
||||||
import {Context as ToolkitContext} from '@docker/actions-toolkit/lib/context';
|
import {Context as ToolkitContext} from '@docker/actions-toolkit/lib/context';
|
||||||
import {GitHubRepo} from '@docker/actions-toolkit/lib/types/github';
|
import {GitHubRepo} from '@docker/actions-toolkit/lib/types/github';
|
||||||
|
import {execSync} from 'child_process';
|
||||||
|
|
||||||
import {Inputs} from './context';
|
import {Inputs} from './context';
|
||||||
import * as icl from './image';
|
import * as icl from './image';
|
||||||
|
@ -30,6 +31,7 @@ export class Meta {
|
||||||
private readonly tags: tcl.Tag[];
|
private readonly tags: tcl.Tag[];
|
||||||
private readonly flavor: fcl.Flavor;
|
private readonly flavor: fcl.Flavor;
|
||||||
private readonly date: Date;
|
private readonly date: Date;
|
||||||
|
private readonly commit_date: Date;
|
||||||
|
|
||||||
constructor(inputs: Inputs, context: Context, repo: GitHubRepo) {
|
constructor(inputs: Inputs, context: Context, repo: GitHubRepo) {
|
||||||
this.inputs = inputs;
|
this.inputs = inputs;
|
||||||
|
@ -39,9 +41,16 @@ export class Meta {
|
||||||
this.tags = tcl.Transform(inputs.tags);
|
this.tags = tcl.Transform(inputs.tags);
|
||||||
this.flavor = fcl.Transform(inputs.flavor);
|
this.flavor = fcl.Transform(inputs.flavor);
|
||||||
this.date = new Date();
|
this.date = new Date();
|
||||||
|
this.commit_date = this.getCommitDate();
|
||||||
this.version = this.getVersion();
|
this.version = this.getVersion();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private getCommitDate(): Date {
|
||||||
|
const myOutput = execSync('git show -s --format="%ci" HEAD');
|
||||||
|
|
||||||
|
return new Date(myOutput.toString());
|
||||||
|
}
|
||||||
|
|
||||||
private getVersion(): Version {
|
private getVersion(): Version {
|
||||||
let version: Version = {
|
let version: Version = {
|
||||||
main: undefined,
|
main: undefined,
|
||||||
|
@ -359,6 +368,7 @@ export class Meta {
|
||||||
private setGlobalExp(val): string {
|
private setGlobalExp(val): string {
|
||||||
const context = this.context;
|
const context = this.context;
|
||||||
const currentDate = this.date;
|
const currentDate = this.date;
|
||||||
|
const commitDate = this.commit_date;
|
||||||
return handlebars.compile(val)({
|
return handlebars.compile(val)({
|
||||||
branch: function () {
|
branch: function () {
|
||||||
if (!/^refs\/heads\//.test(context.ref)) {
|
if (!/^refs\/heads\//.test(context.ref)) {
|
||||||
|
@ -421,6 +431,20 @@ export class Meta {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return m.tz(tz).format(format);
|
return m.tz(tz).format(format);
|
||||||
|
},
|
||||||
|
commit_date: function (format, options) {
|
||||||
|
const m = moment(commitDate);
|
||||||
|
let tz = 'UTC';
|
||||||
|
Object.keys(options.hash).forEach(key => {
|
||||||
|
switch (key) {
|
||||||
|
case 'tz':
|
||||||
|
tz = options.hash[key];
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new Error(`Unknown ${key} attribute`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return m.tz(tz).format(format);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue