From bb2dd9f93c858236b3d59372a2ad0674a48fe78f Mon Sep 17 00:00:00 2001 From: Sean O'Donohue Date: Sat, 3 Mar 2018 18:20:30 -0500 Subject: [PATCH 01/17] More questions, hurrah. --- bin/axolemma | 117 +++++++++++++++++++++++++++++++++++++++++++--- bin/filters.js | 11 +++++ bin/validation.js | 31 +++++++++--- 3 files changed, 146 insertions(+), 13 deletions(-) create mode 100644 bin/filters.js diff --git a/bin/axolemma b/bin/axolemma index 118542b..e3c038d 100644 --- a/bin/axolemma +++ b/bin/axolemma @@ -10,7 +10,8 @@ requiresNode('8.0.0') const {version} = require('../package.json') const ax = require('../') -const {isAlphanumeric, isNumber} = require('./validation') +const {isAlphanumeric, isPositiveNumber, isMapType, isPercentage} = require('./validation') +const {integer, percentage} = require('./filters') cli.version(version) cli.on('--help', () => { @@ -46,7 +47,8 @@ const questions = [ when(answers) { return Boolean(answers.customizeAreaInfo) }, - validate: isNumber, + filter: integer, + validate: isPositiveNumber, default: 60 }, @@ -58,7 +60,8 @@ const questions = [ const {areaTitle = 'this area'} = answers return blue(`What is the maximum width (x coordinate) of ${areaTitle}?`); }, - validate: isNumber, + filter: integer, + validate: isPositiveNumber, default: 10 }, { @@ -68,7 +71,8 @@ const questions = [ const {areaTitle = 'this area'} = answers return blue(`What is the maximum height (y coordinate) of ${areaTitle}?`); }, - validate: isNumber, + filter: integer, + validate: isPositiveNumber, default: 10 }, { @@ -78,8 +82,9 @@ const questions = [ const {areaTitle = 'this area'} = answers return blue(`What is the maximum depth (z coordinate) of ${areaTitle}?`); }, - validate: isNumber, - default: 10, + validate: isPositiveNumber, + filter: integer, + default: 1, when: false // Not supported yet. }, { @@ -99,6 +104,106 @@ const questions = [ 'Arena', 'Cellular' ] + }, + + /** Algorihm-specific settings **/ + { + when: isMapType('Digger'), + type: 'input', + name: 'roomHeightMaximum', + message(answers) { + const {type} = answers + return blue(`[${type}] What will be the maximum height (y value) for each generated "room"?`) + }, + filter: integer, + validate(input, answers) { + const {height} = answers + return (isPositiveNumber(input) && input < height) || `Please enter a numeric value that is less than ${height}.` + } + }, + { + when: isMapType('Digger'), + type: 'input', + name: 'roomHeightMinimum', + message(answers) { + const {type} = answers + return blue(`[${type}] What will be the minimum height (y value) for each generated "room"?`) + }, + validate(input, answers) { + const {roomHeightMaximum} = answers + return (isPositiveNumber(input) && input < roomHeightMaximum - 1) || `Please enter a numeric value that is less than ${roomHeightMaximum - 1}.` + }, + filter: integer + }, + { + when: isMapType('Digger'), + type: 'input', + name: 'roomHeightMaximum', + message(answers) { + const {type} = answers + return blue(`[${type}] What will be the maximum width (x value) for each generated "room"?`) + }, + filter: integer, + validate(input, answers) { + const {width} = answers + return (isPositiveNumber(input) && input < height) || `Please enter a numeric value that is less than ${width}.` + } + }, + { + when: isMapType('Digger'), + type: 'input', + name: 'roomHeightMinimum', + message(answers) { + const {type} = answers + return blue(`[${type}] What will be the minimum width (x value) for each generated "room"?`) + }, + validate(input, answers) { + const {roomWidthMaximum} = answers + return (isPositiveNumber(input) && input < roomWidthMaximum - 1) || `Please enter a numeric value that is less than ${roomWidthMaximum - 1}.` + }, + filter: integer + }, + { + when: isMapType('Digger'), + type: 'input', + name: 'corridorLengthMaximum', + message(answers) { + const {type} = answers + return blue(`[${type}] What will be the maximum length for each generated "corridor"?`) + }, + validate(input, answers) { + const {height, width} = answers + const max = Math.min(height, width) + return (isPositiveNumber(input) && input < height) || `Please enter a positive numeric value that is less than ${max}.` + }, + filter: integer, + }, + { + when: isMapType('Digger'), + type: 'input', + name: 'corridorLengthMinimum', + message(answers) { + const {type} = answers + return blue(`[${type}] What will be the minimum length for each generated "corridor"?`) + }, + validate(input, answers) { + const {height, width, corridorLengthMaximum} = answers + const max = Math.min(height, width, corridorLengthMaximum - 1) + return (isPositiveNumber(input) && input < height) || `Please enter a positive numeric value that is less than ${max}.` + }, + filter: integer + }, + { + when: isMapType('Digger'), + type: 'input', + name: 'dugPercentage', + message(answers) { + const {type} = answers + return blue(`[${type}] What percentage of the map area should be turned into rooms?`) + }, + default: 0.25, + validate: isPercentage, + filter: percentage } ] diff --git a/bin/filters.js b/bin/filters.js new file mode 100644 index 0000000..495a955 --- /dev/null +++ b/bin/filters.js @@ -0,0 +1,11 @@ +module.exports = { + integer(input) { + return parseInt(input, 10); + }, + percentage(input) { + if (input < 1) { + return input + } + return input / 100 + } +} \ No newline at end of file diff --git a/bin/validation.js b/bin/validation.js index 2b69124..8446930 100644 --- a/bin/validation.js +++ b/bin/validation.js @@ -1,9 +1,26 @@ module.exports = { - isAlphanumeric(input) { - const alphanumeric = /^[0-9a-zA-Z]+$/ - return Boolean(input.match(alphanumeric)) || 'Please enter an alphanumeric string.' - }, - isNumber(input) { - return !isNaN(parseInt(input, 10)) || 'Please enter a number.' - } + isAlphanumeric, isNumber, isMapType, isPositiveNumber, isPercentage +} + +function isAlphanumeric(input) { + const alphanumeric = /^[0-9a-zA-Z]+$/ + return Boolean(input.match(alphanumeric)) || 'Please enter an alphanumeric string.' +} + +function isNumber(input) { + return !isNaN(parseInt(input, 10)) || 'Please enter a number.' +} + +function isMapType(...types) { + return (answers) => types.includes(answers.type) +} + +function isPositiveNumber(input) { + return (isNumber(input) === true && input > 0) || 'Please enter a positive number.' +} + +function isPercentage(input) { + return (input > 0 && input < 1) || + (isPositiveNumber(input) === true) && input <= 99 + || 'Please enter a percentage value (e.g., 0.25 or 25 both mean 25%).' } \ No newline at end of file From 99073055093463dc4d41e53aba3cc905689252a1 Mon Sep 17 00:00:00 2001 From: Sean O'Donohue Date: Sun, 4 Mar 2018 17:16:08 -0500 Subject: [PATCH 02/17] More hacking on custom dungeon options. --- bin/axolemma | 15 +++++++++++++++ bin/filters.js | 4 ++++ 2 files changed, 19 insertions(+) diff --git a/bin/axolemma b/bin/axolemma index e3c038d..372e3e6 100644 --- a/bin/axolemma +++ b/bin/axolemma @@ -107,6 +107,21 @@ const questions = [ }, /** Algorihm-specific settings **/ + { + when: isMapType('IceyMaze'), + type: 'input', + name: 'regularity', + message(answers) { + const {type} = answers + return blue(`[${type}] What will the regularity of this maze be? 0 = most random, higher numbers = less random.`) + }, + validate: isPositiveNumber, + default: 0 + }, + { + when: isMapType('Cellular'), + type: + } { when: isMapType('Digger'), type: 'input', diff --git a/bin/filters.js b/bin/filters.js index 495a955..a3911c4 100644 --- a/bin/filters.js +++ b/bin/filters.js @@ -7,5 +7,9 @@ module.exports = { return input } return input / 100 + }, + toArrayOfNumbers(input) { + return input.split(',') + .map(s => parseInt(s.trim(), 10)) } } \ No newline at end of file From 29728e402e0684368b7589440dc6fc84badaaddf Mon Sep 17 00:00:00 2001 From: Sean O'Donohue Date: Sun, 4 Mar 2018 22:19:51 -0500 Subject: [PATCH 03/17] Fixed some issues with the custom dungeon option stuff. --- bin/axolemma | 21 +++++++++++---------- bin/validation.js | 2 +- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/bin/axolemma b/bin/axolemma index 372e3e6..4f6f3f6 100644 --- a/bin/axolemma +++ b/bin/axolemma @@ -118,10 +118,11 @@ const questions = [ validate: isPositiveNumber, default: 0 }, - { - when: isMapType('Cellular'), - type: - } + // { + // when: isMapType('Cellular'), + // type: 'input', + // name: '' + // } { when: isMapType('Digger'), type: 'input', @@ -160,8 +161,8 @@ const questions = [ }, filter: integer, validate(input, answers) { - const {width} = answers - return (isPositiveNumber(input) && input < height) || `Please enter a numeric value that is less than ${width}.` + const {height} = answers + return (isPositiveNumber(input) && input < height) || `Please enter a numeric value that is less than ${height}.` } }, { @@ -173,8 +174,8 @@ const questions = [ return blue(`[${type}] What will be the minimum width (x value) for each generated "room"?`) }, validate(input, answers) { - const {roomWidthMaximum} = answers - return (isPositiveNumber(input) && input < roomWidthMaximum - 1) || `Please enter a numeric value that is less than ${roomWidthMaximum - 1}.` + const {roomHeightMaximum, height} = answers + return (isPositiveNumber(input) && input < roomHeightMaximum - 1) || `Please enter a numeric value that is less than ${roomHeightMaximum - 1}.` }, filter: integer }, @@ -189,7 +190,7 @@ const questions = [ validate(input, answers) { const {height, width} = answers const max = Math.min(height, width) - return (isPositiveNumber(input) && input < height) || `Please enter a positive numeric value that is less than ${max}.` + return (isPositiveNumber(input) && input < max) || `Please enter a positive numeric value that is less than ${max}.` }, filter: integer, }, @@ -204,7 +205,7 @@ const questions = [ validate(input, answers) { const {height, width, corridorLengthMaximum} = answers const max = Math.min(height, width, corridorLengthMaximum - 1) - return (isPositiveNumber(input) && input < height) || `Please enter a positive numeric value that is less than ${max}.` + return (isPositiveNumber(input) && input < max) || `Please enter a positive numeric value that is less than ${max}.` }, filter: integer }, diff --git a/bin/validation.js b/bin/validation.js index 8446930..00abd15 100644 --- a/bin/validation.js +++ b/bin/validation.js @@ -16,7 +16,7 @@ function isMapType(...types) { } function isPositiveNumber(input) { - return (isNumber(input) === true && input > 0) || 'Please enter a positive number.' + return (isNumber(input) === true && input >= 1) || 'Please enter a positive number.' } function isPercentage(input) { From 3f5c6aa8ee0a5afe661f29dcde28bb16497321a5 Mon Sep 17 00:00:00 2001 From: Sean O'Donohue Date: Sun, 4 Mar 2018 22:34:15 -0500 Subject: [PATCH 04/17] Filters API makes more sense. --- bin/axolemma | 8 ++++---- bin/filters.js | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/bin/axolemma b/bin/axolemma index 4f6f3f6..cd1ef06 100644 --- a/bin/axolemma +++ b/bin/axolemma @@ -11,7 +11,7 @@ const {version} = require('../package.json') const ax = require('../') const {isAlphanumeric, isPositiveNumber, isMapType, isPercentage} = require('./validation') -const {integer, percentage} = require('./filters') +const {toInteger, toPercentage} = require('./filters') cli.version(version) cli.on('--help', () => { @@ -192,7 +192,7 @@ const questions = [ const max = Math.min(height, width) return (isPositiveNumber(input) && input < max) || `Please enter a positive numeric value that is less than ${max}.` }, - filter: integer, + filter: toInteger, }, { when: isMapType('Digger'), @@ -207,7 +207,7 @@ const questions = [ const max = Math.min(height, width, corridorLengthMaximum - 1) return (isPositiveNumber(input) && input < max) || `Please enter a positive numeric value that is less than ${max}.` }, - filter: integer + filter: toInteger }, { when: isMapType('Digger'), @@ -219,7 +219,7 @@ const questions = [ }, default: 0.25, validate: isPercentage, - filter: percentage + filter: toPercentage } ] diff --git a/bin/filters.js b/bin/filters.js index a3911c4..a4280c5 100644 --- a/bin/filters.js +++ b/bin/filters.js @@ -1,8 +1,8 @@ module.exports = { - integer(input) { + toInteger(input) { return parseInt(input, 10); }, - percentage(input) { + toPercentage(input) { if (input < 1) { return input } From c8869fe123943f12f9dba72206d5e1b668fd5077 Mon Sep 17 00:00:00 2001 From: Sean O'Donohue Date: Mon, 5 Mar 2018 16:53:20 -0500 Subject: [PATCH 05/17] Small fixes after API change, add confirmation step before generating a map. --- bin/axolemma | 43 +++++++++++++++++++++++++++++++++++-------- package.json | 1 + 2 files changed, 36 insertions(+), 8 deletions(-) diff --git a/bin/axolemma b/bin/axolemma index cd1ef06..cbe74bf 100644 --- a/bin/axolemma +++ b/bin/axolemma @@ -3,6 +3,7 @@ const cli = require('commander') const inquirer = require('inquirer') const semver = require('semver') const requiresNode = require('requires-node-version') +const pretty = require('pretty-print') const {bold, green, blue, red} = require('chalk') requiresNode('8.0.0') @@ -47,7 +48,7 @@ const questions = [ when(answers) { return Boolean(answers.customizeAreaInfo) }, - filter: integer, + filter: toInteger, validate: isPositiveNumber, default: 60 }, @@ -60,7 +61,7 @@ const questions = [ const {areaTitle = 'this area'} = answers return blue(`What is the maximum width (x coordinate) of ${areaTitle}?`); }, - filter: integer, + filter: toInteger, validate: isPositiveNumber, default: 10 }, @@ -71,7 +72,7 @@ const questions = [ const {areaTitle = 'this area'} = answers return blue(`What is the maximum height (y coordinate) of ${areaTitle}?`); }, - filter: integer, + filter: toInteger, validate: isPositiveNumber, default: 10 }, @@ -83,7 +84,7 @@ const questions = [ return blue(`What is the maximum depth (z coordinate) of ${areaTitle}?`); }, validate: isPositiveNumber, - filter: integer, + filter: toInteger, default: 1, when: false // Not supported yet. }, @@ -131,7 +132,7 @@ const questions = [ const {type} = answers return blue(`[${type}] What will be the maximum height (y value) for each generated "room"?`) }, - filter: integer, + filter: toInteger, validate(input, answers) { const {height} = answers return (isPositiveNumber(input) && input < height) || `Please enter a numeric value that is less than ${height}.` @@ -149,7 +150,7 @@ const questions = [ const {roomHeightMaximum} = answers return (isPositiveNumber(input) && input < roomHeightMaximum - 1) || `Please enter a numeric value that is less than ${roomHeightMaximum - 1}.` }, - filter: integer + filter: toInteger }, { when: isMapType('Digger'), @@ -159,7 +160,7 @@ const questions = [ const {type} = answers return blue(`[${type}] What will be the maximum width (x value) for each generated "room"?`) }, - filter: integer, + filter: toInteger, validate(input, answers) { const {height} = answers return (isPositiveNumber(input) && input < height) || `Please enter a numeric value that is less than ${height}.` @@ -177,7 +178,7 @@ const questions = [ const {roomHeightMaximum, height} = answers return (isPositiveNumber(input) && input < roomHeightMaximum - 1) || `Please enter a numeric value that is less than ${roomHeightMaximum - 1}.` }, - filter: integer + filter: toInteger }, { when: isMapType('Digger'), @@ -220,6 +221,32 @@ const questions = [ default: 0.25, validate: isPercentage, filter: toPercentage + }, + { + when: isMapType('Digger'), + type: 'input', + name: 'timeLimit', + message(answers) { + const {type} = answers + return blue(`[${type}] How long do you want to wait before causing the algorithm to time out (in ms)?`) + }, + default: 60 * 1000, + validate: isPositiveNumber + }, + + /** Confirmation steps. **/ + { + type: 'confirm', + name: 'confirmedSettings', + message(answers) { + const printable = Object.assign({}, answers) + + // Delete props we won't pass to the final builder. + delete printable.customizeAreaInfo; + + pretty(printable) + return blue('Confirm settings before generating?') + } } ] diff --git a/package.json b/package.json index d20d6bb..9fe9218 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "find-config": "^1.0.0", "js-yaml": "^3.10.0", "loglevel": "^1.6.1", + "pretty-print": "^1.1.0", "requires-node-version": "^1.0.0", "rot-js": "^0.6.5", "rxjs": "^5.5.6" From a1061603352535b1ed8763ef9adcf1ff67d3c318 Mon Sep 17 00:00:00 2001 From: Sean O'Donohue Date: Fri, 9 Mar 2018 16:43:32 -0500 Subject: [PATCH 06/17] Working on confirmation of generated stuff. Made axolemma NOT async since it mostly doesn't need to be. Does it? Maybe make it optionally async. --- bin/axolemma | 27 +++++++++++++++++++++++++++ index.js | 35 +++++++++++++++-------------------- package.json | 2 +- 3 files changed, 43 insertions(+), 21 deletions(-) diff --git a/bin/axolemma b/bin/axolemma index cbe74bf..698c7a2 100644 --- a/bin/axolemma +++ b/bin/axolemma @@ -247,6 +247,33 @@ const questions = [ pretty(printable) return blue('Confirm settings before generating?') } + }, + + { + type: 'confirm', + name: 'confirmedGeneratedMap', + when(answers) { + const {confirmedSettings} = answers; + + // Cheap. Have it restart from beginning instead + // or allow user to edit options directly using editor mode. + if (!confirmedSettings) { + console.log(red('Try, try again.')); + process.exit(1); + } + return true; + }, + async message(answers) { + console.log(blue('Generating map...')); + const overrides = { + writeToFile: false //true if not in testing. + } + const axOptions = Object.assign({}, + answers, + overrides + ) + const mapData = await ax.generate(options) + } } ] diff --git a/index.js b/index.js index 0808742..7b29254 100644 --- a/index.js +++ b/index.js @@ -22,20 +22,13 @@ const {getOptions} = require('./src/config') * @property {timeLimit} [number] Amount of ms to wait for the ROT-js map generator algorithms to complete before giving up. Defaults to 60,000 (one minute). */ -/** - * @typedef {Function} AsyncFunction - * @returns {Promise} - * @async - */ - module.exports = { /** * * @param {AxolemmaOptions} [options] - * @param {AsyncFunction} [promptAsync] - * @async + * @param {Boolean} [giveCallback] */ - async generate (options = {}, promptAsync = resolveTrue) { + generate (options = {}, giveCallback) { const configuredOptions = Object.assign({}, getOptions(), options @@ -45,18 +38,20 @@ module.exports = { writeToFile = false } = configuredOptions - let goAhead = false - while (!goAhead) { - const {graphic, rooms} = generator(configuredOptions) - console.log(`Generated an area with ${rooms.length} rooms.\n${graphic}`) - goAhead = await promptAsync(graphic, rooms.length) - if (goAhead) { - const yaml = parse(configuredOptions, rooms) - if (writeToFile) { - write(yaml, configuredOptions) - } - return { graphic, rooms, yaml } + const {graphic, rooms} = generator(configuredOptions) + console.log(`Generated an area with ${rooms.length} rooms.\n${graphic}`) + if (giveCallback) { + return {graphic, rooms, buildCallback} + } + + return buildCallback() + + function buildCallback() { + const yaml = parse(configuredOptions, rooms) + if (writeToFile) { + write(yaml, configuredOptions) } + return { graphic, rooms, yaml } } }, diff --git a/package.json b/package.json index 9fe9218..3ae22ed 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "axolemma", - "version": "0.2.0", + "version": "0.3.0", "description": "A tool to procedurally generate areas compatible with the Ranvier MUD engine.", "main": "index.js", "scripts": { From 5f13375c0b4b54122b9e9d65b04d81fecf6039bc Mon Sep 17 00:00:00 2001 From: Sean O'Donohue Date: Fri, 9 Mar 2018 17:02:54 -0500 Subject: [PATCH 07/17] Should...work? --- bin/axolemma | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/bin/axolemma b/bin/axolemma index 698c7a2..ba39e40 100644 --- a/bin/axolemma +++ b/bin/axolemma @@ -20,6 +20,7 @@ cli.on('--help', () => { }) const {Separator} = inquirer +const STATE = {} const questions = [ @@ -263,7 +264,7 @@ const questions = [ } return true; }, - async message(answers) { + message(answers) { console.log(blue('Generating map...')); const overrides = { writeToFile: false //true if not in testing. @@ -272,13 +273,27 @@ const questions = [ answers, overrides ) - const mapData = await ax.generate(options) + const {graphic, buildCallback} = ax.generate(options) + STATE.buildCallback = buildCallback + STATE.rooms = rooms + console.log(bold(graphic)); + return blue('Would you like to write this map to disk?') } } ] inquirer.prompt(questions) - .then(console.log) + .then(function(answers) { + if (answers.confirmedGeneratedMap && STATE.buildCallback) { + STATE.buildCallback(/* true for write to file? */) + } else { + console.log(red('Try, try again...')) + console.log('Here are the rooms in case you change your mind:') + console.log(STATE.rooms) + process.exit(1) + } + process.exit(0) + }) .catch(console.error) From 0810296c8e932a62912aa81cf4c2ccd7042516fe Mon Sep 17 00:00:00 2001 From: Sean O'Donohue Date: Sat, 10 Mar 2018 18:56:56 -0500 Subject: [PATCH 08/17] Fix some runtime issues. --- bin/axolemma | 2 +- src/config/index.js | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/bin/axolemma b/bin/axolemma index ba39e40..912a729 100644 --- a/bin/axolemma +++ b/bin/axolemma @@ -273,7 +273,7 @@ const questions = [ answers, overrides ) - const {graphic, buildCallback} = ax.generate(options) + const {graphic, buildCallback} = ax.generate(axOptions) STATE.buildCallback = buildCallback STATE.rooms = rooms console.log(bold(graphic)); diff --git a/src/config/index.js b/src/config/index.js index acde1d8..8e18383 100644 --- a/src/config/index.js +++ b/src/config/index.js @@ -16,8 +16,18 @@ module.exports = { module: true } - const axConfig = require(findConfig('.axolemmaconfig', configFinderOptions)) || {} - const pkg = require(findConfig('package.json', configFinderOptions)) || {} + const axConfigPath = findConfig('.axolemmaconfig', configFinderOptions); + const pkgPath = findConfig('package.json', configFinderOptions); + + let axConfig = {} + let pkg = {} + if (axConfigPath) { + axConfig = require(axConfigPath) + } + if (pkgPath) { + pkg = require(pkgPath) + } + console.log({axConfig, pkg}) return Object.assign({}, axConfig, From a7406de74c5d405f2313bb863b82a110ea547d44 Mon Sep 17 00:00:00 2001 From: Sean O'Donohue Date: Sat, 10 Mar 2018 18:59:49 -0500 Subject: [PATCH 09/17] Lint. --- bin/axolemma | 4 ++-- bin/filters.js | 10 +++++----- bin/validation.js | 19 ++++++++++--------- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/bin/axolemma b/bin/axolemma index 912a729..60917d3 100644 --- a/bin/axolemma +++ b/bin/axolemma @@ -273,10 +273,10 @@ const questions = [ answers, overrides ) - const {graphic, buildCallback} = ax.generate(axOptions) + const {graphic, buildCallback, rooms} = ax.generate(axOptions) STATE.buildCallback = buildCallback STATE.rooms = rooms - console.log(bold(graphic)); + console.log(bold(graphic)) return blue('Would you like to write this map to disk?') } } diff --git a/bin/filters.js b/bin/filters.js index a4280c5..21de16f 100644 --- a/bin/filters.js +++ b/bin/filters.js @@ -1,15 +1,15 @@ module.exports = { - toInteger(input) { - return parseInt(input, 10); + toInteger (input) { + return parseInt(input, 10) }, - toPercentage(input) { + toPercentage (input) { if (input < 1) { return input } return input / 100 }, - toArrayOfNumbers(input) { + toArrayOfNumbers (input) { return input.split(',') .map(s => parseInt(s.trim(), 10)) } -} \ No newline at end of file +} diff --git a/bin/validation.js b/bin/validation.js index 00abd15..9494c20 100644 --- a/bin/validation.js +++ b/bin/validation.js @@ -2,25 +2,26 @@ module.exports = { isAlphanumeric, isNumber, isMapType, isPositiveNumber, isPercentage } -function isAlphanumeric(input) { +function isAlphanumeric (input) { const alphanumeric = /^[0-9a-zA-Z]+$/ return Boolean(input.match(alphanumeric)) || 'Please enter an alphanumeric string.' } -function isNumber(input) { +function isNumber (input) { return !isNaN(parseInt(input, 10)) || 'Please enter a number.' } -function isMapType(...types) { +function isMapType (...types) { return (answers) => types.includes(answers.type) } -function isPositiveNumber(input) { +function isPositiveNumber (input) { return (isNumber(input) === true && input >= 1) || 'Please enter a positive number.' } -function isPercentage(input) { - return (input > 0 && input < 1) || - (isPositiveNumber(input) === true) && input <= 99 - || 'Please enter a percentage value (e.g., 0.25 or 25 both mean 25%).' -} \ No newline at end of file +function isPercentage (input) { + const isDecimalPercentage = (input > 0 && input < 1) + const isIntegerPercentage = (isPositiveNumber(input) === true) && input <= 99 + return isDecimalPercentage || isIntegerPercentage || + 'Please enter a percentage value (e.g., 0.25 or 25 both mean 25%).' +} From 43dc082543d16645e7ba9bf1b4e9361b2817f276 Mon Sep 17 00:00:00 2001 From: Sean O'Donohue Date: Sun, 11 Mar 2018 15:53:34 -0400 Subject: [PATCH 10/17] Wrap up configuration settings for now, for the various dungeon al gore rhythms. --- bin/axolemma | 69 +++++++++++++++++++++++++++------------------------- 1 file changed, 36 insertions(+), 33 deletions(-) diff --git a/bin/axolemma b/bin/axolemma index 60917d3..1a7a55b 100644 --- a/bin/axolemma +++ b/bin/axolemma @@ -109,6 +109,8 @@ const questions = [ }, /** Algorihm-specific settings **/ + + /** IceyMaze settings**/ { when: isMapType('IceyMaze'), type: 'input', @@ -120,13 +122,10 @@ const questions = [ validate: isPositiveNumber, default: 0 }, - // { - // when: isMapType('Cellular'), - // type: 'input', - // name: '' - // } + + /** Digger & Uniform settings**/ { - when: isMapType('Digger'), + when: isMapType('Digger', 'Uniform'), type: 'input', name: 'roomHeightMaximum', message(answers) { @@ -140,7 +139,7 @@ const questions = [ } }, { - when: isMapType('Digger'), + when: isMapType('Digger', 'Uniform'), type: 'input', name: 'roomHeightMinimum', message(answers) { @@ -154,7 +153,7 @@ const questions = [ filter: toInteger }, { - when: isMapType('Digger'), + when: isMapType('Digger', 'Uniform'), type: 'input', name: 'roomHeightMaximum', message(answers) { @@ -168,7 +167,7 @@ const questions = [ } }, { - when: isMapType('Digger'), + when: isMapType('Digger', 'Uniform'), type: 'input', name: 'roomHeightMinimum', message(answers) { @@ -181,6 +180,31 @@ const questions = [ }, filter: toInteger }, + { + when: isMapType('Digger', 'Uniform'), + type: 'input', + name: 'dugPercentage', + message(answers) { + const {type} = answers + return blue(`[${type}] What percentage of the map area should be turned into rooms?`) + }, + default: 0.25, + validate: isPercentage, + filter: toPercentage + }, + { + when: isMapType('Digger', 'Uniform'), + type: 'input', + name: 'timeLimit', + message(answers) { + const {type} = answers + return blue(`[${type}] How long do you want to wait before causing the algorithm to time out (in ms)?`) + }, + default: 60 * 1000, + validate: isPositiveNumber + }, + + /** Digger-only settings **/ { when: isMapType('Digger'), type: 'input', @@ -211,29 +235,6 @@ const questions = [ }, filter: toInteger }, - { - when: isMapType('Digger'), - type: 'input', - name: 'dugPercentage', - message(answers) { - const {type} = answers - return blue(`[${type}] What percentage of the map area should be turned into rooms?`) - }, - default: 0.25, - validate: isPercentage, - filter: toPercentage - }, - { - when: isMapType('Digger'), - type: 'input', - name: 'timeLimit', - message(answers) { - const {type} = answers - return blue(`[${type}] How long do you want to wait before causing the algorithm to time out (in ms)?`) - }, - default: 60 * 1000, - validate: isPositiveNumber - }, /** Confirmation steps. **/ { @@ -276,6 +277,7 @@ const questions = [ const {graphic, buildCallback, rooms} = ax.generate(axOptions) STATE.buildCallback = buildCallback STATE.rooms = rooms + console.log('LEGEND:\t. = room\t# = empty') console.log(bold(graphic)) return blue('Would you like to write this map to disk?') } @@ -285,7 +287,8 @@ const questions = [ inquirer.prompt(questions) .then(function(answers) { if (answers.confirmedGeneratedMap && STATE.buildCallback) { - STATE.buildCallback(/* true for write to file? */) + const build = STATE.buildCallback(/* true for write to file? */) + console.log(build) } else { console.log(red('Try, try again...')) console.log('Here are the rooms in case you change your mind:') From 06319cb2217d10fba74b323df60986e62ab968ba Mon Sep 17 00:00:00 2001 From: Sean O'Donohue Date: Sun, 11 Mar 2018 19:41:57 -0400 Subject: [PATCH 11/17] CLI tool seems to work end-to-end now. --- bin/axolemma | 8 ++++++-- src/generator/index.js | 21 +++++++++++++++++++-- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/bin/axolemma b/bin/axolemma index 1a7a55b..da6d3ec 100644 --- a/bin/axolemma +++ b/bin/axolemma @@ -270,11 +270,15 @@ const questions = [ const overrides = { writeToFile: false //true if not in testing. } + + // Same option for Digger and Uniform dungeons, but different key name. + answers.roomDugPercentage = answers.dugPercentage; + const axOptions = Object.assign({}, answers, overrides ) - const {graphic, buildCallback, rooms} = ax.generate(axOptions) + const {graphic, buildCallback, rooms} = ax.generate(axOptions, true) STATE.buildCallback = buildCallback STATE.rooms = rooms console.log('LEGEND:\t. = room\t# = empty') @@ -286,13 +290,13 @@ const questions = [ inquirer.prompt(questions) .then(function(answers) { + console.log({answers, STATE}) if (answers.confirmedGeneratedMap && STATE.buildCallback) { const build = STATE.buildCallback(/* true for write to file? */) console.log(build) } else { console.log(red('Try, try again...')) console.log('Here are the rooms in case you change your mind:') - console.log(STATE.rooms) process.exit(1) } process.exit(0) diff --git a/src/generator/index.js b/src/generator/index.js index eb94982..e116e8f 100644 --- a/src/generator/index.js +++ b/src/generator/index.js @@ -16,8 +16,16 @@ module.exports = function generator (options = {}) { depth = 0, type = 'Uniform', roomDugPercentage = 0.25, + dugPercentage = 0.25, timeLimit = 60 * 1000, - mapperOptions = {} + mapperOptions = {}, + roomHeightMaximum, + roomHeightMinimum, + roomWidthMaximum, + roomWidthMinimum, + corridorLengthMinimum, + corridorLengthMaximum, + regularity } = options // Make just a 2D map as MVP. @@ -28,7 +36,16 @@ module.exports = function generator (options = {}) { } const _mapperOptions = Object.assign({}, mapperOptions, { - roomDugPercentage, timeLimit + roomHeightMaximum, + roomHeightMinimum, + roomWidthMaximum, + roomWidthMinimum, + corridorLengthMinimum, + corridorLengthMaximum, + regularity, + dugPercentage, + roomDugPercentage, + timeLimit }) const mapper = new Mapper(width, height, _mapperOptions) From 052b3849fff736a6202222e01333af316a79dbe2 Mon Sep 17 00:00:00 2001 From: Sean O'Donohue Date: Mon, 19 Mar 2018 23:10:49 -0400 Subject: [PATCH 12/17] Fix lack of writing to file from CLI. Remove some debugging logs. --- bin/axolemma | 4 +--- index.js | 6 +++--- src/config/index.js | 1 - 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/bin/axolemma b/bin/axolemma index da6d3ec..fabcbab 100644 --- a/bin/axolemma +++ b/bin/axolemma @@ -290,10 +290,8 @@ const questions = [ inquirer.prompt(questions) .then(function(answers) { - console.log({answers, STATE}) if (answers.confirmedGeneratedMap && STATE.buildCallback) { - const build = STATE.buildCallback(/* true for write to file? */) - console.log(build) + const build = STATE.buildCallback(true); } else { console.log(red('Try, try again...')) console.log('Here are the rooms in case you change your mind:') diff --git a/index.js b/index.js index 7b29254..3faeade 100644 --- a/index.js +++ b/index.js @@ -44,11 +44,11 @@ module.exports = { return {graphic, rooms, buildCallback} } - return buildCallback() + return buildCallback(configuredOptions.writeToFile) - function buildCallback() { + function buildCallback(shouldWrite) { const yaml = parse(configuredOptions, rooms) - if (writeToFile) { + if (shouldWrite) { write(yaml, configuredOptions) } return { graphic, rooms, yaml } diff --git a/src/config/index.js b/src/config/index.js index 8e18383..5f38a6f 100644 --- a/src/config/index.js +++ b/src/config/index.js @@ -28,7 +28,6 @@ module.exports = { pkg = require(pkgPath) } - console.log({axConfig, pkg}) return Object.assign({}, axConfig, pkg.axolemma || {} From 05904fb34cf9046a17d4b36aeac78e931b2da8ee Mon Sep 17 00:00:00 2001 From: Sean O'Donohue Date: Sat, 24 Mar 2018 01:38:49 -0400 Subject: [PATCH 13/17] Making stuff more configurable, especially room titles and descriptions. --- bin/axolemma | 15 +++++++++++++++ src/config/index.js | 4 ++++ src/generator/index.js | 6 +++++- src/map/room.js | 6 +++--- 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/bin/axolemma b/bin/axolemma index fabcbab..06871c0 100644 --- a/bin/axolemma +++ b/bin/axolemma @@ -54,6 +54,21 @@ const questions = [ default: 60 }, + /** Room information, generic **/ + { + type: 'input', + name: 'genericRoomTitle', + message: blue('What would you like to use as the title for your generated rooms?'), + default: 'An Empty Room' + }, + + { + type: 'input', + name: 'genericRoomDesc', + message: blue('What would you like to use as the `look` description for your generated rooms?'), + default: 'An Empty Room' + }, + /** Area generation algo. input **/ { type: 'input', diff --git a/src/config/index.js b/src/config/index.js index 5f38a6f..9afee07 100644 --- a/src/config/index.js +++ b/src/config/index.js @@ -28,6 +28,10 @@ module.exports = { pkg = require(pkgPath) } + const pkgConfig = typeof pkg.axolemma === 'object' + ? pkg.axolemma + : {} + return Object.assign({}, axConfig, pkg.axolemma || {} diff --git a/src/generator/index.js b/src/generator/index.js index e116e8f..ad8a19d 100644 --- a/src/generator/index.js +++ b/src/generator/index.js @@ -19,6 +19,8 @@ module.exports = function generator (options = {}) { dugPercentage = 0.25, timeLimit = 60 * 1000, mapperOptions = {}, + genericRoomTitle = 'An Empty Room', + genericRoomDesc = 'There is nothing particularly interesting about this place.', roomHeightMaximum, roomHeightMinimum, roomWidthMaximum, @@ -45,7 +47,9 @@ module.exports = function generator (options = {}) { regularity, dugPercentage, roomDugPercentage, - timeLimit + timeLimit, + genericRoomTitle, + genericRoomDesc }) const mapper = new Mapper(width, height, _mapperOptions) diff --git a/src/map/room.js b/src/map/room.js index 2208a71..774d9f4 100644 --- a/src/map/room.js +++ b/src/map/room.js @@ -1,9 +1,9 @@ const dashify = require('dashify') module.exports = class Room { - constructor () { - this.title = 'An Empty Room' - this.description = 'There is nothing particularly interesting about this place.' + constructor (config) { + this.title = config.title + this.description = config.description this.x = NaN this.y = NaN this.z = NaN From 55ec3743908657e3d72e64400bac0e49550644eb Mon Sep 17 00:00:00 2001 From: Sean O'Donohue Date: Sat, 24 Mar 2018 02:58:58 -0400 Subject: [PATCH 14/17] Improve error handling add config to Map2D. --- bin/axolemma | 6 +++++- src/generator/index.js | 5 +++-- src/map/map2d.js | 8 +++++++- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/bin/axolemma b/bin/axolemma index 06871c0..f6186d4 100644 --- a/bin/axolemma +++ b/bin/axolemma @@ -134,7 +134,11 @@ const questions = [ const {type} = answers return blue(`[${type}] What will the regularity of this maze be? 0 = most random, higher numbers = less random.`) }, - validate: isPositiveNumber, + validate(...args) { + return args[0] < 0 + ? 'Input a non-negative number, including zero.' + : isPositiveNumber(...args) + }, default: 0 }, diff --git a/src/generator/index.js b/src/generator/index.js index ad8a19d..bdce26d 100644 --- a/src/generator/index.js +++ b/src/generator/index.js @@ -57,8 +57,9 @@ module.exports = function generator (options = {}) { try { map.create(mapper) } catch (error) { - console.log(`Error when creating map. Please ensure options are correct for ROT-js map type ${type}.`) - throw error + const msg = `Error when creating map. Please ensure options are correct for ROT-js map type ${type}.` + console.log(msg) + throw error || msg } return { diff --git a/src/map/map2d.js b/src/map/map2d.js index cc8ad2d..c5164d3 100644 --- a/src/map/map2d.js +++ b/src/map/map2d.js @@ -3,6 +3,7 @@ const {noop} = require('../util') module.exports = class Map2D { constructor (config = {}) { + this.config = config const {height, width, zLevel = 0} = config this.height = height this.width = width @@ -26,7 +27,12 @@ module.exports = class Map2D { let id = 0 mapper.create((x, y, value) => { if (value) return // Already done. - const room = new Room() + const title = this.config.title + const description = this.config.description + const room = new Room({ + title, + description + }) this.map[x][y] = room room.setCoordinates(x, y, this.zLevel) room.setId(id++) From 5669281c0d1e7d5cd20889217a69f55eb62bd2b1 Mon Sep 17 00:00:00 2001 From: Sean O'Donohue Date: Fri, 30 Mar 2018 11:55:58 -0400 Subject: [PATCH 15/17] Fix bug with IceyMaze regularity not being properly validated. Add ability to customize generic room titles and descriptions. --- README.md | 8 ++++++++ bin/axolemma | 5 ++--- src/generator/index.js | 7 ++++++- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 3d44c2c..697c8f0 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,14 @@ Axolemma ## How to Use +Axolemma is usable as a CLI tool and can also be used as a library. + +To use it as a CLI tool, navigate to the working directory where you would like Axolemma to generate the map files, and type `axolemma`. + +Axolemma will ask a series of questions and, as a result, generate an area for you. + +Here is a recipe for using Axolemma programmatically: + ```javascript // Require-able like any other library. const Axolemma = require('axolemma') diff --git a/bin/axolemma b/bin/axolemma index f6186d4..995efc8 100644 --- a/bin/axolemma +++ b/bin/axolemma @@ -135,9 +135,8 @@ const questions = [ return blue(`[${type}] What will the regularity of this maze be? 0 = most random, higher numbers = less random.`) }, validate(...args) { - return args[0] < 0 - ? 'Input a non-negative number, including zero.' - : isPositiveNumber(...args) + const isNonNegativeInt = Math.floor(args[0]) >= -1 + return isNonNegativeInt || 'Input a non-negative number, including zero.' }, default: 0 }, diff --git a/src/generator/index.js b/src/generator/index.js index bdce26d..107734e 100644 --- a/src/generator/index.js +++ b/src/generator/index.js @@ -53,7 +53,12 @@ module.exports = function generator (options = {}) { }) const mapper = new Mapper(width, height, _mapperOptions) - const map = new Map2D({width, height}) + const map = new Map2D({ + title: genericRoomTitle, + description: genericRoomDesc, + width, + height + }) try { map.create(mapper) } catch (error) { From 025eff8f8f11284b0d65b8116aeb4d2205678ad9 Mon Sep 17 00:00:00 2001 From: Sean O'Donohue Date: Fri, 30 Mar 2018 12:10:32 -0400 Subject: [PATCH 16/17] Update documentation. --- README.md | 27 ++++++++++++++++++--------- index.js | 2 ++ screenshot.png | Bin 0 -> 129047 bytes 3 files changed, 20 insertions(+), 9 deletions(-) create mode 100644 screenshot.png diff --git a/README.md b/README.md index 697c8f0..7899304 100644 --- a/README.md +++ b/README.md @@ -17,30 +17,37 @@ To use it as a CLI tool, navigate to the working directory where you would like Axolemma will ask a series of questions and, as a result, generate an area for you. +![screenshot](./screenshot.png) + Here is a recipe for using Axolemma programmatically: ```javascript // Require-able like any other library. const Axolemma = require('axolemma') -Axolemma.generate({ // Programmatically pass in options +const {graphic, rooms, yaml} = Axolemma.generate({ // Programmatically pass in options type: 'Digger' // Uses ROT-js well-documented map generation algorithms. writeToFile: true // Can write YAML definitions to file for static persistence -}).then(function(data) { // Returns an await-able Promise - const {graphic, rooms, yaml} = data - console.log(graphic) // Returns an old-school ASCII map of your area. - console.log(yaml) // Returns parsed YAML. - return rooms.map( - roomDef => new Room(roomDef) // Returns Ranvier-compatible room definitions. - ) }) + +// Returns an old-school ASCII map of your area. +console.log(graphic) + +// Returns YAML string. +console.log(yaml) + +// Returns Ranvier-compatible room definitions. +const newRooms = rooms.map( + roomDef => new Room(roomDef) +); + ``` ## Configuration When using Axolemma programmatically (or eventually through the CLI), you can customize the default options using either a `.axolemmaconfig` file or by adding an "axolemma" field in your package.json. -Your `.axolemmaconfig` can be either a JavaScript module or a JSON file. Axolemma will crawl up the tree to find the file so it can be in the root of your Ranvier bundle, the root of your fork of Ranvier, or even in your home directory. +Your `.axolemmaconfig` can be either a JavaScript module or a JSON file. Axolemma will crawl up the directory tree to find the file so it can be in the root directory of your Ranvier bundle, the root of your fork of Ranvier, or even in your user home directory. It will use the 'nearest' config it finds, so you can have multiple configurations at different nesting levels. Configuration precedence goes as follows: * Options passed in programmatically @@ -59,6 +66,8 @@ Axolemma accepts the following options: * @property {string} [filepath] Path to write YAML to. Defaults to current working directory * @property {string} [areaTitle] Title of area to generate. Defaults to 'Generated Area' * @property {Object} [areaInfo] Info object for area manifest. Defaults to object with respawnInterval property set to 60. + * @property {string} [genericRoomTitle] A title to be used for all of the rooms in your generated area. Defaults to 'An Empty Room'. + * @property {string} [genericRoomDesc] A description to be used for all of the rooms in your generated area. Defaults to 'There is nothing particularly interesting about this place.' * @property {string} [type] The 'type' of map creator to use. This must be the name of a ROT-js Map constructor. Defaults to 'Uniform'. * @property {number} [roomDugPercentage] Percentage in decimal of map coordinates to be turned into rooms. Defaults to 0.25 (25%). * @property {timeLimit} [number] Amount of ms to wait for the ROT-js map generator algorithms to complete before giving up. Defaults to 60,000 (one minute). diff --git a/index.js b/index.js index 3faeade..23ec0f1 100644 --- a/index.js +++ b/index.js @@ -17,6 +17,8 @@ const {getOptions} = require('./src/config') * @property {string} [filepath] Path to write YAML to. Defaults to current working directory * @property {string} [areaTitle] Title of area to generate. Defaults to 'Generated Area' * @property {Object} [areaInfo] Info object for area manifest. Defaults to object with respawnInterval property set to 60. + * @property {string} [genericRoomTitle] A title to be used for all of the rooms in your generated area. Defaults to 'An Empty Room'. + * @property {string} [genericRoomDesc] A description to be used for all of the rooms in your generated area. Defaults to 'There is nothing particularly interesting about this place.' * @property {string} [type] The 'type' of map creator to use. This must be the name of a ROT-js Map constructor. Defaults to 'Uniform'. * @property {number} [roomDugPercentage] Percentage in decimal of map coordinates to be turned into rooms. Defaults to 0.25 (25%). * @property {timeLimit} [number] Amount of ms to wait for the ROT-js map generator algorithms to complete before giving up. Defaults to 60,000 (one minute). diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..11149bebb5e95c9e999121fde82dfdce1132e757 GIT binary patch literal 129047 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
LCb0F6VITQkD?zaXDds{^d%TyR9Evg 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 literal 0 HcmV?d00001 From 136c887115e9983e6e9202daf95b700252259ab6 Mon Sep 17 00:00:00 2001 From: Sean O'Donohue Date: Fri, 30 Mar 2018 12:19:04 -0400 Subject: [PATCH 17/17] Make CLI tool available globally after install. --- bin/axolemma | 0 package-lock.json | 68 ++++++++++++++++++++++++++++++++++++++++++++++- package.json | 3 +++ 3 files changed, 70 insertions(+), 1 deletion(-) mode change 100644 => 100755 bin/axolemma diff --git a/bin/axolemma b/bin/axolemma old mode 100644 new mode 100755 diff --git a/package-lock.json b/package-lock.json index f787058..1d2611d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "axolemma", - "version": "0.2.0", + "version": "0.3.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -102,6 +102,11 @@ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, + "as-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/as-array/-/as-array-2.0.0.tgz", + "integrity": "sha1-TwSAXYf4/OjlEbwhCPjl46KH1Uc=" + }, "asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", @@ -765,6 +770,30 @@ "ua-parser-js": "0.7.17" } }, + "feedback": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/feedback/-/feedback-0.3.2.tgz", + "integrity": "sha1-bLcfp+JV5KHKC5UdLF9Z1Qv/1q0=", + "requires": { + "chalk": "0.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-0.2.0.tgz", + "integrity": "sha1-NZq0sV3NZLptdHNLcsNjYKmvLBk=" + }, + "chalk": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.3.0.tgz", + "integrity": "sha1-HJhDdzfxGZ68wdTEj9Qbn5yOjyM=", + "requires": { + "ansi-styles": "0.2.0", + "has-color": "0.1.7" + } + } + } + }, "figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", @@ -920,6 +949,11 @@ "ansi-regex": "2.1.1" } }, + "has-color": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", + "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=" + }, "has-flag": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", @@ -1544,6 +1578,38 @@ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", "dev": true }, + "pretty-print": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pretty-print/-/pretty-print-1.1.0.tgz", + "integrity": "sha1-fDPJ+IezhE6cBWvAOGCL3G+Fjec=", + "requires": { + "as-array": "2.0.0", + "chalk": "0.3.0", + "feedback": "0.3.2", + "lodash": "2.2.1" + }, + "dependencies": { + "ansi-styles": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-0.2.0.tgz", + "integrity": "sha1-NZq0sV3NZLptdHNLcsNjYKmvLBk=" + }, + "chalk": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.3.0.tgz", + "integrity": "sha1-HJhDdzfxGZ68wdTEj9Qbn5yOjyM=", + "requires": { + "ansi-styles": "0.2.0", + "has-color": "0.1.7" + } + }, + "lodash": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.2.1.tgz", + "integrity": "sha1-ypNf0UqzwMhyq6zxmLnNpQFECGc=" + } + } + }, "process-nextick-args": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", diff --git a/package.json b/package.json index 3ae22ed..74cf2c7 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,9 @@ "version": "0.3.0", "description": "A tool to procedurally generate areas compatible with the Ranvier MUD engine.", "main": "index.js", + "bin": { + "axolemma": "bin/axolemma" + }, "scripts": { "test": "mocha ./src/**/*.spec.js", "lint": "standard ./**/*.js --fix"