| 
									
										
										
										
											2016-03-25 22:50:01 +01:00
										 |  |  | 'use strict'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Module dependencies | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Public node modules.
 | 
					
						
							|  |  |  | const _ = require('lodash'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * This `before` function is run before generating targets. | 
					
						
							|  |  |  |  * Validate, configure defaults, get extra dependencies, etc. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @param {Object} scope | 
					
						
							|  |  |  |  * @param {Function} cb | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-11 13:03:35 +02:00
										 |  |  | module.exports = (scope, cb) => { | 
					
						
							| 
									
										
										
										
											2017-02-14 01:10:37 +01:00
										 |  |  |   if (!scope.rootPath || !scope.id) { | 
					
						
							|  |  |  |     return cb.invalid('Usage: `$ strapi generate:service serviceName --api apiName --plugin pluginName`'); | 
					
						
							| 
									
										
										
										
											2016-03-25 22:50:01 +01:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   // `scope.args` are the raw command line arguments.
 | 
					
						
							|  |  |  |   _.defaults(scope, { | 
					
						
							| 
									
										
										
										
											2017-02-14 01:10:37 +01:00
										 |  |  |     id: _.trim(_.deburr(scope.id)), | 
					
						
							|  |  |  |     api: scope.args.api || scope.id | 
					
						
							| 
									
										
										
										
											2016-03-25 22:50:01 +01:00
										 |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   // Determine default values based on the available scope.
 | 
					
						
							|  |  |  |   _.defaults(scope, { | 
					
						
							| 
									
										
										
										
											2016-08-12 12:04:00 +02:00
										 |  |  |     globalID: _.upperFirst(_.camelCase(scope.id)), | 
					
						
							| 
									
										
										
										
											2016-09-28 11:42:26 +02:00
										 |  |  |     ext: '.js' | 
					
						
							| 
									
										
										
										
											2016-03-25 22:50:01 +01:00
										 |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-14 01:10:37 +01:00
										 |  |  |   // Determine the destination path.
 | 
					
						
							|  |  |  |   let filePath; | 
					
						
							|  |  |  |   if (scope.args.api) { | 
					
						
							|  |  |  |     filePath = `./api/${scope.args.api}/services`; | 
					
						
							|  |  |  |   } else if (scope.args.plugin) { | 
					
						
							|  |  |  |     filePath = `./plugins/${scope.args.plugin}/services`; | 
					
						
							|  |  |  |   } else { | 
					
						
							|  |  |  |     filePath = `./api/${scope.id}/services`; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-25 22:50:01 +01:00
										 |  |  |   // Take another pass to take advantage of the defaults absorbed in previous passes.
 | 
					
						
							|  |  |  |   _.defaults(scope, { | 
					
						
							|  |  |  |     rootPath: scope.rootPath, | 
					
						
							| 
									
										
										
										
											2017-02-14 01:10:37 +01:00
										 |  |  |     filePath, | 
					
						
							| 
									
										
										
										
											2016-08-12 12:04:00 +02:00
										 |  |  |     filename: scope.globalID + scope.ext | 
					
						
							| 
									
										
										
										
											2016-03-25 22:50:01 +01:00
										 |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   // Humanize output.
 | 
					
						
							|  |  |  |   _.defaults(scope, { | 
					
						
							| 
									
										
										
										
											2016-09-28 11:42:26 +02:00
										 |  |  |     humanizeId: _.camelCase(scope.id).toLowerCase(), | 
					
						
							| 
									
										
										
										
											2017-02-14 01:10:37 +01:00
										 |  |  |     humanizedPath: '`' + scope.filePath + '`' | 
					
						
							| 
									
										
										
										
											2016-03-25 22:50:01 +01:00
										 |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   // Trigger callback with no error to proceed.
 | 
					
						
							|  |  |  |   return cb(); | 
					
						
							|  |  |  | }; |