scaffy-tool 1.0.0 ā 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/cli.js +4 -6
- package/core/interviewer.js +12 -9
- package/core/registry.js +10 -3
- package/package.json +1 -1
- package/registry/go/gin/v1/questions.js +1 -1
- package/registry/index.json +2 -2
- package/registry/javascript/expressjs/v4/questions.js +2 -2
- package/registry/javascript/nestjs/v10/questions.js +2 -2
- package/registry/javascript/nestjs/v11/questions.js +2 -2
- package/registry/javascript/nextjs/v14/questions.js +1 -1
- package/registry/javascript/vuejs/v3/questions.js +1 -1
- package/registry/php/laravel/v11/questions.js +2 -2
- package/registry/php/laravel/v12/questions.js +2 -2
- package/registry/php/laravel/v13/questions.js +2 -2
- package/registry/php/symfony/v7/questions.js +1 -14
- package/registry/php/symfony/v7/scaffold.js +7 -19
- package/registry/python/django/v5/questions.js +1 -1
- package/registry/python/fastapi/v1/questions.js +1 -1
package/README.md
CHANGED
package/cli.js
CHANGED
|
@@ -40,16 +40,14 @@ const runScaffold = async framework => {
|
|
|
40
40
|
const utils = buildPluginUtils(executor);
|
|
41
41
|
|
|
42
42
|
divider();
|
|
43
|
-
|
|
44
|
-
chalk.cyan(`Scaffolding ${framework.name} project...`)
|
|
45
|
-
).start();
|
|
43
|
+
console.log(chalk.cyan(`\nš Scaffolding ${framework.name} project...\n`));
|
|
46
44
|
try {
|
|
47
45
|
await plugin.scaffold(answers, utils);
|
|
48
|
-
|
|
49
|
-
chalk.green(
|
|
46
|
+
console.log(
|
|
47
|
+
chalk.green(`\nā
${framework.name} project created successfully!\n`)
|
|
50
48
|
);
|
|
51
49
|
} catch (err) {
|
|
52
|
-
|
|
50
|
+
console.log(chalk.red('\nā Scaffolding failed\n'));
|
|
53
51
|
error(err.message);
|
|
54
52
|
process.exit(1);
|
|
55
53
|
}
|
package/core/interviewer.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import inquirer from 'inquirer';
|
|
3
|
-
import {
|
|
3
|
+
import { getAvailableFrameworks, findFramework } from './registry.js';
|
|
4
4
|
|
|
5
5
|
const baseQuestions = framework => [
|
|
6
6
|
{
|
|
@@ -26,12 +26,15 @@ const buildQuestions = (framework, pluginQuestions) => [
|
|
|
26
26
|
];
|
|
27
27
|
|
|
28
28
|
const buildFrameworkChoices = () =>
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
chalk.
|
|
33
|
-
|
|
34
|
-
|
|
29
|
+
getAvailableFrameworks().map(f => {
|
|
30
|
+
const versionsStr = f.versions
|
|
31
|
+
.map(v => (v === f.latest ? chalk.green(`${v} (latest)`) : chalk.gray(v)))
|
|
32
|
+
.join(chalk.gray(', '));
|
|
33
|
+
return {
|
|
34
|
+
name: `${f.name} ${chalk.gray(`(${f.language})`)} ā ` + versionsStr,
|
|
35
|
+
value: f,
|
|
36
|
+
};
|
|
37
|
+
});
|
|
35
38
|
|
|
36
39
|
const buildVersionChoices = framework =>
|
|
37
40
|
framework.versions.map(v => ({
|
|
@@ -42,7 +45,7 @@ const buildVersionChoices = framework =>
|
|
|
42
45
|
const askFramework = async () => {
|
|
43
46
|
const { framework } = await inquirer.prompt([
|
|
44
47
|
{
|
|
45
|
-
type: '
|
|
48
|
+
type: 'select',
|
|
46
49
|
name: 'framework',
|
|
47
50
|
message: 'Which framework?',
|
|
48
51
|
choices: buildFrameworkChoices(),
|
|
@@ -57,7 +60,7 @@ const askVersion = async framework => {
|
|
|
57
60
|
}
|
|
58
61
|
const { version } = await inquirer.prompt([
|
|
59
62
|
{
|
|
60
|
-
type: '
|
|
63
|
+
type: 'select',
|
|
61
64
|
name: 'version',
|
|
62
65
|
message: 'Which version?',
|
|
63
66
|
choices: buildVersionChoices(framework),
|
package/core/registry.js
CHANGED
|
@@ -106,9 +106,16 @@ const loadPlugin = async (framework, version) => {
|
|
|
106
106
|
return { meta, questions, scaffold };
|
|
107
107
|
};
|
|
108
108
|
|
|
109
|
-
const formatFrameworkLine = f =>
|
|
110
|
-
|
|
111
|
-
|
|
109
|
+
const formatFrameworkLine = f => {
|
|
110
|
+
const versionsStr = f.versions
|
|
111
|
+
.map(v => (v === f.latest ? chalk.green(`${v} (latest)`) : chalk.gray(v)))
|
|
112
|
+
.join(chalk.gray(', '));
|
|
113
|
+
return (
|
|
114
|
+
chalk.white(` ⢠${f.name}`) +
|
|
115
|
+
chalk.gray(` (${f.alias.join(', ')}) ā `) +
|
|
116
|
+
versionsStr
|
|
117
|
+
);
|
|
118
|
+
};
|
|
112
119
|
|
|
113
120
|
const displayFrameworks = () => {
|
|
114
121
|
const frameworks = getAvailableFrameworks();
|
package/package.json
CHANGED
package/registry/index.json
CHANGED
|
@@ -11,7 +11,7 @@ export default async () => {
|
|
|
11
11
|
|
|
12
12
|
return [
|
|
13
13
|
{
|
|
14
|
-
type: '
|
|
14
|
+
type: 'select',
|
|
15
15
|
name: 'packageManager',
|
|
16
16
|
message: pluginMeta.packageManagerQuestion.message,
|
|
17
17
|
choices: availableManagers,
|
|
@@ -23,7 +23,7 @@ export default async () => {
|
|
|
23
23
|
default: false,
|
|
24
24
|
},
|
|
25
25
|
{
|
|
26
|
-
type: '
|
|
26
|
+
type: 'select',
|
|
27
27
|
name: 'database',
|
|
28
28
|
message: 'Database?',
|
|
29
29
|
choices: [
|
|
@@ -23,7 +23,7 @@ export default async () => {
|
|
|
23
23
|
},
|
|
24
24
|
},
|
|
25
25
|
{
|
|
26
|
-
type: '
|
|
26
|
+
type: 'select',
|
|
27
27
|
name: 'packageManager',
|
|
28
28
|
message: pluginMeta.packageManagerQuestion.message,
|
|
29
29
|
choices: availableManagers.map(m => ({
|
|
@@ -33,7 +33,7 @@ export default async () => {
|
|
|
33
33
|
default: availableManagers[0].value,
|
|
34
34
|
},
|
|
35
35
|
{
|
|
36
|
-
type: '
|
|
36
|
+
type: 'select',
|
|
37
37
|
name: 'database',
|
|
38
38
|
message: 'Database:',
|
|
39
39
|
choices: [
|
|
@@ -23,7 +23,7 @@ export default async () => {
|
|
|
23
23
|
},
|
|
24
24
|
},
|
|
25
25
|
{
|
|
26
|
-
type: '
|
|
26
|
+
type: 'select',
|
|
27
27
|
name: 'packageManager',
|
|
28
28
|
message: pluginMeta.packageManagerQuestion.message,
|
|
29
29
|
choices: availableManagers.map(m => ({
|
|
@@ -33,7 +33,7 @@ export default async () => {
|
|
|
33
33
|
default: availableManagers[0].value,
|
|
34
34
|
},
|
|
35
35
|
{
|
|
36
|
-
type: '
|
|
36
|
+
type: 'select',
|
|
37
37
|
name: 'database',
|
|
38
38
|
message: 'Database:',
|
|
39
39
|
choices: [
|
|
@@ -13,7 +13,7 @@ export default [
|
|
|
13
13
|
},
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
|
-
type: '
|
|
16
|
+
type: 'select',
|
|
17
17
|
name: 'starterKit',
|
|
18
18
|
message: 'Starter kit:',
|
|
19
19
|
choices: [
|
|
@@ -24,7 +24,7 @@ export default [
|
|
|
24
24
|
default: 'none',
|
|
25
25
|
},
|
|
26
26
|
{
|
|
27
|
-
type: '
|
|
27
|
+
type: 'select',
|
|
28
28
|
name: 'database',
|
|
29
29
|
message: 'Database:',
|
|
30
30
|
choices: [
|
|
@@ -15,7 +15,7 @@ export default [
|
|
|
15
15
|
},
|
|
16
16
|
},
|
|
17
17
|
{
|
|
18
|
-
type: '
|
|
18
|
+
type: 'select',
|
|
19
19
|
name: 'starterKit',
|
|
20
20
|
message: 'Starter kit?',
|
|
21
21
|
choices: [
|
|
@@ -26,7 +26,7 @@ export default [
|
|
|
26
26
|
default: 'none',
|
|
27
27
|
},
|
|
28
28
|
{
|
|
29
|
-
type: '
|
|
29
|
+
type: 'select',
|
|
30
30
|
name: 'database',
|
|
31
31
|
message: 'Database?',
|
|
32
32
|
choices: [
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export default [
|
|
2
2
|
{
|
|
3
|
-
type: '
|
|
3
|
+
type: 'select',
|
|
4
4
|
name: 'starterKit',
|
|
5
5
|
message: 'Starter kit?',
|
|
6
6
|
choices: [
|
|
@@ -10,7 +10,7 @@ export default [
|
|
|
10
10
|
],
|
|
11
11
|
},
|
|
12
12
|
{
|
|
13
|
-
type: '
|
|
13
|
+
type: 'select',
|
|
14
14
|
name: 'database',
|
|
15
15
|
message: 'Database?',
|
|
16
16
|
choices: [
|
|
@@ -1,19 +1,6 @@
|
|
|
1
1
|
export default [
|
|
2
2
|
{
|
|
3
|
-
type: '
|
|
4
|
-
name: 'projectType',
|
|
5
|
-
message: 'Project type?',
|
|
6
|
-
choices: [
|
|
7
|
-
{ name: 'Web App ā full stack with Twig, forms, ORM', value: 'webapp' },
|
|
8
|
-
{ name: 'API ā REST API with Symfony skeleton', value: 'api' },
|
|
9
|
-
{
|
|
10
|
-
name: 'Microservice ā minimal Symfony skeleton',
|
|
11
|
-
value: 'microservice',
|
|
12
|
-
},
|
|
13
|
-
],
|
|
14
|
-
},
|
|
15
|
-
{
|
|
16
|
-
type: 'list',
|
|
3
|
+
type: 'select',
|
|
17
4
|
name: 'database',
|
|
18
5
|
message: 'Database?',
|
|
19
6
|
choices: [
|
|
@@ -6,25 +6,13 @@ export default async (answers, utils) => {
|
|
|
6
6
|
// āāā Step 1: Install āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
7
7
|
utils.step(1, 'Running Symfony installer');
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
);
|
|
13
|
-
} else {
|
|
14
|
-
await utils.run(
|
|
15
|
-
`composer create-project symfony/skeleton:"7.*" ${projectName}`
|
|
16
|
-
);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
// āāā Step 2: API Platform āāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
20
|
-
if (projectType === 'api') {
|
|
21
|
-
utils.step(2, 'Installing API Platform');
|
|
22
|
-
await utils.runInProject(projectName, 'composer require api-platform/core');
|
|
23
|
-
}
|
|
9
|
+
await utils.run(
|
|
10
|
+
`composer create-project symfony/skeleton:"7.*" ${projectName}`
|
|
11
|
+
);
|
|
24
12
|
|
|
25
|
-
// āāā Step
|
|
13
|
+
// āāā Step 2: Database āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
26
14
|
if (database !== 'none') {
|
|
27
|
-
utils.step(
|
|
15
|
+
utils.step(2, 'Configuring database');
|
|
28
16
|
await utils.runInProject(projectName, 'composer require symfony/orm-pack');
|
|
29
17
|
await utils.runInProject(
|
|
30
18
|
projectName,
|
|
@@ -42,9 +30,9 @@ export default async (answers, utils) => {
|
|
|
42
30
|
});
|
|
43
31
|
}
|
|
44
32
|
|
|
45
|
-
// āāā Step
|
|
33
|
+
// āāā Step 3: Docker āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
46
34
|
if (docker) {
|
|
47
|
-
utils.step(
|
|
35
|
+
utils.step(3, 'Creating Docker config');
|
|
48
36
|
|
|
49
37
|
const dockerCompose = `version: '3.8'
|
|
50
38
|
services:
|