123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- /*
- Copyright 2013 Daniel Wirtz <dcode@dcode.io>
- 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.
- */
- var MetaScript = require("metascript"),
- path = require("path"),
- fs = require("fs");
- var rootDir = path.join(__dirname, ".."),
- srcDir = path.join(__dirname, "..", "src"),
- distDir = path.join(__dirname, "..", "dist"),
- pkg = require(path.join(rootDir, "package.json")),
- filename;
- var scope = {
- VERSION : pkg.version, // Version
-
- // Encodings
-
- ENCODINGS : true, // Include encodings in general (catches all)
- BASE64 : true, // Include base64 encoding
- BINARY : true, // Include binary encoding
- DEBUG : true, // Include debug encoding
- HEX : true, // Include hex encoding
- UTF8 : true, // Include utf8 encoding (required for STRINGS)
-
- // Primitive types
- BYTES : true, // Include bytes
- INTS : true, // Include int types in general (catches all)
- INT8 : true, // Include int8/uint8
- INT16 : true, // Include int16/uint16
- INT32 : true, // Include int32/uint32
- INT64 : true, // Include int64/uint64 with Long.js
-
- FLOATS : true, // Include float types in general (catches all)
- FLOAT32 : true, // Include float32
- FLOAT64 : true, // Include float64
-
- // Varint encoding
-
- VARINTS : true, // Include varint encoding in general (catches all)
- VARINT32 : true, // Include varint32/zigZagVarint32
- VARINT64 : true, // Include varint64/zigZagVarint32 with Long.js
-
- // String support
-
- STRINGS : true, // Include string support in general (catches all)
- UTF8STRING : true, // Include UTF8 encoded strings
- CSTRING : true, // Include C-like null terminated strings
- VSTRING : true, // Include varint32 length prefixed strings
- ISTRING : true, // Include uint32 length prefixed strings
-
- // Other
-
- ALIASES : true, // Include aliases like writeByte, writeShort ..
- INLINE : true, // Inline any assertion code
- VERBOSE_MS : false // Include MetaScript details as comments
- };
- // Optimize for size : INLINE=false, ALIASES=false, VERBOSE_MS=false, WHATEVERYOUDONTNEED=false
- // Optimize for speed : INLINE=true
- if (!scope.UTF8) scope.STRINGS = false;
- // Build node version using Buffers
- scope.NODE = true;
- console.log("Building bytebuffer-node with scope", JSON.stringify(scope, null, 2));
- fs.writeFileSync(
- path.join(distDir, "bytebuffer-node.js"),
- MetaScript.transform(fs.readFileSync(filename = path.join(srcDir, "wrap-node.js")), filename, scope, srcDir)
- );
- // Build browser version using Typed Arrays
- scope.NODE = false;
- scope.DATAVIEW = false;
- delete scope.BUFFERVIEW;
- console.log("Building bytebuffer.js with scope", JSON.stringify(scope, null, 2));
- fs.writeFileSync(
- path.join(distDir, "bytebuffer.js"),
- MetaScript.transform(fs.readFileSync(filename = path.join(srcDir, "wrap.js")), filename, scope)
- );
- // Build alternative browser version using a DataView
- scope.NODE = false;
- scope.DATAVIEW = true;
- console.log("Building bytebuffer-dataview with scope", JSON.stringify(scope, null, 2));
- fs.writeFileSync(
- path.join(distDir, "bytebuffer-dataview.js"),
- MetaScript.transform(fs.readFileSync(filename = path.join(srcDir, "wrap.js")), filename, scope)
- );
- // Update bower.json
- scope = { VERSION: pkg.version };
- console.log("Updating bower.json with scope", JSON.stringify(scope, null, 2));
- fs.writeFileSync(
- path.join(rootDir, "bower.json"),
- MetaScript.transform(fs.readFileSync(filename = path.join(srcDir, "bower.json")), filename, scope, srcDir)
- );
- console.log("Done");
|