diff --git a/README.md b/README.md index 1420962..a3258f0 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,59 @@ cd ./docast npm install ``` -## Basic Usage +## CLI Usage +From the command line you can use `docast` to pull comments out from javascript +files and store into a json file or you can provide a javascript file to use to +format the comments into some other form. + +### Help Text +``` +$ docast --help +Usage: + docast (-h | --help) + docast (-v | --version) + docast extract [-o ] ... + docast generate ... + +Options: + -h --help Show this help text + -v --version Show docast version information +Extract: + Parse docs from javascript files and output as json to a file + -o --output File to output to [default: out.json] + List of javascript files to fetch docs from +Generate: + Provide a script used to generate documentation from the parsed docs + Script which exports a `function(comments)` used to generate docs from comments + List of javascript files to fetch docs from +``` + +### Extract +``` +$ docast extract -o out.json ./lib/*.js +$ cat out.js +[{"name":"func1","params":[],"returns":[],"raises":[],"doc":"this is func1"}, ...] +``` + +### Generate +#### formatter.js +```javascript +// simply print the name of each function we have documentation for +module.exports = function(comments){ + comments.forEach(function(comment){ + console.log(comment.name); + }); +}; +``` + +#### Usage +``` +$ docast generate ./formatter.js ./lib/*.js +func1 +func2 +``` + +## Basic API Usage The below example shows how you can use DocAST to parse documentation data from your javascript source code. diff --git a/bin/docast b/bin/docast new file mode 100755 index 0000000..3a75daa --- /dev/null +++ b/bin/docast @@ -0,0 +1,40 @@ +#!/usr/bin/env node +var docast = require('docast'); +var docopt = require('docopt'); +var fs = require('fs'); +var path = require('path'); + +var doc = [ + 'Usage:', + ' docast (-h | --help)', + ' docast (-v | --version)', + ' docast extract [-o ] ...', + ' docast generate ...', + '', + 'Options:', + ' -h --help Show this help text', + ' -v --version Show docast version information', + 'Extract:', + ' Parse docs from javascript files and output as json to a file', + ' -o --output File to output to [default: out.json]', + ' List of javascript files to fetch docs from', + 'Generate:', + ' Provide a script used to generate documentation from the parsed docs', + ' Script which exports a `function(comments)` used to generate docs from comments', + ' List of javascript files to fetch docs from', +].join('\r\n'); + +var args = docopt.docopt(doc, {version: require('../package.json').version}); + +var comments = []; +args[''].forEach(function(file){ + comments = comments.concat(docast.parse(file)); +}); + +if(args.extract){ + fs.writeFileSync(args['--output'], JSON.stringify(comments)); +} else if(args.generate){ + var loc = path.join(process.cwd(), args['']); + var formatter = require(loc); + formatter(comments); +} diff --git a/package.json b/package.json index e8fb5f7..79a2f85 100644 --- a/package.json +++ b/package.json @@ -17,9 +17,13 @@ }, "homepage": "https://github.com/brettlangdon/docast", "dependencies": { + "docopt": "^0.4.1", "esprima": "^1.2.3" }, "devDependencies": { "mocha": "^2.1.0" + }, + "bin": { + "docast": "bin/docast" } }