/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* Forked from https://microsoft.github.io/monaco-editor/ */ const gulp = require("gulp"); const es = require("event-stream"); const path = require("path"); const fs = require("fs"); const os = require('os'); const rimraf = require("rimraf"); const cp = require("child_process"); const CleanCSS = require("clean-css"); const uncss = require("uncss"); const VERSION = fs.readFileSync("../version.txt", "utf-8").trim(); allow_deploy_to_github = process.env.KTFMT_WEBSITE_ALLOW_DEPLOY_TO_GITHUB == '1'; outdir = process.env.KTFMT_WEBSITE_OUTPUT_DIR || path.join(__dirname, '../release-ktfmt-website'); console.log('Using output dir: ' + outdir) // --- website const cleanWebsiteTask = function (cb) { rimraf(outdir, { maxBusyTries: 1 }, cb); }; const buildWebsiteTask = function () { function replaceWithRelativeResource(dataPath, contents, regex, callback) { return contents.replace(regex, function (_, m0) { var filePath = path.join(path.dirname(dataPath), m0); return callback(m0, fs.readFileSync(filePath)); }); } var waiting = 0; var done = false; return es .merge( gulp .src(["**/*"], { dot: true, ignore: [ "package.json", "package-lock.json", "node_modules/**/*", "gulpfile.js", '.DS_Store', ], }) .pipe( es.through( function (data) { if (!data.contents || !/\.(html)$/.test(data.path)) { return this.emit("data", data); } var contents = data.contents.toString(); contents = contents.replace(/{{version}}/g, VERSION); contents = contents.replace( /{{year}}/g, new Date().getFullYear() ); var allCSS = ""; var tmpcontents = replaceWithRelativeResource( data.path, contents, /" + output + ""; } return ""; } ); } // Inline javascript contents = replaceWithRelativeResource( data.path, contents, /" ); } ); data.contents = Buffer.from( contents.split(/\r\n|\r|\n/).join("\n") ); this.emit("data", data); if (done && waiting === 0) { this.emit("end"); } }.bind(this) ); }, function () { done = true; if (waiting === 0) { this.emit("end"); } } ) ) .pipe(gulp.dest(outdir)) ) .pipe( es.through( function (data) { this.emit("data", data); }, function () { // temporarily create package.json so that npm install doesn't bark fs.writeFileSync(path.join(outdir, 'package.json'), '{}'); fs.writeFileSync(path.join(outdir, '.nojekyll'), ''); cp.execSync('npm install monaco-editor@0.23', { cwd: outdir }); rimraf.sync(path.join(outdir, 'node_modules/monaco-editor/dev')); rimraf.sync(path.join(outdir, 'node_modules/monaco-editor/esm')); fs.unlinkSync(path.join(outdir, 'package.json')); this.emit("end"); } ) ); } buildWebsiteSeries = gulp.series(cleanWebsiteTask, buildWebsiteTask); gulp.task("build-website", buildWebsiteSeries);