| 
									
										
										
										
											2016-03-25 22:50:01 +01:00
										 |  |  | 'use strict'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Module dependencies | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Public node modules.
 | 
					
						
							|  |  |  | const _ = require('lodash'); | 
					
						
							| 
									
										
										
										
											2020-03-20 19:00:48 +01:00
										 |  |  | const { nameToSlug } = require('strapi-utils'); | 
					
						
							| 
									
										
										
										
											2016-03-25 22:50:01 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * This `before` function is run before generating targets. | 
					
						
							|  |  |  |  * Validate, configure defaults, get extra dependencies, etc. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @param {Object} scope | 
					
						
							|  |  |  |  * @param {Function} cb | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-05-04 17:53:35 +02:00
										 |  |  | /* eslint-disable prefer-template */ | 
					
						
							| 
									
										
										
										
											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) { | 
					
						
							| 
									
										
										
										
											2020-03-19 18:35:08 +01:00
										 |  |  |     return cb.invalid( | 
					
						
							|  |  |  |       'Usage: `$ strapi generate:service serviceName --api apiName --plugin pluginName`' | 
					
						
							|  |  |  |     ); | 
					
						
							| 
									
										
										
										
											2016-03-25 22:50:01 +01:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-19 18:35:08 +01:00
										 |  |  |   // Format `id`.
 | 
					
						
							| 
									
										
										
										
											2020-03-20 19:00:48 +01:00
										 |  |  |   const name = scope.name || nameToSlug(scope.id); | 
					
						
							| 
									
										
										
										
											2020-03-19 18:35:08 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-25 22:50:01 +01:00
										 |  |  |   // `scope.args` are the raw command line arguments.
 | 
					
						
							|  |  |  |   _.defaults(scope, { | 
					
						
							| 
									
										
										
										
											2020-03-19 18:35:08 +01:00
										 |  |  |     name, | 
					
						
							|  |  |  |     api: scope.args.api || scope.id, | 
					
						
							| 
									
										
										
										
											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 { | 
					
						
							| 
									
										
										
										
											2020-03-19 18:35:08 +01:00
										 |  |  |     filePath = `./api/${name}/services`; | 
					
						
							| 
									
										
										
										
											2017-02-14 01:10:37 +01:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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, | 
					
						
							| 
									
										
										
										
											2020-03-20 19:00:48 +01:00
										 |  |  |     filename: `${name}.js`, | 
					
						
							| 
									
										
										
										
											2016-03-25 22:50:01 +01:00
										 |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   // Trigger callback with no error to proceed.
 | 
					
						
							|  |  |  |   return cb(); | 
					
						
							|  |  |  | }; |