X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.maps.server%2Fnode%2Fnode-v4.8.0-win-x64%2Fnode_modules%2Fnpm%2Fnode_modules%2Finit-package-json%2Finit-package-json.js;fp=org.simantics.maps.server%2Fnode%2Fnode-v4.8.0-win-x64%2Fnode_modules%2Fnpm%2Fnode_modules%2Finit-package-json%2Finit-package-json.js;h=7dc4b0a392c2fd5b4e24cab76356034f343ddbca;hb=2529be6d456deeb07c128603ce4971f1dc29b695;hp=0000000000000000000000000000000000000000;hpb=2636fc31c16c23711cf2b06a4ae8537bba9c1d35;p=simantics%2Fdistrict.git diff --git a/org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/node_modules/init-package-json/init-package-json.js b/org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/node_modules/init-package-json/init-package-json.js new file mode 100644 index 00000000..7dc4b0a3 --- /dev/null +++ b/org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/node_modules/init-package-json/init-package-json.js @@ -0,0 +1,151 @@ + +module.exports = init +module.exports.yes = yes + +var PZ = require('promzard').PromZard +var path = require('path') +var def = require.resolve('./default-input.js') + +var fs = require('fs') +var semver = require('semver') +var read = require('read') + +// to validate the data object at the end as a worthwhile package +// and assign default values for things. +// readJson.extras(file, data, cb) +var readJson = require('read-package-json') + +function yes (conf) { + return !!( + conf.get('yes') || conf.get('y') || + conf.get('force') || conf.get('f') + ) +} + +function init (dir, input, config, cb) { + if (typeof config === 'function') + cb = config, config = {} + + // accept either a plain-jane object, or a config object + // with a "get" method. + if (typeof config.get !== 'function') { + var data = config + config = { + get: function (k) { + return data[k] + }, + toJSON: function () { + return data + } + } + } + + var packageFile = path.resolve(dir, 'package.json') + input = path.resolve(input) + var pkg + var ctx = { yes: yes(config) } + + var es = readJson.extraSet + readJson.extraSet = es.filter(function (fn) { + return fn.name !== 'authors' && fn.name !== 'mans' + }) + readJson(packageFile, function (er, d) { + readJson.extraSet = es + + if (er) pkg = {} + else pkg = d + + ctx.filename = packageFile + ctx.dirname = path.dirname(packageFile) + ctx.basename = path.basename(ctx.dirname) + if (!pkg.version || !semver.valid(pkg.version)) + delete pkg.version + + ctx.package = pkg + ctx.config = config || {} + + // make sure that the input is valid. + // if not, use the default + var pz = new PZ(input, ctx) + pz.backupFile = def + pz.on('error', cb) + pz.on('data', function (data) { + Object.keys(data).forEach(function (k) { + if (data[k] !== undefined && data[k] !== null) pkg[k] = data[k] + }) + + // only do a few of these. + // no need for mans or contributors if they're in the files + var es = readJson.extraSet + readJson.extraSet = es.filter(function (fn) { + return fn.name !== 'authors' && fn.name !== 'mans' + }) + readJson.extras(packageFile, pkg, function (er, pkg) { + readJson.extraSet = es + if (er) return cb(er, pkg) + pkg = unParsePeople(pkg) + // no need for the readme now. + delete pkg.readme + delete pkg.readmeFilename + + // really don't want to have this lying around in the file + delete pkg._id + + // ditto + delete pkg.gitHead + + // if the repo is empty, remove it. + if (!pkg.repository) + delete pkg.repository + + // readJson filters out empty descriptions, but init-package-json + // traditionally leaves them alone + if (!pkg.description) + pkg.description = data.description + + var d = JSON.stringify(pkg, null, 2) + '\n' + function write (yes) { + fs.writeFile(packageFile, d, 'utf8', function (er) { + if (!er && yes && !config.get('silent')) { + console.log('Wrote to %s:\n\n%s\n', packageFile, d) + } + return cb(er, pkg) + }) + } + if (ctx.yes) { + return write(true) + } + console.log('About to write to %s:\n\n%s\n', packageFile, d) + read({prompt:'Is this ok? ', default: 'yes'}, function (er, ok) { + if (!ok || ok.toLowerCase().charAt(0) !== 'y') { + console.log('Aborted.') + } else { + return write() + } + }) + }) + }) + }) + +} + +// turn the objects into somewhat more humane strings. +function unParsePeople (data) { + if (data.author) data.author = unParsePerson(data.author) + ;["maintainers", "contributors"].forEach(function (set) { + if (!Array.isArray(data[set])) return; + data[set] = data[set].map(unParsePerson) + }) + return data +} + +function unParsePerson (person) { + if (typeof person === "string") return person + var name = person.name || "" + var u = person.url || person.web + var url = u ? (" ("+u+")") : "" + var e = person.email || person.mail + var email = e ? (" <"+e+">") : "" + return name+email+url +} +