[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.

Added warnings for recommended properties

Kasper (Aug 18, 2020, 8:50 AM +0200) 817e75f9 53d0ade5

+32 -13
+32 -13
src/build.js
··· 10 10 const Joi = require('./joi.js').prepare(workingDir) 11 11 const schema = Joi.object({ 12 12 name: Joi.string(), 13 - version: Joi.string(), 14 13 author: Joi.string(), 14 + version: Joi.string(), 15 15 pakager: Joi.object() 16 16 .required() 17 17 .keys({ 18 - name: Joi.string().default(Joi.ref('/name')), 19 - version: Joi.string().default(Joi.ref('/version')), 20 - author: Joi.string().default(Joi.ref('/author')), 21 18 realName: Joi.string().default((parent, helpers) => { 22 - return helpers.state.ancestors[1].name 19 + const value = helpers.state.ancestors[1].name 20 + helpers.warn('any.recommended.default', { value }) 21 + return value 23 22 }), 24 23 appId: Joi.string().default((parent, helpers) => { 25 - return 'com.pakager.'+helpers.state.ancestors[1].name 24 + const value = 'com.example.'+helpers.state.ancestors[1].name 25 + helpers.warn('any.recommended.default', { value }) 26 + return value 26 27 }), 27 28 copyright: Joi.string().default((parent) => { 28 29 const year = new Date().getFullYear() ··· 30 31 }), 31 32 outputDir: Joi.path().default(path.resolve(workingDir, 'dist')), 32 33 backgroundApp: Joi.bool().default(false), 34 + name: Joi.string().default(Joi.ref('/name')), 35 + author: Joi.string().default(Joi.ref('/author')), 36 + version: Joi.string().default(Joi.ref('/version')), 33 37 mac: Joi.object() 34 38 .required() 35 39 .keys({ 36 40 binary: Joi.path().existingFile().required(), 37 - category: Joi.string(), 38 - dmgBackground: Joi.path().existingFile() 39 - .default(path.resolve(__dirname, '../assets/dmg-background.png')), 40 - icon: Joi.path().existingFile().endsWith('png', 'icns'), 41 + category: Joi.string().default((parent, helpers) => { 42 + helpers.warn('any.recommended') 43 + }), 44 + icon: Joi.path().existingFile().endsWith('png', 'icns').default((parent, helpers) => { 45 + helpers.warn('any.recommended') 46 + }), 41 47 formats: Joi.array().unique() 42 48 .items('app', 'dmg', 'zip', 'tar.gz') 43 49 .default([ 'app' ]), 50 + dmgBackground: Joi.path().existingFile() 51 + .default(path.resolve(__dirname, '../assets/dmg-background.png')), 44 52 darkModeSupport: Joi.bool().default(true), 45 53 customInfo: Joi.object().default({}), 46 54 }) ··· 51 59 .or('version', 'pakager.version') 52 60 53 61 try { 54 - const vResult = await schema.validateAsync(packageJson, { allowUnknown: true, abortEarly: false }) 55 - return vResult.pakager 62 + const vResult = await schema.validateAsync(packageJson, { 63 + allowUnknown: true, 64 + abortEarly: false, 65 + warnings: true, 66 + messages: { 67 + 'any.recommended': 'Recommended property {{#label}} is missing', 68 + 'any.recommended.default': 'Recommended property {{#label}} is missing, using default: {{#value}}', 69 + }, 70 + }) 71 + for (const warningDetail of vResult.warning.details) { 72 + log.warn('Config: ' + warningDetail.message) 73 + } 74 + return vResult.value.pakager 56 75 } catch(err) { 57 76 let errorMsg = '' 58 77 for (const detail of err.details) { 59 78 errorMsg += `\n - property ${detail.message}` 60 79 } 61 - log.err('Invalid package.json config:' + errorMsg) 80 + log.err('Invalid config:' + errorMsg) 62 81 } 63 82 } 64 83