From 364556939da131ad59b376515baeaad90722a5b2 Mon Sep 17 00:00:00 2001 From: Yakov Borevich Date: Sun, 28 Feb 2021 21:10:50 +0300 Subject: [PATCH] [win] fix pathes and toolkit execution, works on windows for now --- src/commands/export.ts | 7 ++++--- src/lib/rasterizer.ts | 2 +- src/lib/tools.ts | 25 ++++++++++++++++++------- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/src/commands/export.ts b/src/commands/export.ts index 634b5f0..6d27cbd 100644 --- a/src/commands/export.ts +++ b/src/commands/export.ts @@ -36,14 +36,15 @@ if (settings) { fl.showIdleMessage(false); let originalDoc = fl.getDocumentDOM(); - let originalUri = "file://" + originalDoc.path; + let originalUri = FLfile.platformPathToURI(originalDoc.path); originalDoc.save(false); let exportProjectArchive = settings.exportPath; let exportProjectDir = path.getProjectPrefix() + ".fnx.export/"; let exportProjectPath = exportProjectDir + path.file(exportProjectDir) + ".xfl"; - let exportProjectDirUri = "file://" + exportProjectDir; - let exportProjectPathUri = "file://" + exportProjectPath; + let exportProjectDirUri = FLfile.platformPathToURI(exportProjectDir); + let exportProjectPathUri = FLfile.platformPathToURI(exportProjectPath); + fl.trace("Export Project URI: " + exportProjectPathUri); if (FLfile.exists(exportProjectDirUri)) FLfile.remove(exportProjectDirUri); FLfile.createFolder(exportProjectDirUri); fl.trace("Exporting project"); diff --git a/src/lib/rasterizer.ts b/src/lib/rasterizer.ts index 9dd6f26..ec25d90 100644 --- a/src/lib/rasterizer.ts +++ b/src/lib/rasterizer.ts @@ -55,7 +55,7 @@ export class Rasterizer { this.rasterizeItem(item.name); } - let baseUri = "file://" + path.base(fl.getDocumentDOM().path) + "/LIBRARY/"; + let baseUri = FLfile.platformPathToURI(path.base(fl.getDocumentDOM().path) + "/LIBRARY/"); let result: FlashBitmapItem[] = []; for (let item of fl.getDocumentDOM().library.items.filter(item => item.name in this.bitmapItems)) { let bitmap = item as FlashBitmapItem; diff --git a/src/lib/tools.ts b/src/lib/tools.ts index 4c03ecf..569bba9 100644 --- a/src/lib/tools.ts +++ b/src/lib/tools.ts @@ -101,7 +101,7 @@ export function generateSpriteSheets(bitmaps: FlashBitmapItem[], padding: number } let exporters = attempts.sort( (a, b) => a.getSquare() - b.getSquare())[0].exporters; - let baseUri = "file://" + path.base(fl.getDocumentDOM().path); + let baseUri = FLfile.platformPathToURI(path.base(fl.getDocumentDOM().path)); let idx = 0; let exportedSpriteSheets = ""; //fl.trace(`created ${exporters.length} spritesheets`); @@ -126,7 +126,7 @@ export function generateSpriteSheets(bitmaps: FlashBitmapItem[], padding: number // to rename and move bitmaps to own folder function normalizeLibrary(bitmaps: FlashBitmapItem[]) { let lib = fl.getDocumentDOM().library; - let basePath = `file://${path.base(fl.getDocumentDOM().path)}/LIBRARY`; + let basePath = FLfile.platformPathToURI(`${path.base(fl.getDocumentDOM().path)}/LIBRARY`); let idx = 0; lib.newFolder("gdexp"); for (let bitmap of bitmaps) { @@ -163,8 +163,8 @@ function normalizeLibrary(bitmaps: FlashBitmapItem[]) { // removes bin folder & clears images from library (all required images are stored in atlases already) export function cleanUpProject(path: String) { - FLfile.remove(`file://${path}bin/`) - let rootUri = `file://${path}LIBRARY/`; + FLfile.remove(FLfile.platformPathToURI(`${path}bin/`)) + let rootUri = FLfile.platformPathToURI(`${path}LIBRARY/`); let dirs = [""]; while (dirs.length) { @@ -185,13 +185,24 @@ export function cleanUpProject(path: String) { // invokes toolkig command export function invoke(command: string, args:{ [id: string] : string; } = { }) { let isOSX = (fl.version.indexOf("MAC") != -1); - let doc = fl.getDocumentDOM(); let toolkitPath = `${fl.configDirectory}Commands/Funexpected Tools/toolkit`; if (!isOSX) toolkitPath += ".exe"; let cmd = `"${toolkitPath}" ${command}`; for (let arg in args) { cmd += ` --${arg} "${args[arg]}"`; } - //fl.trace("executing " + cmd); - FLfile.runCommandLine(cmd); + if (isOSX) { + FLfile.runCommandLine(cmd); + return; + } + + // there is smthing wrong with FLfile.runCommandLine + // see https://stackoverflow.com/questions/9116828/jsfl-flfile-runcommandline-properly-escaping-spaces-for-windows-commandline-a + let tmpBatDir = FLfile.platformPathToURI("c:/temp"); + if (!FLfile.exists(tmpBatDir)) { + FLfile.createFolder(tmpBatDir) + } + let tmpBat = "c:/temp/fnxcmd.bat" + FLfile.write(FLfile.platformPathToURI(tmpBat), cmd); + FLfile.runCommandLine(tmpBat); } \ No newline at end of file