From 87a1c6621ca60a1072c379d3ba7e3e5839cd43cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alfred=20W=C3=A4rns=C3=A4ter?= Date: Thu, 29 Jul 2021 13:20:30 +0200 Subject: [PATCH] ported nib2cib from narwhal to node, it now build using objj-jake --- Jake/applicationtask.js | 2 +- Tools/Jakefile | 3 +- Tools/fontinfo/Jakefile | 4 +- Tools/imagesize/Jakefile | 2 +- Tools/nib2cib/Converter.j | 78 +++++++++++++++++++------- Tools/nib2cib/NSCustomResource.j | 16 ++++-- Tools/nib2cib/NSFont.j | 2 +- Tools/nib2cib/NSNib.j | 14 +++-- Tools/nib2cib/Nib2Cib.j | 10 ++-- Tools/nib2cib/Nib2CibKeyedUnarchiver.j | 22 ++++---- Tools/nib2cib/main.j | 4 +- common.jake | 6 +- package-lock.json | 59 +++++++++++++++++-- package.json | 7 ++- 14 files changed, 164 insertions(+), 65 deletions(-) diff --git a/Jake/applicationtask.js b/Jake/applicationtask.js index eed93c8cd..4ff965937 100644 --- a/Jake/applicationtask.js +++ b/Jake/applicationtask.js @@ -22,7 +22,7 @@ var /* FILE = require("file"), */ OS = require("os"), - Jake = require("jake"), + Jake = require("objj-jake"), BundleTask = (require("./bundletask")).BundleTask; var fs = require("fs-extra"); diff --git a/Tools/Jakefile b/Tools/Jakefile index 1cee69dda..c1205abb8 100644 --- a/Tools/Jakefile +++ b/Tools/Jakefile @@ -1,4 +1,3 @@ - require("../common.jake"); // nib2cib uses fontinfo and imagesize and capp uses nib2cib @@ -6,4 +5,4 @@ require("../common.jake"); //subtasks(["fontinfo", "imagesize"], ["clean", "clobber"]); -//subtasks(["fontinfo", "imagesize", "nib2cib"], ["build", /*"clean", "clobber"*/]); +subtasks(["fontinfo", "imagesize", "nib2cib"], ["build", /*"clean", "clobber"*/]); diff --git a/Tools/fontinfo/Jakefile b/Tools/fontinfo/Jakefile index 116dc1660..273bb51f1 100644 --- a/Tools/fontinfo/Jakefile +++ b/Tools/fontinfo/Jakefile @@ -1,7 +1,7 @@ require("../../common.jake"); var /* OS = require("os"), */ - task = require("jake").task; + task = require("objj-jake").task; //SYSTEM = require("system"); const child_process = require("child_process"); @@ -21,7 +21,7 @@ task ("build", function() var xcodebuild = process.env.CAPP_BUILD ? "xcodebuild " : "CAPP_BUILD=../../Build xcodebuild "; try { - child_process.execSync(xcodebuild + args); + console.log(child_process.execSync(xcodebuild + args).toString()); } catch (error) { process.exit(1); } diff --git a/Tools/imagesize/Jakefile b/Tools/imagesize/Jakefile index e396f3c3a..c85d4cb26 100644 --- a/Tools/imagesize/Jakefile +++ b/Tools/imagesize/Jakefile @@ -3,7 +3,7 @@ require("../../common.jake"); const child_process = require("child_process"); var /* OS = require("os"), */ - task = require("jake").task; + task = require("objj-jake").task; task ("build", function() { diff --git a/Tools/nib2cib/Converter.j b/Tools/nib2cib/Converter.j index 330d3c526..d9dfa017e 100644 --- a/Tools/nib2cib/Converter.j +++ b/Tools/nib2cib/Converter.j @@ -34,10 +34,14 @@ @global java -var FILE = require("file"), - OS = require("os"), +var path = require("path"); +var fs = require("fs"); +var child_process = require("child_process"); - SharedConverter = nil; +/* var FILE = require("file"), + OS = require("os"), */ + +var SharedConverter = nil; NibFormatUndetermined = 0; NibFormatMac = 1; @@ -78,13 +82,14 @@ ConverterConversionException = @"ConverterConversionException"; - (CPData)convert { // Assume its a Mac file. - var inferredFormat = NibFormatMac; + var inferredFormat = NibFormatMac; // Some .xibs are iPhone nibs, check the actual contents in this case. - if (FILE.extension(inputPath) !== ".nib" && FILE.isFile(inputPath) && - FILE.read(inputPath, { charset:"UTF-8" }).indexOf("", bundleIdentifier ? " (" + bundleIdentifier + ")" : framework ? " ()" : "", - resourceInfo ? FILE.canonical(resourceInfo.path) : "", + resourceInfo ? fs.realpathSync(resourceInfo.path) : "", size.width, size.height); } diff --git a/Tools/nib2cib/NSFont.j b/Tools/nib2cib/NSFont.j index 1aea6d5e9..8da79712e 100644 --- a/Tools/nib2cib/NSFont.j +++ b/Tools/nib2cib/NSFont.j @@ -27,7 +27,7 @@ IBDefaultFontFaceLegacy = @"Lucida Grande"; IBDefaultFontSize = 13.0; var OS = require("os"), - fontinfo = require("cappuccino/fontinfo").fontinfo; + fontinfo = require("objj-fontinfo").fontinfo; @implementation CPFont (NSCoding) diff --git a/Tools/nib2cib/NSNib.j b/Tools/nib2cib/NSNib.j index f25f49e63..f087f959f 100644 --- a/Tools/nib2cib/NSNib.j +++ b/Tools/nib2cib/NSNib.j @@ -24,10 +24,14 @@ @class Converter -var FILE = require("file"), +var fs = require("fs"); +var os = require("os"); +var uuid = require("uuid"); + +/* var FILE = require("file"), OS = require("os"), UUID = require("uuid"); - +*/ @implementation CPCib (NSCoding) - (id)NS_initWithCoder:(CPCoder)aCoder @@ -35,10 +39,12 @@ var FILE = require("file"), self = [super init]; // FIXME: change /tmp/ to os.tmpDir() in Node - var nibPath = @"/tmp/" + UUID.uuid() + ".nib", + var nibPath = @"/tmp/" + uuid.v1() + ".nib", data = [aCoder decodeObjectForKey:@"NSNibFileData"]; - FILE.write(nibPath, data.bytes(), { charset:"UTF-16" }); + fs.writeFileSync(nibPath, data.bytes(), { encoding: "utf16le"}); + + //FILE.write(nibPath, data.bytes(), { charset:"UTF-16" }); var converter = [[Converter alloc] initWithInputPath:nibPath outputPath:nil]; diff --git a/Tools/nib2cib/Nib2Cib.j b/Tools/nib2cib/Nib2Cib.j index fcf733181..18627d31f 100644 --- a/Tools/nib2cib/Nib2Cib.j +++ b/Tools/nib2cib/Nib2Cib.j @@ -30,18 +30,16 @@ @import "Nib2CibKeyedUnarchiver.j" @import "Converter.j" @import "Converter+Mac.j" -import { constants } from "buffer" - Nib2CibColorizeOutput = YES; -const PATH = require("path"); -const fs = require("fs"); +var PATH = require("path"); +var fs = require("fs"); var /* FILE = require("file"), */ /* OS = require("os"), */ - SYS = require("system"), - FileList = require("jake").FileList, + //SYS = require("system"), + FileList = require("objj-jake").FileList, stream = require("objj-runtime").term.stream, StaticResource = require("objj-runtime").StaticResource, diff --git a/Tools/nib2cib/Nib2CibKeyedUnarchiver.j b/Tools/nib2cib/Nib2CibKeyedUnarchiver.j index 164b188c1..f5a2b845e 100644 --- a/Tools/nib2cib/Nib2CibKeyedUnarchiver.j +++ b/Tools/nib2cib/Nib2CibKeyedUnarchiver.j @@ -26,8 +26,10 @@ @class Nib2Cib -var FILE = require("file"); +//var FILE = require("file"); +var fs = require("fs"); +var node_path = require("path"); @implementation Nib2CibKeyedUnarchiver : CPKeyedUnarchiver { @@ -87,7 +89,7 @@ var FILE = require("file"); - (CPString)_resourcePathForName:(CPString)aName inDirectory:(CPString)directory { - var pathGroups = [FILE.listPaths(directory)]; + var pathGroups = [listPaths(directory)]; while (pathGroups.length > 0) { @@ -99,13 +101,11 @@ var FILE = require("file"); { var path = paths[index]; - if (FILE.basename(path) === aName) + if (node_path.basename(path) === aName) return path; - - else if (FILE.isDirectory(path)) - pathGroups.push(FILE.listPaths(path)); - - else if (!FILE.extension(aName) && FILE.basename(path).replace(/\.[^.]*$/, "") === aName) + else if (fs.lstatSync(path).isDirectory()) + pathGroups.push(listPaths(path)); + else if (!node_path.extname(aName) && node_path.basename(path).replace(/\.[^.]*$/, "") === aName) return path; } } @@ -115,13 +115,13 @@ var FILE = require("file"); @end -FILE.listPaths = function(aPath) +listPaths = function(aPath) { - var paths = FILE.list(aPath), + var paths = fs.readdirSync(aPath), count = paths.length; while (count--) - paths[count] = FILE.join(aPath, paths[count]); + paths[count] = node_path.join(aPath, paths[count]); return paths; }; diff --git a/Tools/nib2cib/main.j b/Tools/nib2cib/main.j index 1bdc7aef1..671e3dcbe 100644 --- a/Tools/nib2cib/main.j +++ b/Tools/nib2cib/main.j @@ -22,8 +22,8 @@ @import "Nib2Cib.j" -var OS = require("os"), - stream = require("narwhal/term").stream; +/* var OS = require("os"), + stream = require("narwhal/term").stream; */ function main(args) diff --git a/common.jake b/common.jake index 051627e50..97212c57a 100644 --- a/common.jake +++ b/common.jake @@ -269,8 +269,8 @@ function systemSync(command) child_process.execSync(command, {stdio: 'inherit'}); return 0; } catch (error) { - console.log(error); - console.log(error.output.toString()); + //console.log(error); + //console.log(error.output.toString()); return error.status; } } @@ -308,7 +308,7 @@ global.executableExists = function(/*String*/ executableName) return null; }; -$OBJJ_TEMPLATE_EXECUTABLE = path.join($HOME_DIR, "Objective-J", "CommonJS", "objj-executable"); +$OBJJ_TEMPLATE_EXECUTABLE = path.join(__dirname, "Objective-J", "CommonJS", "objj-executable"); global.make_objj_executable = function(aPath) { diff --git a/package-lock.json b/package-lock.json index f2444c635..e4c9f5435 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,8 +9,11 @@ "dependencies": { "fs-extra": "^10.0.0", "glob": "^7.1.7", - "objj-jake": "file:../jake", - "objj-runtime": "file:../objj-runtime" + "objj-fontinfo": "file:../objj-fontinfo", + "objj-imagesize": "file:../objj-imagesize", + "objj-jake": "1.0.2", + "objj-runtime": "file:../objj-runtime", + "uuid": "^8.3.2" }, "devDependencies": { "@types/node": "^15.12.4", @@ -21,7 +24,8 @@ }, "../jake": { "name": "objj-jake", - "version": "1.0.1", + "version": "1.0.2", + "extraneous": true, "dependencies": { "glob": "^7.1.7", "minimatch": "^3.0.4" @@ -30,6 +34,12 @@ "objj-jake": "bin/jake" } }, + "../objj-fontinfo": { + "version": "1.0.0" + }, + "../objj-imagesize": { + "version": "1.0.0" + }, "../objj-runtime": { "version": "0.4.6", "integrity": "sha512-KnGBEEOSYi2mWMnrmlqyg/pWTw0h58pRfD7r1Uz9YB6RkZ4YodVASF+9+1uwr8ZRV9Pe/VPhemcFGJA+bJvPwQ==", @@ -2350,10 +2360,26 @@ "node": ">=0.10.0" } }, - "node_modules/objj-jake": { - "resolved": "../jake", + "node_modules/objj-fontinfo": { + "resolved": "../objj-fontinfo", "link": true }, + "node_modules/objj-imagesize": { + "resolved": "../objj-imagesize", + "link": true + }, + "node_modules/objj-jake": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/objj-jake/-/objj-jake-1.0.2.tgz", + "integrity": "sha512-Nh/Ki8cGI2jDsFmweHM58CM6ZCUtxGjPLDwzyXfvA/G8Dfmq/9g+APjBQfBGteWIDufRFGyI2jNz5YepyqZlRw==", + "dependencies": { + "glob": "^7.1.7", + "minimatch": "^3.0.4" + }, + "bin": { + "objj-jake": "bin/jake" + } + }, "node_modules/objj-runtime": { "resolved": "../objj-runtime", "link": true @@ -2634,6 +2660,14 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/v8flags": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", @@ -3442,8 +3476,16 @@ "isobject": "^3.0.1" } }, + "objj-fontinfo": { + "version": "file:../objj-fontinfo" + }, + "objj-imagesize": { + "version": "file:../objj-imagesize" + }, "objj-jake": { - "version": "file:../jake", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/objj-jake/-/objj-jake-1.0.2.tgz", + "integrity": "sha512-Nh/Ki8cGI2jDsFmweHM58CM6ZCUtxGjPLDwzyXfvA/G8Dfmq/9g+APjBQfBGteWIDufRFGyI2jNz5YepyqZlRw==", "requires": { "glob": "^7.1.7", "minimatch": "^3.0.4" @@ -4651,6 +4693,11 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + }, "v8flags": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", diff --git a/package.json b/package.json index 459dacc3f..8e837d1eb 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,10 @@ "dependencies": { "fs-extra": "^10.0.0", "glob": "^7.1.7", - "objj-jake": "1.0.1", - "objj-runtime": "file:../objj-runtime" + "objj-fontinfo": "file:../objj-fontinfo", + "objj-imagesize": "file:../objj-imagesize", + "objj-jake": "1.0.2", + "objj-runtime": "file:../objj-runtime", + "uuid": "^8.3.2" } }