update prettier docs
[webi-installers/.git] / _webi / releases.js
1 'use strict';
2
3 var fs = require('fs');
4 var path = require('path');
5 var request = require('@root/request');
6 var _normalize = require('../_webi/normalize.js');
7
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);
13   });
14 };
15
16 Releases.renderBash = function (
17   pkgdir,
18   rel,
19   { baseurl, pkg, tag, ver, os, arch, formats }
20 ) {
21   if (!Array.isArray(formats)) {
22     formats = [];
23   }
24   if (!tag) {
25     tag = '';
26   }
27   return fs.promises
28     .readFile(path.join(pkgdir, 'install.sh'), 'utf8')
29     .then(function (installTxt) {
30       var vers = rel.version.split('.');
31       var v = {
32         major: vers.shift() || '',
33         minor: vers.shift() || '',
34         patch: vers.join('.').replace(/[+\-].*/, ''),
35         build: vers
36           .join('.')
37           .replace(/[^+\-]*/, '')
38           .replace(/^-/, '')
39       };
40       return fs.promises
41         .readFile(path.join(__dirname, 'template.sh'), 'utf8')
42         .then(function (tplTxt) {
43           return tplTxt
44             .replace(/^#?WEBI_PKG=.*/m, "WEBI_PKG='" + pkg + '@' + ver + "'")
45             .replace(/^#?WEBI_NAME=.*/m, "WEBI_NAME='" + pkg + "'")
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 + "'")
50             .replace(
51               /^#?WEBI_RELEASES=.*/m,
52               "WEBI_RELEASES='" +
53                 baseurl +
54                 '/api/releases/' +
55                 pkg +
56                 '@' +
57                 tag +
58                 '.tab?os=' +
59                 rel.os +
60                 '&arch=' +
61                 rel.arch +
62                 '&formats=' +
63                 formats.join(',') +
64                 '&pretty=true' +
65                 "'"
66             )
67             .replace(
68               /^#?WEBI_CSV=.*/m,
69               "WEBI_CSV='" +
70                 [
71                   rel.version,
72                   rel.lts,
73                   rel.channel,
74                   rel.date,
75                   rel.os,
76                   rel.arch,
77                   rel.ext,
78                   '-',
79                   rel.download,
80                   rel.name,
81                   rel.comment || ''
82                 ]
83                   .join(',')
84                   .replace(/'/g, '') +
85                 "'"
86             )
87             .replace(
88               /^#?WEBI_VERSION=.*/m,
89               'WEBI_VERSION=' + JSON.stringify(rel.version)
90             )
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)
97             .replace(
98               /^#?WEBI_EXT=.*/m,
99               'WEBI_EXT=' + rel.ext.replace(/tar.*/, 'tar')
100             )
101             .replace(
102               /^#?WEBI_FORMATS=.*/m,
103               "WEBI_FORMATS='" + formats.join(',') + "'"
104             )
105             .replace(
106               /^#?WEBI_PKG_URL=.*/m,
107               "WEBI_PKG_URL='" + rel.download + "'"
108             )
109             .replace(/^#?WEBI_PKG_FILE=.*/m, "WEBI_PKG_FILE='" + rel.name + "'")
110             .replace(/{{ installer }}/, installTxt);
111         });
112     });
113 };
114
115 Releases.renderBatch = function (
116   pkgdir,
117   rel,
118   { baseurl, pkg, tag, ver, os, arch, formats }
119 ) {
120   if (!Array.isArray(formats)) {
121     formats = [];
122   }
123   if (!tag) {
124     tag = '';
125   }
126   return fs.promises
127     .readFile(path.join(pkgdir, 'install.bat'), 'utf8')
128     .then(function (installTxt) {
129       var vers = rel.version.split('.');
130       var v = {
131         major: vers.shift() || '',
132         minor: vers.shift() || '',
133         patch: vers.join('.').replace(/[+\-].*/, ''),
134         build: vers
135           .join('.')
136           .replace(/[^+\-]*/, '')
137           .replace(/^-/, '')
138       };
139       return fs.promises
140         .readFile(path.join(__dirname, 'template.bat'), 'utf8')
141         .then(function (tplTxt) {
142           return tplTxt
143             .replace(
144               /^(REM )?WEBI_PKG=.*/im,
145               "WEBI_PKG='" + pkg + '@' + ver + "'"
146             )
147             .replace(/{{ installer }}/, installTxt);
148         });
149     });
150 };