91 lines
4.6 KiB
JavaScript
91 lines
4.6 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.Project = void 0;
|
|
const utils_fs_1 = require("@ionic/utils-fs");
|
|
const project_1 = require("@trapezedev/project");
|
|
const path_1 = require("path");
|
|
const input_asset_1 = require("./input-asset");
|
|
const log_1 = require("./util/log");
|
|
class Project extends project_1.MobileProject {
|
|
constructor(projectRoot = process.cwd(), config, assetPath = 'assets') {
|
|
super(projectRoot, config);
|
|
this.assetPath = assetPath;
|
|
this.assets = null;
|
|
this.directory = null;
|
|
this.directory = projectRoot;
|
|
this.assetDir = (0, path_1.join)(projectRoot, assetPath);
|
|
this.detectAssetDir();
|
|
}
|
|
async detectAssetDir() {
|
|
if (this.assetPath === 'assets' && !(await (0, utils_fs_1.pathExists)(this.assetDir))) {
|
|
this.assetDir = (0, path_1.join)(this.projectRoot, 'resources');
|
|
}
|
|
}
|
|
async androidExists() {
|
|
var _a, _b;
|
|
return ((_a = this.config.android) === null || _a === void 0 ? void 0 : _a.path) !== undefined && (await (0, utils_fs_1.pathExists)((_b = this.config.android) === null || _b === void 0 ? void 0 : _b.path));
|
|
}
|
|
async iosExists() {
|
|
var _a, _b;
|
|
return ((_a = this.config.ios) === null || _a === void 0 ? void 0 : _a.path) !== undefined && (await (0, utils_fs_1.pathExists)((_b = this.config.ios) === null || _b === void 0 ? void 0 : _b.path));
|
|
}
|
|
async assetDirExists() {
|
|
return (0, utils_fs_1.pathExists)(this.assetDir);
|
|
}
|
|
assetDirectory() {
|
|
return this.assetDir;
|
|
}
|
|
async loadInputAssets() {
|
|
this.assets = {
|
|
logo: await this.loadLogoInputAsset(),
|
|
logoDark: await this.loadInputAsset('logo-dark', "logo-dark" /* LogoDark */, "any" /* Any */),
|
|
icon: await this.loadInputAsset('icon-only', "icon" /* Icon */, "any" /* Any */),
|
|
iconForeground: await this.loadInputAsset('icon-foreground', "icon-foreground" /* IconForeground */, "any" /* Any */),
|
|
iconBackground: await this.loadInputAsset('icon-background', "icon-background" /* IconBackground */, "any" /* Any */),
|
|
splash: await this.loadInputAsset('splash', "splash" /* Splash */, "any" /* Any */),
|
|
splashDark: await this.loadInputAsset('splash-dark', "splash-dark" /* SplashDark */, "any" /* Any */),
|
|
iosIcon: await this.loadInputAsset('ios/icon', "icon" /* Icon */, "ios" /* Ios */),
|
|
iosSplash: await this.loadInputAsset('ios/splash', "splash" /* Splash */, "ios" /* Ios */),
|
|
iosSplashDark: await this.loadInputAsset('ios/splash-dark', "splash-dark" /* SplashDark */, "ios" /* Ios */),
|
|
androidIcon: await this.loadInputAsset('android/icon', "icon" /* Icon */, "android" /* Android */),
|
|
androidIconForeground: await this.loadInputAsset('android/icon-foreground', "icon" /* Icon */, "android" /* Android */),
|
|
androidIconBackground: await this.loadInputAsset('android/icon-background', "icon" /* Icon */, "android" /* Android */),
|
|
androidSplash: await this.loadInputAsset('android/splash', "splash" /* Splash */, "android" /* Android */),
|
|
androidSplashDark: await this.loadInputAsset('android/splash-dark', "splash-dark" /* SplashDark */, "android" /* Android */),
|
|
androidNotificationIcon: await this.loadInputAsset('android/notification', "notification-icon" /* NotificationIcon */, "android" /* Android */),
|
|
};
|
|
return this.assets;
|
|
}
|
|
async loadLogoInputAsset() {
|
|
let logo = await this.loadInputAsset('logo', "logo" /* Logo */, "any" /* Any */);
|
|
if (!logo) {
|
|
logo = await this.loadInputAsset('icon', "logo" /* Logo */, "any" /* Any */);
|
|
}
|
|
return logo;
|
|
}
|
|
async loadInputAsset(path, kind, platform) {
|
|
let imagePath = null;
|
|
const extensions = ['.png', '.webp', '.jpg', '.jpeg', '.svg'];
|
|
let filename = null;
|
|
for (const ext of extensions) {
|
|
filename = `${path}${ext}`;
|
|
if (await (0, utils_fs_1.pathExists)((0, path_1.join)(this.assetDir, filename))) {
|
|
imagePath = (0, path_1.join)(this.assetDir, filename);
|
|
break;
|
|
}
|
|
}
|
|
if (!imagePath) {
|
|
return null;
|
|
}
|
|
const asset = new input_asset_1.InputAsset(imagePath, kind, platform);
|
|
try {
|
|
await asset.load();
|
|
return asset;
|
|
}
|
|
catch (e) {
|
|
(0, log_1.error)(`Unable to load source image ${filename}: ${e.message}`);
|
|
return null;
|
|
}
|
|
}
|
|
}
|
|
exports.Project = Project;
|