Open fregante opened 3 years ago
The user would:
.github/workflows-ghat
$ ghat
without any inputThis is essentially the same as https://github.com/fregante/ghat/issues/9, except that https://github.com/fregante/ghat/issues/9 refers to just loading the .github/workflows
files.
Alternative idea: The "local template" could just be a .js
module that can do anything:
// In ghat
require('./.github/workflows/ghat.js'); // if it exists
// In local .github/workflows/ghat.js
const ghat = require('ghat');
(async () => {
const myWorkflow = await ghat.get('fregante/ghatemplates/file.yml');
myWorkflow.name = 'Coolio';
await ghat.save('ci.yml', myWorkflow);
})();
Currently the only customization possible is via the global
env
property, but unfortunately this isn't available everywhere in the workflow and can't be used to customize a workflow template.I foresee a few ways to reuse existing templates:
Plain merging of a local template (e.g.
.github/workflows-ghat/ci.yml
) with the remote templateImporting single jobs
An advanced way to customize the templates
For example it could apply some ENVs at merge time like GitHub does with the
$default-branch
variable:env
doesn't support arrays for example, and can't be used instrategy.matrix
Initially defined in https://github.com/sindresorhus/project-ideas/issues/128