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 CHANGED
@@ -171,7 +171,7 @@ scaffy --help # Help
171
171
  <td>v4</td>
172
172
  </tr>
173
173
  <tr>
174
- <td rowspan="3"><strong>Python</strong></td>
174
+ <td rowspan="2"><strong>Python</strong></td>
175
175
  <td>Django</td>
176
176
  <td><code>scaffy django</code></td>
177
177
  <td>v5</td>
package/cli.js CHANGED
@@ -40,16 +40,14 @@ const runScaffold = async framework => {
40
40
  const utils = buildPluginUtils(executor);
41
41
 
42
42
  divider();
43
- const spinner = ora(
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
- spinner.succeed(
49
- chalk.green(`${framework.name} project created successfully!`)
46
+ console.log(
47
+ chalk.green(`\nāœ… ${framework.name} project created successfully!\n`)
50
48
  );
51
49
  } catch (err) {
52
- spinner.fail(chalk.red('Scaffolding failed'));
50
+ console.log(chalk.red('\nāŒ Scaffolding failed\n'));
53
51
  error(err.message);
54
52
  process.exit(1);
55
53
  }
@@ -1,6 +1,6 @@
1
1
  import chalk from 'chalk';
2
2
  import inquirer from 'inquirer';
3
- import { getFrameworks, findFramework } from './registry.js';
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
- getFrameworks().map(f => ({
30
- name:
31
- `${f.name} ${chalk.gray(`(${f.language})`)} ` +
32
- chalk.cyan(`— latest: ${f.latest}`),
33
- value: f,
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: 'list',
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: 'list',
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
- chalk.white(` • ${f.name}`) +
111
- chalk.gray(` (${f.alias.join(', ')}) — latest: ${f.latest}`);
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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "scaffy-tool",
3
3
  "type": "module",
4
- "version": "1.0.0",
4
+ "version": "1.0.1",
5
5
  "description": "One command. Any framework. Ready to code.",
6
6
  "author": "Md Tanvir Hossen <tanvirhossen112@gmail.com>",
7
7
  "license": "MIT",
@@ -1,6 +1,6 @@
1
1
  export default [
2
2
  {
3
- type: 'list',
3
+ type: 'select',
4
4
  name: 'database',
5
5
  message: 'Database?',
6
6
  choices: [
@@ -5,8 +5,8 @@
5
5
  "name": "Laravel",
6
6
  "alias": ["laravel"],
7
7
  "language": "php",
8
- "latest": "v11",
9
- "versions": ["v11", "v10"],
8
+ "latest": "v13",
9
+ "versions": ["v13", "v12", "v11"],
10
10
  "path": "php/laravel"
11
11
  },
12
12
  {
@@ -11,7 +11,7 @@ export default async () => {
11
11
 
12
12
  return [
13
13
  {
14
- type: 'list',
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: 'list',
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: 'list',
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: 'list',
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: 'list',
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: 'list',
36
+ type: 'select',
37
37
  name: 'database',
38
38
  message: 'Database:',
39
39
  choices: [
@@ -11,7 +11,7 @@ export default async () => {
11
11
 
12
12
  return [
13
13
  {
14
- type: 'list',
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
  },
24
24
  },
25
25
  {
26
- type: 'list',
26
+ type: 'select',
27
27
  name: 'packageManager',
28
28
  message: pluginMeta.packageManagerQuestion.message,
29
29
  choices: availableManagers.map(m => ({
@@ -13,7 +13,7 @@ export default [
13
13
  },
14
14
  },
15
15
  {
16
- type: 'list',
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: 'list',
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: 'list',
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: 'list',
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: 'list',
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: 'list',
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: 'list',
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
- if (projectType === 'webapp') {
10
- await utils.run(
11
- `composer create-project symfony/website-skeleton:"7.*" ${projectName}`
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 3: Database ──────────────────────────────────
13
+ // ─── Step 2: Database ──────────────────────────────────
26
14
  if (database !== 'none') {
27
- utils.step(3, 'Configuring database');
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 4: Docker ────────────────────────────────────
33
+ // ─── Step 3: Docker ────────────────────────────────────
46
34
  if (docker) {
47
- utils.step(4, 'Creating Docker config');
35
+ utils.step(3, 'Creating Docker config');
48
36
 
49
37
  const dockerCompose = `version: '3.8'
50
38
  services:
@@ -1,6 +1,6 @@
1
1
  export default [
2
2
  {
3
- type: 'list',
3
+ type: 'select',
4
4
  name: 'database',
5
5
  message: 'Database?',
6
6
  choices: [
@@ -1,6 +1,6 @@
1
1
  export default [
2
2
  {
3
- type: 'list',
3
+ type: 'select',
4
4
  name: 'database',
5
5
  message: 'Database?',
6
6
  choices: [