Skip to content

Commit c245dc3

Browse files
committed
added optional field in string iput
1 parent 571e489 commit c245dc3

File tree

4 files changed

+82
-32
lines changed

4 files changed

+82
-32
lines changed

bin/index.ts

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
const rover_utilities= require("@rover-tools/engine").rover_utilities;
2-
2+
const rover_config= require("@rover-tools/engine").rover_config;
3+
let fs = require("fs");
34
import * as cliConfig from "../cli-main/cliConfig";
45
import * as util from "../cli-main/util";
56
const deployment= require("@rover-tools/engine").rover_deployment;
@@ -19,7 +20,7 @@ async function run(argv:AnyObject) {
1920
if (argv[0] === "init") {
2021
let editedSam = await util.confirmation();
2122
if (editedSam === "create new SAM project") {
22-
let app_name:object = await util.inputString("app_name","", "App Name:");
23+
let app_name:object = await util.inputString("app_name","",false, "App Name:");
2324
await rover_utilities.checkFile(app_name["app_name"],"no")
2425
let language = await util.languageChoice();
2526
let stack_names: any = {};
@@ -36,11 +37,11 @@ async function run(argv:AnyObject) {
3637
let app_Types: any = [];
3738
let AppType:string = await util.appType("Module Type :");
3839

39-
4040
if (AppType !== "Customizable") {
41-
stackname[`stackName${i}`]=await util.makeid()
41+
stackname[`stackName${i}`]=await "rover"+rover_utilities.NumtoAlpabet(i)
4242
let stack_name = stackname
4343
let stackName:string = stack_name[`stackName${i}`];
44+
4445
if (AppType === "CRUD") {
4546
let crud:AnyObject={} ;
4647
let tempObj = {};
@@ -70,7 +71,7 @@ async function run(argv:AnyObject) {
7071
let choice = cliConfig.customizable.choice;
7172
let customstack_name = await util.inputString(
7273
`customStackName${i}`,
73-
"",
74+
"",false,
7475
`Stack ${i} Name: `
7576
);
7677
let CustomStacks = await util.multichoice("app_type", choice);
@@ -88,7 +89,7 @@ async function run(argv:AnyObject) {
8889

8990
} else if (editedSam === "add components to existing SAM") {
9091

91-
let app_name = await util.inputString("app_name","", "App Name");
92+
let app_name = await util.inputString("app_name","",false, "App Name");
9293
await rover_utilities.checkFile(app_name["app_name"],"yes")
9394

9495
let language = await util.languageChoice();
@@ -103,12 +104,10 @@ async function run(argv:AnyObject) {
103104
if (nested) {
104105
let chooseStack = await util.inputType("Select the module to which you want to add the components ", choice);
105106
let selectedchoice = choice.filter((ele) => Object.values(chooseStack).includes(ele));
106-
choice = choice.filter((ele) => ele !== selectedchoice[0]);
107107
let componentChoice = cliConfig.customizable.choice;
108108
let components = await util.multichoice("type", componentChoice);
109109
let path = CompStacks["CompStacks"][selectedchoice[0]];
110110
nestedComponents[selectedchoice[0]] = { ...components, path: path };
111-
112111
template = {
113112
...app_name,
114113
language,
@@ -127,12 +126,10 @@ async function run(argv:AnyObject) {
127126
...Compnents
128127
};
129128
}
130-
if(choiceLength===1 || !nested){
131-
break;
132-
}else{
129+
133130
moreStack = await util.moreStack("Do you want to add one more components to modules ?")
131+
console.log(moreStack)
134132
i++;
135-
}
136133

137134
} while (moreStack !== "No"|| choiceLength===0)
138135

@@ -159,10 +156,15 @@ async function run(argv:AnyObject) {
159156
}
160157
else {
161158
await util.samValidate()
159+
let pwd =(process.cwd()+"/").trim()
160+
if(fs.existsSync("samconfig.toml")) {
161+
exec("rm -rf samconfig.toml")
162+
163+
}
162164
let filenamearray=(exec("pwd").toString()).split("/")
163165
let file_name = filenamearray[filenamearray.length-1].replace("\n","");
164-
let stack_name = await util.inputString("stack_name","","Stack Name(optional) :")
165-
let bucketName = await util.inputString("name","","Bucket Name(optional) :");
166+
let stack_name = await util.inputString("stack_name","",true,"Stack Name(optional) :")
167+
let bucketName = await util.inputString("name","",true,"Bucket Name(optional) :");
166168
let choice = buildConfig.samConfig.choices.deploymentregion;
167169
let deploymentregion = await util.inputType("Deployment region",choice);
168170
if (bucketName["name"]=="") {
@@ -173,7 +175,7 @@ async function run(argv:AnyObject) {
173175
if (stack_name["stack_name"]=="") {stack_name=file_name+"roverTest"}else{stack_name=stack_name["stack_name"]}
174176
let region=deploymentregion["Deployment region"]
175177

176-
exec("sh " + rover_utilities.npmroot +"/@rover-tools/cli/cli-main/exec.sh "+file_name+" "+stack_name+" "+region+" "+bucketName);
178+
exec("sh " + rover_config.npmroot +"/@rover-tools/cli/cli-main/exec.sh "+file_name+" "+stack_name+" "+region+" "+bucketName);
177179

178180
}
179181
} else {

cli-main/util.ts

Lines changed: 38 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,18 @@ let Yaml = require("js-yaml");
88
const exec = require("child_process").execSync;
99
const moduleParams = require("@rover-tools/engine").rover_modules;
1010
const Stack = require("@rover-tools/engine").rover_modules;
11+
const rover_config = require("@rover-tools/engine").rover_config;
1112
import { AnyArray, AnyObject } from "immer/dist/internal";
1213
const rover_utilities= require("@rover-tools/engine").rover_utilities;
1314
const TOML = require('@iarna/toml')
1415
let pythonpattern=new RegExp(/python[1-9]*\.[1-9]*/g)
1516
let jspattern=new RegExp(/nodejs[1-9]*\.[a-zA-Z]*/g)
1617
let yamlpattern=new RegExp(/(\.yaml$)/g)
18+
let envpattern =new RegExp(/^env[0-9][0-9]+$/g)
1719
let apipathpattern=new RegExp(/^\/[a-zA-Z]*(\/[a-zA-Z]*-*)*/g)
20+
let stringpattern=new RegExp(/^[A-Za-z]+$/g)
21+
22+
const crypto = require('crypto');
1823

1924
export let s3Choice:any = [];
2025
export let accesskey:any,secretkey:any;
@@ -48,23 +53,38 @@ export let jsonCreation = async function (obj:any) {
4853
}
4954
};
5055

51-
export let inputString = async function (userName: string,defaults:string, message = "") {
56+
export let inputString = async function (userName: string,defaults:string,optional:boolean, message = "") {
5257
let takeInput = await inquirer.prompt([
5358
{
5459
type: "input",
5560
name: userName,
5661
message: message,
5762
validate: function (value) {
63+
let pass=true
64+
let message=""
5865
if (userName=="path"){
59-
let pass = apipathpattern.test(value)
60-
if (pass) {
61-
return true
66+
let passtest = apipathpattern.test(value)
67+
if (passtest) {
68+
pass=true
69+
}else{
70+
message="Please enter a valid path"
71+
}
72+
}else {
73+
let passtest
74+
if (!optional) {
75+
if (stringpattern.test(value))passtest=true
76+
else message=`${userName} should have only alphanumeric values`
77+
78+
}
79+
6280
}
63-
return "Please enter a valid path"
64-
}else{
65-
return true
81+
if(envpattern.test(userName)){
82+
let passtest
83+
if(value!==""&&value!==undefined)passtest=true
84+
else message="environment values cannot be empty"
6685
}
67-
86+
if(message!=="") return message
87+
else return true
6888
},
6989
},
7090
]);
@@ -130,11 +150,11 @@ export let inputNumber = async function (userName: string,message:string) {
130150
message: `Please enter the required number of ${displayname} you want ?`,
131151
name: `${userName}`,
132152
validate: function (value) {
133-
let pass = !isNaN(value)
153+
let pass = !isNaN(value) && value>0
134154
if (pass) {
135155
return true
136156
}
137-
return 'Please enter a valid number'
157+
return 'Please enter a valid number greater than 0'
138158

139159
},
140160
},
@@ -271,7 +291,7 @@ export let inputCli = async function (
271291
.map(({ key, value }) => key);
272292
res[sobj.key] = choiceNames[0];
273293
} else {
274-
let name = await inputString("name","", `${sobj.message}-->Name`);
294+
let name = await inputString("name","",false, `${sobj.message}-->Name`);
275295

276296
let temp = name;
277297

@@ -355,7 +375,7 @@ Object.assign(temp,ele)
355375
let deploymentparameters: any = {};
356376
let depBucketNames: any = {};
357377
for (let i = 1; i <= no_of_env; i++) {
358-
let env = await inputString(`env${i}`,"",`Envrionment ${i} :`);
378+
let env = await inputString(`env${i}`,"",false,`Envrionment ${i} :`);
359379
let envName = env[`env${i}`];
360380
envs.push(envName);
361381
let stepsChoice = buildConfig.samConfig.choices.dev;
@@ -369,19 +389,20 @@ Object.assign(temp,ele)
369389

370390
let stackname = await inputString(
371391
`${envName}`,
372-
"",
392+
"",true,
393+
373394
`Stack Name(optional) --> ${envName} :`
374395
);
375396
let deploymentbucket = await inputString(
376397
`${envName}`,
377-
"",
398+
"",true,
378399
`Deployment Bucket(optional) --> ${envName} :`
379400
);
380401
let regionChoice = buildConfig.samConfig.choices.deploymentregion;
381402
let deployment_region = await inputType(`${envName}`, regionChoice,"Deployment Region");
382403
let deployment_parameter = await inputString(
383404
`${envName}`,
384-
"",
405+
"",true,
385406
`Deployment Parameter(optional) --> ${envName} :`
386407
);
387408
steps = { ...steps,...steps1 };
@@ -537,11 +558,11 @@ export let samValidate=async function(){
537558
throw new Error("SAM Template error \n")
538559
}
539560
} catch (error) {
540-
throw new Error("Not a SAM file or "+error.message)
561+
throw new Error("Not a SAM file or "+error.message)
541562
}
542563

543564
}
544565
export let makeid =async function () {
545-
const crypto = require('crypto');
566+
546567
return (crypto.randomBytes(1).toString("base64url").replace(/\d/g, 'd')).toLowerCase();
547568
}

package-lock.json

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

workflows/main.yml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
name: Publish Package to NPM
2+
on:
3+
release:
4+
types: [created]
5+
jobs:
6+
build:
7+
runs-on: ubuntu-latest
8+
steps:
9+
- name: Check out code
10+
uses: actions/checkout@v3
11+
# Setup .npmrc file to publish to npm
12+
13+
- name: Setup Node.js environment
14+
uses: actions/setup-node@v3
15+
with:
16+
node-version: '16.x'
17+
registry-url: 'https://registry.npmjs.org'
18+
19+
- name: Build
20+
run: npm run build
21+
22+
- name: Publish
23+
run: npm publish
24+
env:
25+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

0 commit comments

Comments
 (0)