| 
									
										
										
										
											2020-04-30 02:03:26 +08:00
										 |  |  | #!/usr/bin/env node
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*! | 
					
						
							|  |  |  |  * Script to create the built examples zip archive; | 
					
						
							|  |  |  |  * requires the `zip` command to be present! | 
					
						
							|  |  |  |  * Copyright 2020 The Bootstrap Authors | 
					
						
							| 
									
										
										
										
											2020-06-17 02:41:47 +08:00
										 |  |  |  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 | 
					
						
							| 
									
										
										
										
											2020-04-30 02:03:26 +08:00
										 |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 'use strict' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const path = require('path') | 
					
						
							|  |  |  | const sh = require('shelljs') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const { version, version_short: versionShort } = require('../package.json') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const folderName = `bootstrap-${version}-examples` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | sh.config.fatal = true | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if (!sh.test('-d', '_gh_pages')) { | 
					
						
							| 
									
										
										
										
											2020-05-11 23:01:18 +08:00
										 |  |  |   throw new Error('The "_gh_pages" folder does not exist, did you forget building the docs?') | 
					
						
							| 
									
										
										
										
											2020-04-30 02:03:26 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // switch to the root dir
 | 
					
						
							|  |  |  | sh.cd(path.join(__dirname, '..')) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // remove any previously created folder with the same name
 | 
					
						
							|  |  |  | sh.rm('-rf', folderName) | 
					
						
							| 
									
										
										
										
											2020-05-11 23:01:18 +08:00
										 |  |  | // create any folders so that `cp` works
 | 
					
						
							| 
									
										
										
										
											2020-04-30 02:03:26 +08:00
										 |  |  | sh.mkdir('-p', folderName) | 
					
						
							| 
									
										
										
										
											2020-05-11 23:01:18 +08:00
										 |  |  | sh.mkdir('-p', `${folderName}/assets/brand/`) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | sh.cp('-Rf', `_gh_pages/docs/${versionShort}/examples/*`, folderName) | 
					
						
							|  |  |  | sh.cp('-Rf', `_gh_pages/docs/${versionShort}/dist/`, `${folderName}/assets/`) | 
					
						
							|  |  |  | // also copy the two brand images we use in the examples
 | 
					
						
							|  |  |  | sh.cp('-f', [ | 
					
						
							| 
									
										
										
										
											2020-07-08 17:46:23 +08:00
										 |  |  |   `_gh_pages/docs/${versionShort}/assets/brand/bootstrap-logo.svg`, | 
					
						
							|  |  |  |   `_gh_pages/docs/${versionShort}/assets/brand/bootstrap-logo-white.svg` | 
					
						
							| 
									
										
										
										
											2020-05-11 23:01:18 +08:00
										 |  |  | ], `${folderName}/assets/brand/`) | 
					
						
							| 
									
										
										
										
											2020-04-30 02:03:26 +08:00
										 |  |  | sh.rm(`${folderName}/index.html`) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-11 23:01:18 +08:00
										 |  |  | // get all examples' HTML files
 | 
					
						
							| 
									
										
										
										
											2020-04-30 02:03:26 +08:00
										 |  |  | sh.find(`${folderName}/**/*.html`).forEach(file => { | 
					
						
							| 
									
										
										
										
											2020-05-11 23:01:18 +08:00
										 |  |  |   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) | 
					
						
							| 
									
										
										
										
											2020-04-30 02:03:26 +08:00
										 |  |  | }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // create the zip file
 | 
					
						
							|  |  |  | sh.exec(`zip -r9 "${folderName}.zip" "${folderName}"`, { fatal: true }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // remove the folder we created
 | 
					
						
							|  |  |  | sh.rm('-rf', folderName) |