Skip to content

Commit eec6e37

Browse files
committed
Merge branch 'feature-clisearch'
2 parents 9179d67 + aaf072e commit eec6e37

File tree

5 files changed

+153
-12
lines changed

5 files changed

+153
-12
lines changed

CHECKLIST.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
- [x] - Custom installation for TypeScript
1919
- [x] - Deployment to NPM done. Beta testing underway.
2020
- [x] - Stable Release.
21+
- [x] - Search for packages and install (experimental).
2122

2223
## In progress
2324

cliModel/index.js

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ module.exports.cliCommand = [
44
name: 'installation',
55
message: 'What would you like to install?',
66
choices: [
7+
'Search Online (experimental)',
78
'CustomPackageInstall',
89
'CreateReactApp',
910
'ReactComponent',
@@ -152,10 +153,7 @@ module.exports.accesibilityPackages = [
152153
type: 'list',
153154
name: 'access',
154155
message: 'Please select the accesibility package to add to your project: ',
155-
choices: [
156-
'Reacta11y',
157-
'Reactaxe'
158-
]
156+
choices: ['Reacta11y', 'Reactaxe']
159157
}
160158
]
161159

@@ -168,3 +166,31 @@ module.exports.YarnOrNpm = [
168166
choices: ['Yarn', 'NPM']
169167
}
170168
]
169+
170+
module.exports.SearchTerm = [
171+
{
172+
type: 'input',
173+
name: 'searchTerm',
174+
message: 'Search package(s): \n'
175+
}
176+
]
177+
178+
module.exports.ConfirmSelection = [
179+
{
180+
type: 'list',
181+
name: 'confirmation',
182+
message:
183+
'Are you sure you would like to proceed with the above packages?',
184+
choices: ['Yes', 'No']
185+
}
186+
]
187+
188+
module.exports.GlobalOrNot = [
189+
{
190+
type: 'list',
191+
name: 'confirm',
192+
message:
193+
'Do you want to install package(s) globally?',
194+
choices: ['Yes', 'No']
195+
}
196+
]

cliRoutes/CustomSearch/index.js

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
const axios = require('axios')
2+
const inquirer = require('inquirer')
3+
const cliModel = require('../../cliModel')
4+
const customCMD = require('../../customNodeCMD')
5+
const { SearchTerm, YarnOrNpm, ConfirmSelection, GlobalOrNot } = cliModel
6+
const prompt = inquirer.createPromptModule()
7+
8+
module.exports = class SearchOnline {
9+
constructor () {
10+
this.packagesSelected = []
11+
}
12+
13+
search () {
14+
prompt(SearchTerm[0]).then(({ searchTerm }) => {
15+
if (searchTerm.length > 0) {
16+
let data = []
17+
axios
18+
.get(`https://www.npmjs.com/search/suggestions?q=${searchTerm}`)
19+
.then(response => {
20+
if (response.data && response.data.length > 0) {
21+
response.data.forEach(x => {
22+
data.push(x.name)
23+
})
24+
prompt({
25+
type: 'checkbox',
26+
name: 'Options',
27+
choices: data
28+
}).then(({ Options }) => {
29+
Options.forEach(opt => this.packagesSelected.push(opt))
30+
if (this.packagesSelected.length === 0) return this.search
31+
console.log(
32+
"You've selected these Package(s): ",
33+
this.packagesSelected.join(', ')
34+
)
35+
return prompt(ConfirmSelection).then(({ confirmation }) => {
36+
switch (confirmation) {
37+
case 'Yes':
38+
prompt(YarnOrNpm).then(({ packageManager }) => {
39+
switch (packageManager) {
40+
case 'Yarn':
41+
prompt(GlobalOrNot).then(({ confirm }) => {
42+
switch (confirm) {
43+
case 'Yes':
44+
customCMD.get(
45+
`yarn add ${this.packagesSelected.join(' ')} -g`,
46+
'install',
47+
`Package(s): ${this.packagesSelected.join(
48+
' '
49+
)} have been installed successfully!`
50+
)
51+
break
52+
53+
case 'No':
54+
customCMD.get(
55+
`yarn add ${this.packagesSelected.join(' ')}`,
56+
'install',
57+
`Package(s): ${this.packagesSelected.join(
58+
' '
59+
)} have been installed successfully!`
60+
)
61+
break
62+
}
63+
})
64+
break
65+
66+
case 'NPM':
67+
prompt(GlobalOrNot).then(({ confirm }) => {
68+
switch (confirm) {
69+
case 'Yes':
70+
customCMD.get(
71+
`npm install ${this.packagesSelected.join(' ')} -g`,
72+
'install',
73+
`Package(s): ${this.packagesSelected.join(
74+
' '
75+
)} have been installed successfully!`
76+
)
77+
break
78+
79+
case 'No':
80+
customCMD.get(
81+
`npm install ${this.packagesSelected.join(' ')}`,
82+
'install',
83+
`Package(s): ${this.packagesSelected.join(
84+
' '
85+
)} have been installed successfully!`
86+
)
87+
break
88+
}
89+
})
90+
break
91+
}
92+
})
93+
break
94+
case 'No':
95+
return this.search()
96+
}
97+
})
98+
})
99+
} else {
100+
// console.log("No packages found");
101+
return this.search()
102+
}
103+
})
104+
}
105+
})
106+
}
107+
}

