diff --git a/packages/protosprite-cli/src/cli.ts b/packages/protosprite-cli/src/cli.ts index 1abd0c2..745497d 100644 --- a/packages/protosprite-cli/src/cli.ts +++ b/packages/protosprite-cli/src/cli.ts @@ -4,6 +4,7 @@ import * as aseprite from "@kayahr/aseprite"; import childProcess from "child_process"; import fs from "fs"; import { Jimp } from "jimp"; +import os from "os"; import path from "path"; import ProtoSprite, { ProtoSpriteInstance, @@ -20,10 +21,8 @@ import { ExternalSpriteSheetData, isEmbeddedSpriteSheetData } from "../../protosprite-core/dist/src/core/data.js"; -import { findAsperiteBinary } from "./util/findAseprite.js"; +import { findSteamAsepriteBinary } from "./util/findAseprite.js"; import { genTypeDefinitions } from "./util/genDefinitions.js"; -import os from "os"; - const program = new Command() .name("protosprite-cli") @@ -113,11 +112,19 @@ class ProtoSpriteCLI { this.workingDirectory, `${inputFileParts.name}.png` ); - let asepriteBinPath = findAsperiteBinary(); + let asepriteBinPath = findSteamAsepriteBinary(); // Replace spaces in binary path with escapes. if (os.platform() === "darwin") { asepriteBinPath = asepriteBinPath?.replaceAll(" ", "\\ ") ?? null; } + if (asepriteBinPath == null) asepriteBinPath = "aseprite"; + try { + childProcess.execSync(`${asepriteBinPath} --version`); + } catch { + throw new Error( + "Cannot find Steam aseprite binary or 'aseprite' on your PATH" + ); + } const asepriteArgs = [ "-b", "--sheet", diff --git a/packages/protosprite-cli/src/util/findAseprite.ts b/packages/protosprite-cli/src/util/findAseprite.ts index ddea24f..c2414e2 100644 --- a/packages/protosprite-cli/src/util/findAseprite.ts +++ b/packages/protosprite-cli/src/util/findAseprite.ts @@ -2,7 +2,7 @@ import fs from "fs"; import os from "os"; import path from "path"; -export function findAsperiteBinary(): string | null { +export function findSteamAsepriteBinary(): string | null { const platform = os.platform(); const steamInstallPath = getSteamInstallPath(platform);