code: function addService(opts) {
  	let values = Object.assign({}, opts);
  
  	return Promise.resolve()
  		.then(() => {
  			return inquirer.prompt([
  				{
  					type: "input",
  					name: "serviceFolder",
  					message: "Service directory",
  					default: "./services",
  					validate(input) {
  						if (!fs.existsSync(path.resolve(input)))
  							return `The '${input}' directory is not exists! Full path: ${path.resolve(input)}`;
  
  						return true;
  					}
  				},
  				{
  					type: "input",
  					name: "serviceName",
  					message: "Service name",
  					default: "test"
  				}
  			]).then(answers => {
  				Object.assign(values, answers);
  
  				const newServicePath = path.join(values.serviceFolder, values.serviceName + ".service.js");
  				values.newServicePath = newServicePath;
  
  				if (fs.existsSync(newServicePath)) {
  					return inquirer.prompt([{
  						type: "confirm",
  						name: "sure",
  						message: "The file is exists! Overwrite?",
  						default: false
  					}]).then(({ sure }) => {
  						if (!sure)
  							fail("Aborted");
  					});
  				}
  			});
  		})
  		.then(() => {
  			const templatePath = path.join(__dirname, "service.template");
  			const template = fs.readFileSync(templatePath, "utf8");
  
  			return new Promise((resolve, reject) => {
  				render(template, values, function (err, res) {
  					if (err)
  						return reject(err);
  
  					const { newServicePath } = values;
  					console.log(`Create new service file to '${newServicePath}'...`);
  					fs.writeFileSync(path.resolve(newServicePath), res, "utf8");
  
  					resolve();
  				});
  			});
  		})
  
  		// Error handler
  		.catch(err => fail(err));
  }
docs: Service generator
  
  @param {any} opts
  @returns