diff --git a/README.md b/README.md index f95d006..ce80b18 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@

create-service

Boring Express Microservice Generator

- -
+ +

@@ -12,11 +12,11 @@ - - + + - - + + @@ -24,12 +24,14 @@ -

+

+ +
## Install -Make sure `yeoman` is installed: +Make sure `yeoman` is installed ```sh $ yarn global add yo @@ -38,36 +40,40 @@ $ yarn global add yo Then install the generator ```sh -$ yarn global add @boringcodes/create-service +$ yarn global add generator-create-service ``` ## Usage -With [yo](https://github.com/yeoman/yo): +Create a new directory + +```sh +$ mkdir service-name +``` + +Then navigate to the created directory and run the following command to generate source ```sh $ yo create-service ``` This scaffolds out: + ``` -├── Dockerfile -├── README.md +├── src +│ ├── components +│ │   ├── things +│ │   │   ├── constants.ts +│ │   │   ├── controller.ts +│ │   │   ├── index.ts +│ │   └── types.ts +│ ├── app.ts +│ ├── index.ts +│ └── routes.ts +├── .env.example +├── .huskyrc ├── package.json -└── src - ├── app.ts - ├── components - │   ├── things - │   │   ├── constants.ts - │   │   ├── controller.ts - │   │   ├── index.ts - │   │   ├── middleware.ts - │   │   ├── model.ts - │   │   ├── repository.ts - │   │   └── type.ts - │   └── types.ts - ├── index.ts - └── routes.ts +└── tslint.json ``` ## Contributing diff --git a/banner.png b/banner.png new file mode 100644 index 0000000..468a1d5 Binary files /dev/null and b/banner.png differ diff --git a/generators/app/index.js b/generators/app/index.js index 0e39314..88e9bd9 100644 --- a/generators/app/index.js +++ b/generators/app/index.js @@ -10,24 +10,53 @@ module.exports = class extends Generator { yosay(`Welcome to the astounding ${chalk.red(pkg.name)} generator!`), ); + const gitName = this.user.git.name() || 'organization'; + const gitEmail = this.user.git.email() || 'hi@domain.com'; + const githubUsername = await (async () => { + try { + const username = await this.user.github.username(); + + return username; + } catch (err) { + return 'organization'; + } + })(); const prompts = [ { type: 'input', name: 'elementName', message: 'What is the name of your service?', - default: 'my-awesome-service', + default: this.appname, }, { type: 'input', name: 'elementDescription', - message: 'Give us some small description of your service', - default: '', + message: 'Description of your service?', + default: 'My awesome service', + }, + { + type: 'input', + name: 'elementHomepageUrl', + message: 'Homepage URL?', + default: `https://github.com/${githubUsername}/${this.appname}`, + }, + { + type: 'input', + name: 'elementBugsUrl', + message: 'Bugs tracking URL?', + default: `https://github.com/${githubUsername}/${this.appname}/issues`, }, { type: 'input', name: 'elementAuthor', - message: 'Who is the author of this service?', - default: '', + message: 'Author of this service?', + default: `${gitName} \<${gitEmail}\>`, + }, + { + type: 'input', + name: 'elementRepositoryUrl', + message: 'Repository URL?', + default: `https://github.com/${githubUsername}/${this.appname}.git`, }, ]; @@ -39,18 +68,13 @@ module.exports = class extends Generator { writing() { this.fs.copyTpl( - [this.templatePath('**')], + [this.templatePath('**/*'), this.templatePath('**/.*')], this.destinationPath(), this.props, ); - - this.fs.copyTpl( - this.templatePath('.env.example'), - this.destinationPath('.env.example'), - ); } install() { - this.installDependencies(); + this.yarnInstall(); } }; diff --git a/generators/app/templates/.gitignore b/generators/app/templates/.gitignore deleted file mode 100644 index b4224c1..0000000 --- a/generators/app/templates/.gitignore +++ /dev/null @@ -1,25 +0,0 @@ -# dependencies -node_modules -package-lock.json -test/node_modules - - -# testing -.nyc_output -coverage - -# build output -build -dist - -# misc -.DS_Store -.env -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# logs & pids -*.log -pids -.idea diff --git a/generators/app/templates/README.md b/generators/app/templates/README.md deleted file mode 100644 index 8460734..0000000 --- a/generators/app/templates/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# <%= elementName %> - -API Service Starter Kit diff --git a/generators/app/templates/package.json b/generators/app/templates/package.json index b3fa272..497a649 100644 --- a/generators/app/templates/package.json +++ b/generators/app/templates/package.json @@ -1,12 +1,11 @@ { "name": "<%= elementName %>", - "description": "<%= elementDescription %>", "version": "0.0.0", - "private": true, - "license": "MIT", - "author": "<%= elementAuthor %>", - "repository": "", - "bugs": "", + "description": "<%= elementDescription %>", + "homepage": "<%= elementHomepageUrl %>", + "bugs": "<%= elementBugsUrl %>", + "author": "<%- elementAuthor %>", + "repository": "<%= elementRepositoryUrl %>", "scripts": { "clean": "rm -rf build", "purge": "rm -rf node_modules", @@ -31,7 +30,6 @@ "devDependencies": { "@types/express": "^4.16.0", "@types/morgan": "^1.7.35", - "@types/qs": "^6.5.1", "@types/yup": "^0.26.3", "husky": "^1.2.1", "standard-version": "^4.4.0", diff --git a/generators/app/templates/src/components/things/controller.ts b/generators/app/templates/src/components/things/controller.ts index 097ad06..930b538 100644 --- a/generators/app/templates/src/components/things/controller.ts +++ b/generators/app/templates/src/components/things/controller.ts @@ -10,7 +10,7 @@ import { NAME } from './constants'; interface Request extends ExpressRequest { readonly [NAME]: any; -}; +} const list = async (_: Request, res: Response, next: NextFunction) => { try { diff --git a/package.json b/package.json index 685d7aa..cd1f813 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "@boringcodes/create-service", + "name": "generator-create-service", "version": "0.1.1", "description": "Boring Express Microservice Generator", "homepage": "https://github.com/boringcodes/create-service",