UNPKG

appiconkit

Version:

An app icon/image assets generator for Apple platforms and favicon for web.

81 lines (80 loc) 3.06 kB
#!/usr/bin/env node "use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; var _a; Object.defineProperty(exports, "__esModule", { value: true }); var commander_1 = require("commander"); var appiconkit_1 = require("./appiconkit"); var fs_1 = __importDefault(require("fs")); var jimp_1 = __importDefault(require("jimp")); var pkg = require('../package.json'); var program = new commander_1.Command(); program .version(pkg.version, '-v, --version', 'output the version number') .description(pkg.description) .usage('') .argument('<input>', 'input path of image') .argument('[output]', 'output path of generated assets') .option('-t, --type <type>', 'type for generated asset', 'icon') .option('-p, --platform <platform>', 'platform for icon set', 'ios') .option('-f, --format <format>', 'format for generated images', 'png') .option('-W, --width <number>', 'width for image set', "" + jimp_1.default.AUTO) .option('-H, --height <number>', 'height for image set', "" + jimp_1.default.AUTO); program.parse(process.argv); function buildOptions(program) { var options = program.opts(); var programType = options.type.toLowerCase(); var typeSet = new Set(['icon', 'image', 'iconset', 'imageset']); if (!typeSet.has(programType)) { programType = 'icon'; } var programPlatform = options.platform.toLowerCase(); var platformSet = new Set(['ios', 'iphone', 'ipad', 'watchos', 'watch', 'macos', 'mac', 'web']); if (!platformSet.has(programPlatform)) { programPlatform = 'ios'; } var programFormat = options.format.toLowerCase(); var formatSet = new Set(['bmp', 'gif', 'jpeg', 'png', 'tiff', 'default']); // For icons, only generate PNG. if (!formatSet.has(programFormat) || programType === 'icon') { programFormat = 'png'; } // For images, if on Apple platform, we only generate JPEG or PNG. if (programType === 'image' && programPlatform !== 'web' && programFormat !== 'jpeg' && programFormat !== 'png') { programFormat = 'png'; } return { type: programType, platform: programPlatform, width: Number(options.width), height: Number(options.height), format: programFormat, }; } if (program.args.length < 1) { console.error('Error: must provide an input image.'); process.exit(1); } var input = program.args[0]; if (!fs_1.default.existsSync(input)) { console.error('Error: input image must be valid.'); process.exit(1); } var output = (_a = program.args[1]) !== null && _a !== void 0 ? _a : process.cwd(); if (!fs_1.default.existsSync(output)) { try { fs_1.default.mkdirSync(output); } catch (err) { console.error(err.message); process.exit(1); } } var generator = new appiconkit_1.IconGenerator(); generator .generateImageAssets(input, output, buildOptions(program)) .catch(function (e) { console.error(e.message); });