@lakutata/cli 2.17.0 → 3.0.0-beta.0

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.
Files changed (101) hide show
  1. package/README.md +455 -28
  2. package/dist/esm/CLIApp.js +6 -0
  3. package/dist/esm/Config.js +53 -0
  4. package/dist/esm/controllers/CommandLineController.js +180 -0
  5. package/dist/esm/controllers/I18nController.js +67 -0
  6. package/dist/esm/controllers/MigrationController.js +66 -0
  7. package/dist/esm/controllers/NativeController.js +41 -0
  8. package/dist/esm/controllers/PackController.js +88 -0
  9. package/dist/esm/controllers/WorkspaceController.js +91 -0
  10. package/dist/esm/dtos/AddPackageDTO.js +25 -0
  11. package/dist/esm/dtos/BundleDTO.js +29 -0
  12. package/dist/esm/dtos/CleanDTO.js +17 -0
  13. package/dist/esm/dtos/CreateProjectDTO.js +61 -0
  14. package/dist/esm/dtos/ExecutableDTO.js +37 -0
  15. package/dist/esm/dtos/I18nDTO.js +41 -0
  16. package/dist/esm/dtos/InstallerDTO.js +33 -0
  17. package/dist/{options/ListTemplatesOptions.js → esm/dtos/ListTemplatesDTO.js} +5 -14
  18. package/dist/esm/dtos/MigrationDTO.js +45 -0
  19. package/dist/esm/dtos/NativeDTO.js +41 -0
  20. package/dist/esm/dtos/RunScriptDTO.js +33 -0
  21. package/dist/esm/dtos/VersionDTO.js +29 -0
  22. package/dist/esm/lib/AddPackage.js +487 -0
  23. package/dist/esm/lib/Builder.js +21 -0
  24. package/dist/esm/lib/Clean.js +146 -0
  25. package/dist/esm/lib/Environment.js +11 -0
  26. package/dist/esm/lib/I18n.js +67 -0
  27. package/dist/esm/lib/Language.js +24 -0
  28. package/dist/esm/lib/Migration.js +94 -0
  29. package/dist/esm/lib/Output.js +40 -0
  30. package/dist/esm/lib/Processes.js +54 -0
  31. package/dist/esm/lib/ProjectCreator.js +191 -0
  32. package/dist/esm/lib/Registry.js +152 -0
  33. package/dist/esm/lib/Settings.js +25 -0
  34. package/dist/esm/lib/Tar.js +145 -0
  35. package/dist/esm/lib/TemplateCatalog.js +195 -0
  36. package/dist/esm/lib/TemplateFeatures.js +141 -0
  37. package/dist/esm/lib/Versions.js +58 -0
  38. package/dist/esm/lib/native/CMake.js +357 -0
  39. package/dist/esm/lib/native/Gyp.js +398 -0
  40. package/dist/esm/lib/native/NativeProject.js +370 -0
  41. package/dist/esm/lib/native/TextEdits.js +68 -0
  42. package/dist/esm/lib/native/Toml.js +325 -0
  43. package/dist/esm/lib/workspace/Run.js +111 -0
  44. package/dist/esm/lib/workspace/Version.js +144 -0
  45. package/dist/esm/lib/workspace/Workspace.js +231 -0
  46. package/dist/esm/locales/zh-CN.json +194 -0
  47. package/dist/esm/locales/zh-TW.json +194 -0
  48. package/dist/esm/types/ProcessResult.js +1 -0
  49. package/package.json +32 -43
  50. package/CHANGELOG.md +0 -452
  51. package/dist/CLIApp.d.ts +0 -3
  52. package/dist/CLIApp.d.ts.map +0 -1
  53. package/dist/CLIApp.js +0 -45
  54. package/dist/config/Config.d.ts +0 -3
  55. package/dist/config/Config.d.ts.map +0 -1
  56. package/dist/config/Config.js +0 -63
  57. package/dist/config/SetupCLIEntrypoint.d.ts +0 -3
  58. package/dist/config/SetupCLIEntrypoint.d.ts.map +0 -1
  59. package/dist/config/SetupCLIEntrypoint.js +0 -31
  60. package/dist/controllers/CommandLineController.d.ts +0 -25
  61. package/dist/controllers/CommandLineController.d.ts.map +0 -1
  62. package/dist/controllers/CommandLineController.js +0 -78
  63. package/dist/lib/ConvertDTO2Inquirer.d.ts +0 -3
  64. package/dist/lib/ConvertDTO2Inquirer.d.ts.map +0 -1
  65. package/dist/lib/ConvertDTO2Inquirer.js +0 -61
  66. package/dist/lib/GetDataDirectory.d.ts +0 -2
  67. package/dist/lib/GetDataDirectory.d.ts.map +0 -1
  68. package/dist/lib/GetDataDirectory.js +0 -11
  69. package/dist/lib/GetLocalDataFilename.d.ts +0 -2
  70. package/dist/lib/GetLocalDataFilename.d.ts.map +0 -1
  71. package/dist/lib/GetLocalDataFilename.js +0 -12
  72. package/dist/lib/ListTemplateNames.d.ts +0 -2
  73. package/dist/lib/ListTemplateNames.d.ts.map +0 -1
  74. package/dist/lib/ListTemplateNames.js +0 -44
  75. package/dist/lib/SpecialChar.d.ts +0 -9
  76. package/dist/lib/SpecialChar.d.ts.map +0 -1
  77. package/dist/lib/SpecialChar.js +0 -11
  78. package/dist/lib/components/DeGitPuller.d.ts +0 -19
  79. package/dist/lib/components/DeGitPuller.d.ts.map +0 -1
  80. package/dist/lib/components/DeGitPuller.js +0 -65
  81. package/dist/lib/components/Spinner.d.ts +0 -23
  82. package/dist/lib/components/Spinner.d.ts.map +0 -1
  83. package/dist/lib/components/Spinner.js +0 -61
  84. package/dist/lib/providers/Creator.d.ts +0 -46
  85. package/dist/lib/providers/Creator.d.ts.map +0 -1
  86. package/dist/lib/providers/Creator.js +0 -179
  87. package/dist/lib/providers/Information.d.ts +0 -91
  88. package/dist/lib/providers/Information.d.ts.map +0 -1
  89. package/dist/lib/providers/Information.js +0 -225
  90. package/dist/lib/providers/OnlineLatestVersion.d.ts +0 -14
  91. package/dist/lib/providers/OnlineLatestVersion.d.ts.map +0 -1
  92. package/dist/lib/providers/OnlineLatestVersion.js +0 -47
  93. package/dist/lib/providers/TemplateManager.d.ts +0 -36
  94. package/dist/lib/providers/TemplateManager.d.ts.map +0 -1
  95. package/dist/lib/providers/TemplateManager.js +0 -164
  96. package/dist/options/CreateProjectOptions.d.ts +0 -15
  97. package/dist/options/CreateProjectOptions.d.ts.map +0 -1
  98. package/dist/options/CreateProjectOptions.js +0 -94
  99. package/dist/options/ListTemplatesOptions.d.ts +0 -5
  100. package/dist/options/ListTemplatesOptions.d.ts.map +0 -1
  101. package/tsconfig.json +0 -7
