123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- var fs = require('fs')
- var path = require('path');
-
- module.exports = {
- "name" : prompt('name',
- typeof name === 'undefined'
- ? basename.replace(/^node-|[.-]js$/g, ''): name),
- "version" : prompt('version', typeof version !== "undefined"
- ? version : '0.0.0'),
- "description" : (function () {
- if (typeof description !== 'undefined' && description) {
- return description
- }
- var value;
- try {
- var src = fs.readFileSync('README.md', 'utf8');
- value = src.split('\n').filter(function (line) {
- return /\s+/.test(line)
- && line.trim() !== basename.replace(/^node-/, '')
- && !line.trim().match(/^#/)
- ;
- })[0]
- .trim()
- .replace(/^./, function (c) { return c.toLowerCase() })
- .replace(/\.$/, '')
- ;
- }
- catch (e) {
- try {
- // Wouldn't it be nice if that file mattered?
- var d = fs.readFileSync('.git/description', 'utf8')
- } catch (e) {}
- if (d.trim() && !value) value = d
- }
- return prompt('description', value);
- })(),
- "main" : (function () {
- var f
- try {
- f = fs.readdirSync(dirname).filter(function (f) {
- return f.match(/\.js$/)
- })
- if (f.indexOf('index.js') !== -1)
- f = 'index.js'
- else if (f.indexOf('main.js') !== -1)
- f = 'main.js'
- else if (f.indexOf(basename + '.js') !== -1)
- f = basename + '.js'
- else
- f = f[0]
- } catch (e) {}
-
- return prompt('entry point', f || 'index.js')
- })(),
- "bin" : function (cb) {
- fs.readdir(dirname + '/bin', function (er, d) {
- // no bins
- if (er) return cb()
- // just take the first js file we find there, or nada
- return cb(null, d.filter(function (f) {
- return f.match(/\.js$/)
- })[0])
- })
- },
- "directories" : function (cb) {
- fs.readdir('.', function (er, dirs) {
- if (er) return cb(er)
- var res = {}
- dirs.forEach(function (d) {
- switch (d) {
- case 'example': case 'examples': return res.example = d
- case 'test': case 'tests': return res.test = d
- case 'doc': case 'docs': return res.doc = d
- case 'man': return res.man = d
- }
- })
- if (Object.keys(res).length === 0) res = undefined
- return cb(null, res)
- })
- },
- "dependencies" : typeof dependencies !== 'undefined' ? dependencies
- : function (cb) {
- fs.readdir('node_modules', function (er, dir) {
- if (er) return cb()
- var deps = {}
- var n = dir.length
- dir.forEach(function (d) {
- if (d.match(/^\./)) return next()
- if (d.match(/^(expresso|mocha|tap|coffee-script|coco|streamline)$/))
- return next()
- fs.readFile('node_modules/' + d + '/package.json', function (er, p) {
- if (er) return next()
- try { p = JSON.parse(p) } catch (e) { return next() }
- if (!p.version) return next()
- deps[d] = '~' + p.version
- return next()
- })
- })
- function next () {
- if (--n === 0) return cb(null, deps)
- }
- })
- },
- "devDependencies" : typeof devDependencies !== 'undefined' ? devDependencies
- : function (cb) {
- // same as dependencies but for dev deps
- fs.readdir('node_modules', function (er, dir) {
- if (er) return cb()
- var deps = {}
- var n = dir.length
- dir.forEach(function (d) {
- if (d.match(/^\./)) return next()
- if (!d.match(/^(expresso|mocha|tap|coffee-script|coco|streamline)$/))
- return next()
- fs.readFile('node_modules/' + d + '/package.json', function (er, p) {
- if (er) return next()
- try { p = JSON.parse(p) } catch (e) { return next() }
- if (!p.version) return next()
- deps[d] = '~' + p.version
- return next()
- })
- })
- function next () {
- if (--n === 0) return cb(null, deps)
- }
- })
- },
- "scripts" : (function () {
- // check to see what framework is in use, if any
- try { var d = fs.readdirSync('node_modules') }
- catch (e) { d = [] }
- var s = typeof scripts === 'undefined' ? {} : scripts
-
- if (d.indexOf('coffee-script') !== -1)
- s.prepublish = prompt('build command',
- s.prepublish || 'coffee src/*.coffee -o lib')
-
- var notest = 'echo "Error: no test specified" && exit 1'
- function tx (test) {
- return test || notest
- }
-
- if (!s.test || s.test === notest) {
- if (d.indexOf('tap') !== -1)
- s.test = prompt('test command', 'tap test/*.js', tx)
- else if (d.indexOf('expresso') !== -1)
- s.test = prompt('test command', 'expresso test', tx)
- else if (d.indexOf('mocha') !== -1)
- s.test = prompt('test command', 'mocha', tx)
- else
- s.test = prompt('test command', tx)
- }
-
- return s
-
- })(),
-
- "repository" : (function () {
- try { var gconf = fs.readFileSync('.git/config') }
- catch (e) { gconf = null }
- if (gconf) {
- gconf = gconf.split(/\r?\n/)
- var i = gconf.indexOf('[remote "origin"]')
- if (i !== -1) {
- var u = gconf[i + 1]
- if (!u.match(/^\s*url =/)) u = gconf[i + 2]
- if (!u.match(/^\s*url =/)) u = null
- else u = u.replace(/^\s*url = /, '')
- }
- if (u && u.match(/^git@github.com:/))
- u = u.replace(/^git@github.com:/, 'git://github.com/')
- }
-
- return prompt('git repository', u)
- })(),
-
- "keywords" : prompt(function (s) {
- if (!s) return undefined
- if (Array.isArray(s)) s = s.join(' ')
- if (typeof s !== 'string') return s
- return s.split(/[\s,]+/)
- }),
- "author" : config['init.author.name']
- ? {
- "name" : config['init.author.name'],
- "email" : config['init.author.email'],
- "url" : config['init.author.url']
- }
- : undefined,
- "license" : prompt('license', 'BSD')
- }
|