time-to-botec/squiggle/node_modules/@stdlib/random/base/reviver/scripts/build.js
NunoSempere b6addc7f05 feat: add the node modules
Necessary in order to clearly see the squiggle hotwiring.
2022-12-03 12:44:49 +00:00

138 lines
3.2 KiB
JavaScript

/**
* @license Apache-2.0
*
* Copyright (c) 2020 The Stdlib Authors.
*
* 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.
*/
'use strict';
// MODULES //
var resolve = require( 'path' ).resolve;
var logger = require( 'debug' );
var readDir = require( '@stdlib/fs/read-dir' ).sync;
var exists = require( '@stdlib/fs/exists' ).sync;
var writeFile = require( '@stdlib/fs/write-file' ).sync;
var isPRNGLike = require( '@stdlib/assert/is-prng-like' );
var licenseHeader = require( '@stdlib/_tools/licenses/header' );
// VARIABLES //
var debug = logger( 'reviver:build' );
var OPTS = {
'encoding': 'utf8'
};
var SPDX = 'Apache-2.0';
var YEAR = (new Date()).getFullYear();
var COPYRIGHT = 'The Stdlib Authors';
// FUNCTIONS //
/**
* Main execution sequence.
*
* @private
*/
function main() {
var dpath;
var fpath;
var opath;
var tmp1;
var tmp2;
var prng;
var dirs;
var pkgs;
var str;
var err;
var pkg;
var p;
var i;
dpath = resolve( __dirname, '..', '..' );
debug( 'Reading namespace directory contents: %s', dpath );
dirs = readDir( dpath );
if ( dirs instanceof Error ) {
debug( 'Encountered an error when attempting to read namespace directory contents: %s', err.message );
return;
}
debug( 'Finding packages...' );
pkgs = [];
for ( i = 0; i < dirs.length; i++ ) {
p = resolve( dpath, dirs[ i ] );
fpath = resolve( p, 'package.json' );
if ( exists( fpath ) ) {
prng = require( p ); // eslint-disable-line stdlib/no-dynamic-require
if ( isPRNGLike( prng ) ) {
pkg = require( fpath ); // eslint-disable-line stdlib/no-dynamic-require
pkgs.push( [ pkg.name, prng.NAME ] );
}
}
}
debug( 'Found %d packages.', pkgs.length );
debug( 'Generating script...' );
str = '';
str += licenseHeader( SPDX, 'js', {
'year': YEAR,
'copyright': COPYRIGHT
});
str += '\n';
str += '// This file is generated using `scripts/build.js`.\n\n';
str += '\'use strict\';\n';
str += '\n';
str += '// MODULES //\n';
str += '\n';
tmp1 = [];
tmp2 = [];
for ( i = 0; i < pkgs.length; i++ ) {
pkg = pkgs[ i ];
tmp1.push( 'var prng'+i+' = require( \''+pkg[ 0 ]+'\' );' );
tmp2.push( 'prngs[ \''+pkg[ 1 ]+'\' ] = prng'+i+'.factory;' );
}
str += tmp1.join( '\n' );
str += '\n';
str += '\n';
str += '\n';
str += '// MAIN //\n';
str += '\n';
str += 'var prngs = {};\n';
str += tmp2.join( '\n' );
str += '\n';
str += '\n';
str += '\n';
str += '// EXPORTS //\n';
str += '\n';
str += 'module.exports = prngs;\n';
opath = resolve( __dirname, '..', 'lib', 'prngs.js' );
debug( 'Writing script to file: %s', opath );
err = writeFile( opath, str, OPTS );
if ( err ) {
debug( 'Encountered an error when attempting to write script to file: %s', err.message );
return;
}
debug( 'Successfully wrote script to file.' );
}
// MAIN //
main();