aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/twbs/bootstrap/build/zip-examples.mjs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/twbs/bootstrap/build/zip-examples.mjs')
-rw-r--r--vendor/twbs/bootstrap/build/zip-examples.mjs101
1 files changed, 101 insertions, 0 deletions
diff --git a/vendor/twbs/bootstrap/build/zip-examples.mjs b/vendor/twbs/bootstrap/build/zip-examples.mjs
new file mode 100644
index 000000000..6b44d45b1
--- /dev/null
+++ b/vendor/twbs/bootstrap/build/zip-examples.mjs
@@ -0,0 +1,101 @@
+#!/usr/bin/env node
+
+/*!
+ * Script to create the built examples zip archive;
+ * requires the `zip` command to be present!
+ * Copyright 2020-2023 The Bootstrap Authors
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */
+
+import fs from 'node:fs/promises'
+import path from 'node:path'
+import { fileURLToPath } from 'node:url'
+import sh from 'shelljs'
+
+const __dirname = path.dirname(fileURLToPath(import.meta.url))
+
+const pkgJson = path.join(__dirname, '../package.json')
+const pkg = JSON.parse(await fs.readFile(pkgJson, 'utf8'))
+
+const versionShort = pkg.config.version_short
+const distFolder = `bootstrap-${pkg.version}-examples`
+const rootDocsDir = '_site'
+const docsDir = `${rootDocsDir}/docs/${versionShort}/`
+
+// these are the files we need in the examples
+const cssFiles = [
+ 'bootstrap.min.css',
+ 'bootstrap.min.css.map',
+ 'bootstrap.rtl.min.css',
+ 'bootstrap.rtl.min.css.map'
+]
+const jsFiles = [
+ 'bootstrap.bundle.min.js',
+ 'bootstrap.bundle.min.js.map'
+]
+const imgFiles = [
+ 'bootstrap-logo.svg',
+ 'bootstrap-logo-white.svg'
+]
+const staticJsFiles = [
+ 'color-modes.js'
+]
+
+sh.config.fatal = true
+
+if (!sh.test('-d', rootDocsDir)) {
+ throw new Error(`The "${rootDocsDir}" folder does not exist, did you forget building the docs?`)
+}
+
+// switch to the root dir
+sh.cd(path.join(__dirname, '..'))
+
+// remove any previously created folder/zip with the same name
+sh.rm('-rf', [distFolder, `${distFolder}.zip`])
+
+// create any folders so that `cp` works
+sh.mkdir('-p', [
+ distFolder,
+ `${distFolder}/assets/brand/`,
+ `${distFolder}/assets/dist/css/`,
+ `${distFolder}/assets/dist/js/`,
+ `${distFolder}/assets/js/`
+])
+
+sh.cp('-Rf', `${docsDir}/examples/*`, distFolder)
+
+for (const file of cssFiles) {
+ sh.cp('-f', `${docsDir}/dist/css/${file}`, `${distFolder}/assets/dist/css/`)
+}
+
+for (const file of jsFiles) {
+ sh.cp('-f', `${docsDir}/dist/js/${file}`, `${distFolder}/assets/dist/js/`)
+}
+
+for (const file of imgFiles) {
+ sh.cp('-f', `${docsDir}/assets/brand/${file}`, `${distFolder}/assets/brand/`)
+}
+
+for (const file of staticJsFiles) {
+ sh.cp('-f', `${docsDir}/assets/js/${file}`, `${distFolder}/assets/js/`)
+}
+
+sh.rm(`${distFolder}/index.html`)
+
+// get all examples' HTML files
+for (const file of sh.find(`${distFolder}/**/*.html`)) {
+ const fileContents = sh.cat(file)
+ .toString()
+ .replace(new RegExp(`"/docs/${versionShort}/`, 'g'), '"../')
+ .replace(/"..\/dist\//g, '"../assets/dist/')
+ .replace(/(<link href="\.\.\/.*) integrity=".*>/g, '$1>')
+ .replace(/(<script src="\.\.\/.*) integrity=".*>/g, '$1></script>')
+ .replace(/( +)<!-- favicons(.|\n)+<style>/i, ' <style>')
+ new sh.ShellString(fileContents).to(file)
+}
+
+// create the zip file
+sh.exec(`zip -qr9 "${distFolder}.zip" "${distFolder}"`)
+
+// remove the folder we created
+sh.rm('-rf', distFolder)