@@ -1,164 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
- return c > 3 && r && Object.defineProperty(target, key, r), r;
23
- };
24
- var __importStar = (this && this.__importStar) || function (mod) {
25
- if (mod && mod.__esModule) return mod;
26
- var result = {};
27
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
28
- __setModuleDefault(result, mod);
29
- return result;
30
- };
31
- var __metadata = (this && this.__metadata) || function (k, v) {
32
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
33
- };
34
- var __importDefault = (this && this.__importDefault) || function (mod) {
35
- return (mod && mod.__esModule) ? mod : { "default": mod };
36
- };
37
- Object.defineProperty(exports, "__esModule", { value: true });
38
- exports.TemplateManager = void 0;
39
- const lakutata_1 = require("lakutata");
40
- const ListTemplatesOptions_1 = require("../../options/ListTemplatesOptions");
41
- const dto_1 = require("lakutata/decorator/dto");
42
- const cli_table3_1 = __importDefault(require("cli-table3"));
43
- const ansis_1 = __importDefault(require("ansis"));
44
- const console = __importStar(require("node:console"));
45
- const node_path_1 = __importDefault(require("node:path"));
46
- const di_1 = require("lakutata/decorator/di");
47
- const node_fetch_native_1 = __importDefault(require("node-fetch-native"));
48
- const logger_1 = require("lakutata/com/logger");
49
- const helper_1 = require("lakutata/helper");
50
- const Spinner_1 = require("../components/Spinner");
51
- const promises_1 = require("node:fs/promises");
52
- const GetLocalDataFilename_1 = require("../GetLocalDataFilename");
53
- class TemplateManager extends lakutata_1.Provider {
54
- constructor() {
55
- super(...arguments);
56
- this.localDataFilename = (0, GetLocalDataFilename_1.GetLocalDataFilename)();
57
- }
58
- /**
59
- * Fetch template repository list from remote
60
- * @protected
61
- */
62
- async fetchTemplateRepos() {
63
- this.spinner.start('Fetching');
64
- const url = new URL(this.apiHost);
65
- url.pathname = '/users/lakutata/repos';
66
- const fetchResponse = await (0, node_fetch_native_1.default)(url.toString(), { method: 'get' });
67
- if (fetchResponse.status >= 400) {
68
- this.spinner.stop();
69
- this.log.error('Failed to obtain template repository list: (%s) %s', fetchResponse.status, fetchResponse.statusText);
70
- this.app.exit(1);
71
- }
72
- const rawRepos = (0, helper_1.As)(await fetchResponse.json());
73
- const templateRepos = rawRepos.filter((rawRepo) => {
74
- const repoName = rawRepo.name;
75
- return repoName.startsWith(this.repoPrefix) && repoName !== this.repoPrefix;
76
- });
77
- this.spinner.stop();
78
- return templateRepos.map((templateRepo) => {
79
- const repoName = templateRepo.name;
80
- return {
81
- name: repoName.replace(`${this.repoPrefix}-`, ''),
82
- description: templateRepo.description,
83
- repository: templateRepo.full_name
84
- };
85
- }).sort((a, b) => b.name === 'default' ? 1 : 0);
86
- }
87
- /**
88
- * List templates
89
- * @param options
90
- */
91
- async list(options) {
92
- const { version } = JSON.parse(await (0, promises_1.readFile)(node_path_1.default.resolve('@packageJson'), { encoding: 'utf-8' }));
93
- const isLocalDataExists = await (0, helper_1.IsExists)(this.localDataFilename);
94
- let isLocalDataVersionMatched = false;
95
- let cache = {
96
- templates: [],
97
- version: version,
98
- updatedAt: lakutata_1.Time.now()
99
- };
100
- if (isLocalDataExists) {
101
- cache = JSON.parse(await (0, promises_1.readFile)(this.localDataFilename, { encoding: 'utf-8' }));
102
- isLocalDataVersionMatched = cache.version === version;
103
- }
104
- if (!isLocalDataExists || !isLocalDataVersionMatched || options.refresh) {
105
- const templates = await this.fetchTemplateRepos();
106
- cache = {
107
- templates: templates,
108
- version: version,
109
- updatedAt: lakutata_1.Time.now()
110
- };
111
- await (0, promises_1.writeFile)(this.localDataFilename, JSON.stringify(cache), { flag: 'w' });
112
- }
113
- this.printTemplates(cache.templates, cache.updatedAt);
114
- }
115
- /**
116
- * Print template information to console
117
- * @param templateInfos
118
- * @param updatedAt
119
- * @protected
120
- */
121
- printTemplates(templateInfos, updatedAt) {
122
- const table = new cli_table3_1.default();
123
- table.push([
124
- { content: ansis_1.default.bold.cyan('Name'), hAlign: 'center' },
125
- { content: ansis_1.default.bold.cyan('Description'), hAlign: 'center' },
126
- { content: ansis_1.default.bold.cyan('Repository'), hAlign: 'center' }
127
- ], ...templateInfos.map((templateInfo) => {
128
- return [
129
- templateInfo.name,
130
- templateInfo.description,
131
- templateInfo.repository
132
- ];
133
- }));
134
- console.log(table.toString());
135
- console.log(`Template list last updated on: ${ansis_1.default.bold(new lakutata_1.Time(updatedAt).format('YYYY-MM-DD HH:mm:ss'))}`);
136
- }
137
- }
138
- exports.TemplateManager = TemplateManager;
139
- __decorate([
140
- (0, di_1.Inject)(lakutata_1.Application),
141
- __metadata("design:type", lakutata_1.Application)
142
- ], TemplateManager.prototype, "app", void 0);
143
- __decorate([
144
- (0, di_1.Inject)('log'),
145
- __metadata("design:type", logger_1.Logger)
146
- ], TemplateManager.prototype, "log", void 0);
147
- __decorate([
148
- (0, di_1.Inject)('spinner'),
149
- __metadata("design:type", Spinner_1.Spinner)
150
- ], TemplateManager.prototype, "spinner", void 0);
151
- __decorate([
152
- (0, di_1.Configurable)(lakutata_1.DTO.String().required()),
153
- __metadata("design:type", String)
154
- ], TemplateManager.prototype, "apiHost", void 0);
155
- __decorate([
156
- (0, di_1.Configurable)(lakutata_1.DTO.String().required()),
157
- __metadata("design:type", String)
158
- ], TemplateManager.prototype, "repoPrefix", void 0);
159
- __decorate([
160
- (0, dto_1.Accept)(ListTemplatesOptions_1.ListTemplatesOptions.required()),
161
- __metadata("design:type", Function),
162
- __metadata("design:paramtypes", [ListTemplatesOptions_1.ListTemplatesOptions]),
163
- __metadata("design:returntype", Promise)
164
- ], TemplateManager.prototype, "list", null);
@@ -1,15 +0,0 @@
1
- import { DTO } from 'lakutata';
2
- /**
3
- * Create project options
4
- */
5
- export declare class CreateProjectOptions extends DTO {
6
- name: string;
7
- id: string;
8
- template: string;
9
- path: string;
10
- overwrite: boolean;
11
- description: string;
12
- author: string;
13
- license: string;
14
- }
15
- //# sourceMappingURL=CreateProjectOptions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CreateProjectOptions.d.ts","sourceRoot":"","sources":["../../src/options/CreateProjectOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,UAAU,CAAA;AAQ5B;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,GAAG;IAQlC,IAAI,EAAE,MAAM,CAAA;IASZ,EAAE,EAAE,MAAM,CAAA;IAUV,QAAQ,EAAE,MAAM,CAAA;IAShB,IAAI,EAAE,MAAM,CAAA;IAUZ,SAAS,EAAE,OAAO,CAAA;IASlB,WAAW,EAAE,MAAM,CAAA;IASnB,MAAM,EAAE,MAAM,CAAA;IASd,OAAO,EAAE,MAAM,CAAA;CACzB"}
@@ -1,94 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.CreateProjectOptions = void 0;
16
- const lakutata_1 = require("lakutata");
17
- const dto_1 = require("lakutata/decorator/dto");
18
- const node_process_1 = __importDefault(require("node:process"));
19
- const ListTemplateNames_1 = require("../lib/ListTemplateNames");
20
- const templateNames = (0, ListTemplateNames_1.ListTemplateNames)();
21
- if (!templateNames.length)
22
- templateNames.push('');
23
- /**
24
- * Create project options
25
- */
26
- class CreateProjectOptions extends lakutata_1.DTO {
27
- }
28
- exports.CreateProjectOptions = CreateProjectOptions;
29
- __decorate([
30
- (0, dto_1.Expect)(lakutata_1.DTO
31
- .String()
32
- .required()
33
- .pattern(/^([a-zA-Z0-9_-]+\.?)*[a-zA-Z0-9_-]+$/)
34
- .description('Specify the name of the application')),
35
- __metadata("design:type", String)
36
- ], CreateProjectOptions.prototype, "name", void 0);
37
- __decorate([
38
- (0, dto_1.Expect)(lakutata_1.DTO
39
- .String()
40
- .required()
41
- .pattern(/^(@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/) //Match package json name regex
42
- .description('Specify the ID of the application')),
43
- __metadata("design:type", String)
44
- ], CreateProjectOptions.prototype, "id", void 0);
45
- __decorate([
46
- (0, dto_1.Expect)(lakutata_1.DTO
47
- .String()
48
- .required()
49
- .allow(...templateNames)
50
- .only()
51
- .description('Choose a template for this project')),
52
- __metadata("design:type", String)
53
- ], CreateProjectOptions.prototype, "template", void 0);
54
- __decorate([
55
- (0, dto_1.Expect)(lakutata_1.DTO
56
- .String()
57
- .optional()
58
- .default(node_process_1.default.cwd())
59
- .description('Specify the path for creating the project')),
60
- __metadata("design:type", String)
61
- ], CreateProjectOptions.prototype, "path", void 0);
62
- __decorate([
63
- (0, dto_1.Expect)(lakutata_1.DTO
64
- .Boolean()
65
- .strict(false)
66
- .optional()
67
- .default(false)
68
- .description('Initialize the project within an existing folder')),
69
- __metadata("design:type", Boolean)
70
- ], CreateProjectOptions.prototype, "overwrite", void 0);
71
- __decorate([
72
- (0, dto_1.Expect)(lakutata_1.DTO
73
- .String()
74
- .optional()
75
- .default('none')
76
- .description('Specify the description of the application')),
77
- __metadata("design:type", String)
78
- ], CreateProjectOptions.prototype, "description", void 0);
79
- __decorate([
80
- (0, dto_1.Expect)(lakutata_1.DTO
81
- .String()
82
- .optional()
83
- .default('Anonymous')
84
- .description('Specify the name of the author of the application')),
85
- __metadata("design:type", String)
86
- ], CreateProjectOptions.prototype, "author", void 0);
87
- __decorate([
88
- (0, dto_1.Expect)(lakutata_1.DTO
89
- .String()
90
- .optional()
91
- .default('UNLICENSED')
92
- .description('Specify the name of the license for the application')),
93
- __metadata("design:type", String)
94
- ], CreateProjectOptions.prototype, "license", void 0);
@@ -1,5 +0,0 @@
1
- import { DTO } from 'lakutata';
2
- export declare class ListTemplatesOptions extends DTO {
3
- refresh: boolean;
4
- }
5
- //# sourceMappingURL=ListTemplatesOptions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ListTemplatesOptions.d.ts","sourceRoot":"","sources":["../../src/options/ListTemplatesOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,UAAU,CAAA;AAG5B,qBAAa,oBAAqB,SAAQ,GAAG;IAUlC,OAAO,EAAE,OAAO,CAAA;CAC1B"}
package/tsconfig.json DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "extends": "../../tsconfig.json",
3
- "compilerOptions": {
4
- "rootDir": "src",
5
- "outDir": "dist"
6
- }
7
- }