8
0

inquiries.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. /**
  2. * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved.
  3. * For licensing, see LICENSE.md.
  4. */
  5. 'use strict';
  6. const inquirer = require( 'inquirer' );
  7. const sanitize = require( './sanitize' );
  8. const DEFAULT_PLUGIN_NAME_PREFIX = 'ckeditor5-';
  9. const DEFAULT_PLUGIN_VERSION = '0.0.1';
  10. const DEFAULT_GITHUB_URL_PREFIX = 'ckeditor/';
  11. module.exports = {
  12. getPackageName() {
  13. return new Promise( ( resolve ) => {
  14. inquirer.prompt( [ {
  15. name: 'packageName',
  16. message: 'Enter package name without ' + DEFAULT_PLUGIN_NAME_PREFIX + ' prefix:',
  17. validate: ( input ) => {
  18. const regexp = /^[\w-]+$/;
  19. return regexp.test( input ) ? true : 'Please provide a valid package name.';
  20. }
  21. } ], ( answers ) => {
  22. resolve( DEFAULT_PLUGIN_NAME_PREFIX + answers.packageName );
  23. } );
  24. } );
  25. },
  26. getApplicationName() {
  27. return new Promise( ( resolve ) => {
  28. inquirer.prompt( [ {
  29. name: 'applicationName',
  30. message: 'Enter application full name:'
  31. } ], ( answers ) => {
  32. resolve( answers.applicationName );
  33. } );
  34. } );
  35. },
  36. getPackageVersion( ) {
  37. return new Promise( ( resolve ) => {
  38. inquirer.prompt( [ {
  39. name: 'version',
  40. message: 'Enter package\'s initial version:',
  41. default: DEFAULT_PLUGIN_VERSION
  42. } ], ( answers ) => {
  43. resolve( answers.version );
  44. } );
  45. } );
  46. },
  47. getPackageGitHubUrl( packageName ) {
  48. const defaultGitHubUrl = DEFAULT_GITHUB_URL_PREFIX + packageName;
  49. return new Promise( ( resolve ) => {
  50. inquirer.prompt( [ {
  51. name: 'gitHubUrl',
  52. message: 'Enter package\'s GitHub URL:',
  53. default: defaultGitHubUrl
  54. } ], ( answers ) => {
  55. resolve( answers.gitHubUrl );
  56. } );
  57. } );
  58. },
  59. getPackageDescription( ) {
  60. return new Promise( ( resolve ) => {
  61. inquirer.prompt( [ {
  62. name: 'description',
  63. message: 'Package description (one sentence, must end with period):'
  64. } ], ( answers ) => {
  65. resolve( sanitize.appendPeriodIfMissing( answers.description || '' ) );
  66. } );
  67. } );
  68. }
  69. };