3 var fs = require('fs');
4 var path = require('path');
5 var request = require('@root/request');
6 var _normalize = require('../_webi/normalize.js');
8 var Releases = module.exports;
9 Releases.get = async function (pkgdir) {
10 var get = require(path.join(pkgdir, 'releases.js'));
11 return get(request).then(function (all) {
12 return _normalize(all);
16 Releases.renderBash = function (
19 { baseurl, pkg, tag, ver, os, arch, formats }
21 if (!Array.isArray(formats)) {
28 .readFile(path.join(pkgdir, 'install.sh'), 'utf8')
29 .then(function (installTxt) {
30 var vers = rel.version.split('.');
32 major: vers.shift() || '',
33 minor: vers.shift() || '',
34 patch: vers.join('.').replace(/[+\-].*/, ''),
37 .replace(/[^+\-]*/, '')
41 .readFile(path.join(__dirname, 'template.sh'), 'utf8')
42 .then(function (tplTxt) {
45 .replace(/^#?WEBI_PKG=.*/m, "WEBI_PKG='" + pkg + '@' + ver + "'")
46 .replace(/^#?WEBI_HOST=.*/m, "WEBI_HOST='" + baseurl + "'")
47 .replace(/^#?WEBI_OS=.*/m, "WEBI_OS='" + (os || '') + "'")
48 .replace(/^#?WEBI_ARCH=.*/m, "WEBI_ARCH='" + (arch || '') + "'")
49 .replace(/^#?WEBI_TAG=.*/m, "WEBI_TAG='" + tag + "'")
51 /^#?WEBI_RELEASES=.*/m,
88 /^#?WEBI_VERSION=.*/m,
89 'WEBI_VERSION=' + JSON.stringify(rel.version)
91 .replace(/^#?WEBI_MAJOR=.*/m, 'WEBI_MAJOR=' + v.major)
92 .replace(/^#?WEBI_MINOR=.*/m, 'WEBI_MINOR=' + v.minor)
93 .replace(/^#?WEBI_PATCH=.*/m, 'WEBI_PATCH=' + v.patch)
94 .replace(/^#?WEBI_BUILD=.*/m, 'WEBI_BUILD=' + v.build)
95 .replace(/^#?WEBI_LTS=.*/m, 'WEBI_LTS=' + rel.lts)
96 .replace(/^#?WEBI_CHANNEL=.*/m, 'WEBI_CHANNEL=' + rel.channel)
99 'WEBI_EXT=' + rel.ext.replace(/tar.*/, 'tar')
102 /^#?WEBI_FORMATS=.*/m,
103 "WEBI_FORMATS='" + formats.join(',') + "'"
106 /^#?WEBI_PKG_URL=.*/m,
107 "WEBI_PKG_URL='" + rel.download + "'"
110 /^#?WEBI_PKG_FILE=.*/m,
111 "WEBI_PKG_FILE='" + rel.name + "'"
114 .replace(/^#?PKG_NAME=.*/m, "PKG_NAME='" + pkg + "'")
117 "PKG_OSES='" + ((rel && rel.oses) || []).join(',') + "'"
121 "PKG_ARCHES='" + ((rel && rel.arches) || []).join(',') + "'"
124 /^#?PKG_FORMATS=.*/m,
125 "PKG_FORMATS='" + ((rel && rel.formats) || []).join(',') + "'"
127 .replace(/{{ installer }}/, installTxt)
133 Releases.renderBatch = function (
136 { baseurl, pkg, tag, ver, os, arch, formats }
138 if (!Array.isArray(formats)) {
145 .readFile(path.join(pkgdir, 'install.bat'), 'utf8')
146 .then(function (installTxt) {
147 var vers = rel.version.split('.');
149 major: vers.shift() || '',
150 minor: vers.shift() || '',
151 patch: vers.join('.').replace(/[+\-].*/, ''),
154 .replace(/[^+\-]*/, '')
158 .readFile(path.join(__dirname, 'template.bat'), 'utf8')
159 .then(function (tplTxt) {
162 /^(REM )?WEBI_PKG=.*/im,
163 "WEBI_PKG='" + pkg + '@' + ver + "'"
165 .replace(/{{ installer }}/, installTxt);