Skip to content

Commit 58c7c20

Browse files
authored
Merge pull request #13 from hadiindrawan/dev
add import env feature
2 parents 7a83d83 + 47c59b4 commit 58c7c20

File tree

5 files changed

+92
-9
lines changed

5 files changed

+92
-9
lines changed

index.js

Lines changed: 42 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import fs from 'fs'
33
import inquirer from 'inquirer';
44
import { exec } from 'child_process';
55
import generate from './lib/generate.js';
6+
import generateEnv from './lib/generate_env.js';
67

78
let eslintConfig =
89
`{
@@ -32,10 +33,14 @@ function existModuleType() {
3233
}
3334
}
3435

35-
function validateInput(input) {
36+
function validateInputJson(input) {
3637
return input.includes('json') ? true : 'Please type correct answer, the file must be json format!'
3738
}
3839

40+
function validateInputEnvName(input) {
41+
return /[A-Z]/.test(input) ? 'Input must be lowercase!' : true
42+
}
43+
3944
function generateCommand() {
4045
inquirer
4146
.prompt([
@@ -44,7 +49,7 @@ function generateCommand() {
4449
name: 'jsonFileQ',
4550
message: 'Input your json file to be generate (example.json):',
4651
default: 'example.json',
47-
validate: validateInput
52+
validate: validateInputJson
4853
}
4954
])
5055
.then((answers) => {
@@ -63,10 +68,44 @@ function generateCommand() {
6368
})
6469
}
6570

71+
function generateEnvCommand() {
72+
inquirer
73+
.prompt([
74+
{
75+
type: 'input',
76+
name: 'jsonFileQ',
77+
message: 'Input your json file to be generate (example.json):',
78+
default: 'example-env.json',
79+
validate: validateInputJson
80+
},
81+
{
82+
type: 'input',
83+
name: 'envQ',
84+
message: 'Input your environment name:',
85+
default: 'dev',
86+
validate: validateInputEnvName
87+
}
88+
])
89+
.then((answers) => {
90+
//Print message indicating environment test generation has started..
91+
console.log(`${'\x1b[34m'}Generating environment test..${'\x1b[0m'}`)
92+
93+
//Call the generate function to generate environment tests.
94+
generateEnv(answers.jsonFileQ.includes('"') ? answers.jsonFileQ.replace(/"/g, '') : answers.jsonFileQ, answers.envQ)
95+
})
96+
.catch((err) => {
97+
console.log(err);
98+
console.log('Please type correct answer!');
99+
generateEnvCommand()
100+
})
101+
}
102+
66103
const argRunner = process.argv[process.argv.length - 1]
67104

68105
if (argRunner == 'generate') {
69106
generateCommand()
107+
} else if (argRunner == 'env-generate') {
108+
generateEnvCommand()
70109
} else {
71110
exec('npm list --json', (error, stdout) => {
72111
if (error) {
@@ -129,7 +168,7 @@ if (argRunner == 'generate') {
129168
name: 'jsonFileQ',
130169
message: 'Type your json file to be generate (example.json):',
131170
default: 'example.json',
132-
validate: validateInput
171+
validate: validateInputJson
133172
}
134173
])
135174
.then((answers) => {

lib/component/runner.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@ async function writeRunner(element, testPath, runPath, moduleType) {
1616
if (element.hasOwnProperty('item')) {
1717
asyncForEach(element.item, async (item) => {
1818
if (!item.hasOwnProperty('item')) {
19-
let namet = (item.name).toLowerCase().replace(/\s/g, '');
20-
namet = namet.replace(/\//g, '');
19+
let namet = (item.name).toLowerCase().replace(/\s/g, '')
20+
namet = namet.replace(/\//g, '')
21+
namet = namet.replace('-', '_')
2122
let method = item.request.method
2223

2324
if (moduleType == "Javascript modules (import/export)") {

lib/component/tests.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,11 +70,12 @@ let data = [
7070
isFileExisted(path, method + '_' + name + '.spec.js')
7171
.then((data) => {
7272
if (!data[0]) {
73-
// _postman_isSubFolder
74-
console.log(`${'\x1b[32m'}ø Generate Test ${path + '/' + method + '_' + name + '.spec.js'} completed successfully${'\x1b[0m'}`)
7573
// create file test
7674
fs.writeFile(path + '/' + method + '_' + name + '.spec.js',
7775
code, function (err) { if (err) throw err; });
76+
77+
// _postman_isSubFolder
78+
console.log(`${'\x1b[32m'}ø Generate Test ${path + '/' + method + '_' + name + '.spec.js'} completed successfully${'\x1b[0m'}`)
7879
} else {
7980
// file was existed
8081
console.log(`${'\x1b[33m'}ø The request of ${element.name} has already created${'\x1b[0m'}`)

lib/generate_env.js

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import fs from 'fs'
2+
import isFileExisted from './utils/check_dir.js';
3+
import asyncForEach from './utils/foreach.js';
4+
import waitFor from './utils/wait.js';
5+
6+
async function generateEnv(file, envName) {
7+
let envStr = ''
8+
9+
fs.readFile(file, (err, data) => {
10+
if (err) throw err;
11+
let items = JSON.parse(data).values;
12+
13+
let first
14+
asyncForEach(items, async (data) => {
15+
if (data.enabled) {
16+
if (first === false) envStr += '\r\n'
17+
envStr += data.key + '=' + data.value
18+
first = false;
19+
}
20+
})
21+
})
22+
23+
await waitFor(100)
24+
25+
// check if pages file exists
26+
isFileExisted(process.cwd(), '.env.' + envName)
27+
.then((data) => {
28+
if (!data[0]) {
29+
// create file test
30+
fs.writeFile('.env.' + envName,
31+
envStr, function (err) { if (err) throw err; });
32+
33+
// _postman_isSubFolder
34+
console.log(`${'\x1b[32m'}ø Generate environment file completed successfully${'\x1b[0m'}`)
35+
} else {
36+
console.log(`${'\x1b[33m'}ø The environment file has already created${'\x1b[0m'}`);
37+
}
38+
})
39+
.catch((err) => console.log(err));
40+
}
41+
42+
export default generateEnv

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
2-
"name": "dot-generator-mocha",
3-
"version": "1.3.7",
2+
"name": "@dot.indonesia/po-gen",
3+
"version": "1.4.3",
44
"main": "index.js",
55
"scripts": {
66
"test": "echo \"Error: no test specified\" && exit 1",

0 commit comments

Comments
 (0)