Skip to content

Commit ee1844d

Browse files
committed
append to ui.yml if it already exists
1 parent 019bd4f commit ee1844d

File tree

1 file changed

+23
-3
lines changed

1 file changed

+23
-3
lines changed

gulp.d/tasks/release.js

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ const fs = require('fs')
55
const { promises: fsp } = fs
66
const { Octokit } = require('@octokit/rest')
77
const path = require('path')
8-
const { Transform } = require('stream')
8+
const { pipeline, Transform, Writable } = require('stream')
9+
const forEach = (write, final) => new Writable({ objectMode: true, write, final })
910
const map = (transform, flush = undefined) => new Transform({ objectMode: true, transform, flush })
1011
const vfs = require('vinyl-fs')
1112
const zip = require('gulp-vinyl-zip')
@@ -37,15 +38,27 @@ function collectReleases ({ octokit, owner, repo, filter, page = 1, accum = [] }
3738
}
3839

3940
function versionBundle (bundleFile, tagName) {
41+
let uiDescriptorFound
4042
return new Promise((resolve, reject) =>
4143
vfs
4244
.src(bundleFile)
4345
.pipe(zip.src().on('error', reject))
4446
.pipe(
4547
map(
46-
(file, enc, next) => next(null, file),
48+
(file, _, next) => {
49+
if (file.path === 'ui.yml' && (uiDescriptorFound = true) && file.isStream()) {
50+
const buffer = []
51+
pipeline(
52+
file.contents,
53+
forEach((chunk, _, done) => buffer.push(chunk) && done()),
54+
(err) => (err ? next(err) : next(null, addVersionEntry(file, tagName, Buffer.concat(buffer))))
55+
)
56+
} else {
57+
next(null, file)
58+
}
59+
},
4760
function (done) {
48-
this.push(new File({ path: 'ui.yml', contents: Buffer.from(`version: ${tagName}\n`) }))
61+
if (!uiDescriptorFound) this.push(addVersionEntry(new File({ path: 'ui.yml' }), tagName))
4962
done()
5063
}
5164
)
@@ -55,6 +68,13 @@ function versionBundle (bundleFile, tagName) {
5568
)
5669
}
5770

71+
function addVersionEntry (file, tagName, contents = Buffer.alloc(0)) {
72+
let versionEntry = `version: ${tagName}\n`
73+
if (contents.length && contents[contents.length - 1] !== 10) versionEntry = `\n${versionEntry}`
74+
file.contents = Buffer.concat([contents, Buffer.from(versionEntry)])
75+
return file
76+
}
77+
5878
module.exports = (dest, bundleName, owner, repo, ref, token, updateBranch) => async () => {
5979
const octokit = new Octokit({ auth: `token ${token}` })
6080
let variant = ref.replace(/^refs\/heads\//, '')

0 commit comments

Comments
 (0)