options.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
// Cli Routes
2+
const axios = require('axios')
3+
24
const CRA = require('./cliRoutes/CRA/cra')
35
const ReactRouter = require('./cliRoutes/reactrouter')
46
const StylingPackages = require('./cliRoutes/StylingPackages/index')
@@ -8,9 +10,13 @@ const StateManagement = require('./cliRoutes/StateManagement/stateManagement')
810
const TypeScript = require('./cliRoutes/TypeScript/index')
911
const CustomPackageInstall = require('./cliRoutes/CustomPackageInstall')
1012
const AccesibilityPackages = require('./cliRoutes/AccesibilityPackages')
13+
const SearchOnline = require('./cliRoutes/CustomSearch')
1114

1215
module.exports = answers => {
1316
switch (answers.installation) {
17+
case 'Search Online (experimental)':
18+
new SearchOnline().search()
19+
break
1420
case 'CreateReactApp':
1521
new CRA().CRAPrompt()
1622
break

package.json

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,13 @@
4141
"author": "Dev Isle",
4242
"license": "GNU GPLv3",
4343
"dependencies": {
44-
"@babel/runtime": "^7.7.7",
44+
"@babel/runtime": "^7.8.7",
45+
"axios": "^0.19.2",
4546
"chalk": "^2.4.2",
4647
"clear": "^0.1.0",
47-
"cli-progress": "^3.4.0",
48+
"cli-progress": "^3.6.0",
4849
"clui": "^0.3.6",
49-
"figlet": "^1.2.3",
50+
"figlet": "^1.3.0",
5051
"inquirer": "^6.4.1",
5152
"ora": "^4.0.2"
5253
},
@@ -59,11 +60,11 @@
5960
},
6061
"homepage": "https://advanced-react-cli.netlify.com/",
6162
"devDependencies": {
62-
"@babel/cli": "^7.7.7",
63-
"@babel/core": "^7.7.7",
64-
"@babel/plugin-transform-regenerator": "^7.7.5",
65-
"@babel/plugin-transform-runtime": "^7.7.6",
66-
"@babel/preset-env": "^7.7.7",
63+
"@babel/cli": "^7.8.4",
64+
"@babel/core": "^7.8.7",
65+
"@babel/plugin-transform-regenerator": "^7.8.7",
66+
"@babel/plugin-transform-runtime": "^7.8.3",
67+
"@babel/preset-env": "^7.8.7",
6768
"babel-jest": "^24.9.0",
6869
"husky": "^3.0.0",
6970
"jest": "^24.8.0",

0 commit comments

Comments
 (0)