apidoc 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. #!/usr/bin/env node
  2. 'use strict';
  3. /*
  4. * apidoc
  5. * http://apidocjs.com
  6. *
  7. * Copyright (c) 2013-2016 inveris OHG
  8. * Author Peter Rottmann <rottmann@inveris.de>
  9. * Licensed under the MIT license.
  10. */
  11. var path = require('path');
  12. var nomnom = require('nomnom');
  13. var apidoc = require('../lib/index');
  14. var argv = nomnom
  15. .option('file-filters', { abbr: 'f', 'default': '.*\\.(clj|cls|coffee|cpp|cs|dart|erl|exs?|go|groovy|ino?|java|js|jsx|litcoffee|lua|p|php?|pl|pm|py|rb|scala|ts|vue)$',
  16. list: true,
  17. help: 'RegEx-Filter to select files that should be parsed (multiple -f can be used).' })
  18. .option('exclude-filters', { abbr: 'e', 'default': '', list: true,
  19. help: 'RegEx-Filter to select files / dirs that should not be parsed (many -e can be used).', })
  20. .option('input', { abbr: 'i', 'default': './', list: true, help: 'Input / source dirname.' })
  21. .option('output', { abbr: 'o', 'default': './doc/', help: 'Output dirname.' })
  22. .option('template', { abbr: 't', 'default': path.join(__dirname, '../template/'),
  23. help: 'Use template for output files.' })
  24. .option('config', { abbr: 'c', 'default': './', help: 'Path to directory containing config file (apidoc.json)' })
  25. .option('private', { abbr: 'p', 'default': false, help: 'Include private APIs in output.'})
  26. .option('verbose', { abbr: 'v', flag: true, 'default': false, help: 'Verbose debug output.' })
  27. .option('help', { abbr: 'h', flag: true, help: 'Show this help information.' })
  28. .option('debug', { flag: true, 'default': false, help: 'Show debug messages.' })
  29. .option('color', { flag: true, 'default': true, help: 'Turn off log color.' })
  30. .option('parse', { flag: true, 'default': false,
  31. help: 'Parse only the files and return the data, no file creation.' })
  32. .option('parse-filters' , { list: true, help: 'Optional user defined filters. Format name=filename' })
  33. .option('parse-languages', { list: true, help: 'Optional user defined languages. Format name=filename' })
  34. .option('parse-parsers' , { list: true, help: 'Optional user defined parsers. Format name=filename' })
  35. .option('parse-workers' , { list: true, help: 'Optional user defined workers. Format name=filename' })
  36. .option('silent', { flag: true, 'default': false, help: 'Turn all output off.' })
  37. .option('simulate', { flag: true, 'default': false, help: 'Execute but not write any file.' })
  38. .option('markdown', { 'default': true, help: 'Turn off default markdown parser or set a file to a custom parser.' })
  39. .option('line-ending', { help: 'Turn off autodetect line-ending. Allowed values: LF, CR, CRLF.' })
  40. .option('encoding', { 'default': 'utf8', help : 'Set the encoding of the source code. [utf8].' })
  41. .parse()
  42. ;
  43. /**
  44. * Transform parameters to object
  45. *
  46. * @param {String|String[]} filters
  47. * @returns {Object}
  48. */
  49. function transformToObject(filters) {
  50. if ( ! filters)
  51. return;
  52. if (typeof(filters) === 'string')
  53. filters = [ filters ];
  54. var result = {};
  55. filters.forEach(function(filter) {
  56. var splits = filter.split('=');
  57. if (splits.length === 2) {
  58. var obj = {};
  59. result[splits[0]] = path.resolve(splits[1], '');
  60. }
  61. });
  62. return result;
  63. }
  64. var options = {
  65. excludeFilters: argv['exclude-filters'],
  66. includeFilters: argv['file-filters'],
  67. src : argv['input'],
  68. dest : argv['output'],
  69. template : argv['template'],
  70. config : argv['config'],
  71. apiprivate : argv['private'],
  72. verbose : argv['verbose'],
  73. debug : argv['debug'],
  74. parse : argv['parse'],
  75. colorize : argv['color'],
  76. filters : transformToObject(argv['parse-filters']),
  77. languages : transformToObject(argv['parse-languages']),
  78. parsers : transformToObject(argv['parse-parsers']),
  79. workers : transformToObject(argv['parse-workers']),
  80. silent : argv['silent'],
  81. simulate : argv['simulate'],
  82. markdown : argv['markdown'],
  83. lineEnding : argv['line-ending'],
  84. encoding : argv['encoding'],
  85. };
  86. if (apidoc.createDoc(options) === false) {
  87. process.exit(1);
  88. }