appiconkit
Version:
An app icon/image assets generator for Apple platforms and favicon for web.
81 lines (80 loc) • 3.06 kB
JavaScript
;
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);
});