[READ-ONLY] Mirror of https://github.com/probablykasper/embler. Turn binaries into applications npmjs.com/package/embler
app builder cli dmg macos node package packager
0

Configure Feed

Select the types of activity you want to include in your feed.

More and improved options

Kasper (Aug 16, 2020, 4:44 AM +0200) 5dee039f 597fd995

+51 -30
+49 -30
build.js
··· 11 11 const dir = process.cwd() 12 12 const packageJsonPath = path.join(dir, 'package.json') 13 13 const packageJson = require(packageJsonPath) 14 + const year = new Date().getFullYear() 14 15 15 16 function log(...msg) { console.log(...msg) } 16 17 log.err = function (...msg) { ··· 21 22 22 23 log('Packagr', packagrPjson.version) 23 24 24 - if (fs.existsSync(packageJsonPath)) log(`Located package.json (${packageJsonPath})`) 25 - else log.err(`package.json not found (${packageJsonPath})`) 25 + function parseOptions() { 26 + if (fs.existsSync(packageJsonPath)) log(`Located package.json (${packageJsonPath})`) 27 + else log.err(`package.json not found (${packageJsonPath})`) 26 28 27 - const schema = Joi.object({ 28 - version: Joi.string(), 29 - author: Joi.string(), 30 - packagr: Joi.object() 31 - .required() 32 - .keys({ 33 - appName: Joi.string(), 34 - appId: Joi.string(), 35 - version: Joi.string().default(Joi.ref('.version')), 36 - author: Joi.string().default(Joi.ref('...author')), 37 - copyright: Joi.string(), 38 - mac: Joi.object() 39 - .required() 40 - .keys({ 41 - category: Joi.string(), 42 - targets: Joi.array().items('app').default(['app']), 43 - backgroundApp: Joi.bool().default(false), 44 - }) 45 - }) 46 - }) 47 - .or('author', 'packagr.author') 29 + const schema = Joi.object({ 30 + name: Joi.string().required(), 31 + version: Joi.string(), 32 + author: Joi.string(), 33 + packagr: Joi.object() 34 + .required() 35 + .keys({ 36 + name: Joi.string().default(Joi.ref('/name')), 37 + appName: Joi.string().default((parent, helpers) => { 38 + return helpers.state.ancestors[1].name 39 + }), 40 + appId: Joi.string().default((parent, helpers) => { 41 + return 'com.packagr.'+helpers.state.ancestors[1].name 42 + }), 43 + version: Joi.string().default(Joi.ref('/version')), 44 + author: Joi.string().default(Joi.ref('/author')), 45 + copyright: Joi.string().default((parent, helpers) => { 46 + return `Copyright © ${year} ${parent.author}` 47 + }), 48 + outputDir: Joi.string().default('dist'), 49 + backgroundApp: Joi.bool().default(false), 50 + mac: Joi.object() 51 + .required() 52 + .keys({ 53 + category: Joi.string().required(), 54 + icon: Joi.string(), 55 + targets: Joi.array().items('app').default(['app']), 56 + backgroundApp: Joi.bool().default(false), 57 + }) 58 + }) 59 + }) 60 + .or('name', 'packagr.name') 61 + .or('author', 'packagr.author') 62 + .or('version', 'packagr.version') 48 63 49 - const vResult = schema.validate(packageJson, { allowUnknown: true, abortEarly: false }) 50 - if (vResult.error) { 51 - let errorMsg = '' 52 - for (const err of vResult.error.details) { 53 - errorMsg += `\n - property ${err.message}` 64 + const vResult = schema.validate(packageJson, { allowUnknown: true, abortEarly: false }) 65 + if (vResult.error) { 66 + let errorMsg = '' 67 + for (const err of vResult.error.details) { 68 + errorMsg += `\n - property ${err.message}` 69 + } 70 + log.err('Invalid package.json config:' + errorMsg) 54 71 } 55 - log.err('Invalid package.json config:' + errorMsg) 56 - 72 + return vResult.value 57 73 } 74 + 75 + const options = parseOptions() 76 + log(options)
+2
test/package.json
··· 7 7 }, 8 8 "license": "ISC", 9 9 "packagr": { 10 + "author": "kasper.space", 11 + "version": "1.0.0", 10 12 "mac": { 11 13 "category": "public.app-category.utilities" 12 14 }