devkit-tool 1.0.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.
- package/README.md +90 -0
- package/dist/commands/buat.d.ts +2 -0
- package/dist/commands/buat.d.ts.map +1 -0
- package/dist/commands/buat.js +229 -0
- package/dist/commands/buat.js.map +1 -0
- package/dist/commands/install.d.ts +2 -0
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/commands/install.js +161 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/referensi.d.ts +2 -0
- package/dist/commands/referensi.d.ts.map +1 -0
- package/dist/commands/referensi.js +26 -0
- package/dist/commands/referensi.js.map +1 -0
- package/dist/core/detector.d.ts +7 -0
- package/dist/core/detector.d.ts.map +1 -0
- package/dist/core/detector.js +63 -0
- package/dist/core/detector.js.map +1 -0
- package/dist/core/environment.d.ts +8 -0
- package/dist/core/environment.d.ts.map +1 -0
- package/dist/core/environment.js +161 -0
- package/dist/core/environment.js.map +1 -0
- package/dist/core/executor.d.ts +12 -0
- package/dist/core/executor.d.ts.map +1 -0
- package/dist/core/executor.js +37 -0
- package/dist/core/executor.js.map +1 -0
- package/dist/core/knowledge.d.ts +10 -0
- package/dist/core/knowledge.d.ts.map +1 -0
- package/dist/core/knowledge.js +114 -0
- package/dist/core/knowledge.js.map +1 -0
- package/dist/core/registry.d.ts +4 -0
- package/dist/core/registry.d.ts.map +1 -0
- package/dist/core/registry.js +37 -0
- package/dist/core/registry.js.map +1 -0
- package/dist/core/warna.d.ts +14 -0
- package/dist/core/warna.d.ts.map +1 -0
- package/dist/core/warna.js +35 -0
- package/dist/core/warna.js.map +1 -0
- package/dist/core/welcome.d.ts +2 -0
- package/dist/core/welcome.d.ts.map +1 -0
- package/dist/core/welcome.js +42 -0
- package/dist/core/welcome.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +59 -0
- package/dist/index.js.map +1 -0
- package/dist/technologies/bootstrap.d.ts +3 -0
- package/dist/technologies/bootstrap.d.ts.map +1 -0
- package/dist/technologies/bootstrap.js +9 -0
- package/dist/technologies/bootstrap.js.map +1 -0
- package/dist/technologies/bun.d.ts +3 -0
- package/dist/technologies/bun.d.ts.map +1 -0
- package/dist/technologies/bun.js +9 -0
- package/dist/technologies/bun.js.map +1 -0
- package/dist/technologies/composer.d.ts +3 -0
- package/dist/technologies/composer.d.ts.map +1 -0
- package/dist/technologies/composer.js +22 -0
- package/dist/technologies/composer.js.map +1 -0
- package/dist/technologies/cypress.d.ts +3 -0
- package/dist/technologies/cypress.d.ts.map +1 -0
- package/dist/technologies/cypress.js +9 -0
- package/dist/technologies/cypress.js.map +1 -0
- package/dist/technologies/docker.d.ts +3 -0
- package/dist/technologies/docker.d.ts.map +1 -0
- package/dist/technologies/docker.js +24 -0
- package/dist/technologies/docker.js.map +1 -0
- package/dist/technologies/express.d.ts +3 -0
- package/dist/technologies/express.d.ts.map +1 -0
- package/dist/technologies/express.js +9 -0
- package/dist/technologies/express.js.map +1 -0
- package/dist/technologies/firebase.d.ts +3 -0
- package/dist/technologies/firebase.d.ts.map +1 -0
- package/dist/technologies/firebase.js +9 -0
- package/dist/technologies/firebase.js.map +1 -0
- package/dist/technologies/flutter.d.ts +3 -0
- package/dist/technologies/flutter.d.ts.map +1 -0
- package/dist/technologies/flutter.js +9 -0
- package/dist/technologies/flutter.js.map +1 -0
- package/dist/technologies/go.d.ts +3 -0
- package/dist/technologies/go.d.ts.map +1 -0
- package/dist/technologies/go.js +24 -0
- package/dist/technologies/go.js.map +1 -0
- package/dist/technologies/jest.d.ts +3 -0
- package/dist/technologies/jest.d.ts.map +1 -0
- package/dist/technologies/jest.js +9 -0
- package/dist/technologies/jest.js.map +1 -0
- package/dist/technologies/laravel.d.ts +3 -0
- package/dist/technologies/laravel.d.ts.map +1 -0
- package/dist/technologies/laravel.js +9 -0
- package/dist/technologies/laravel.js.map +1 -0
- package/dist/technologies/nestjs.d.ts +3 -0
- package/dist/technologies/nestjs.d.ts.map +1 -0
- package/dist/technologies/nestjs.js +9 -0
- package/dist/technologies/nestjs.js.map +1 -0
- package/dist/technologies/netlify.d.ts +3 -0
- package/dist/technologies/netlify.d.ts.map +1 -0
- package/dist/technologies/netlify.js +9 -0
- package/dist/technologies/netlify.js.map +1 -0
- package/dist/technologies/nextjs.d.ts +3 -0
- package/dist/technologies/nextjs.d.ts.map +1 -0
- package/dist/technologies/nextjs.js +9 -0
- package/dist/technologies/nextjs.js.map +1 -0
- package/dist/technologies/node.d.ts +3 -0
- package/dist/technologies/node.d.ts.map +1 -0
- package/dist/technologies/node.js +9 -0
- package/dist/technologies/node.js.map +1 -0
- package/dist/technologies/php.d.ts +3 -0
- package/dist/technologies/php.d.ts.map +1 -0
- package/dist/technologies/php.js +24 -0
- package/dist/technologies/php.js.map +1 -0
- package/dist/technologies/pnpm.d.ts +3 -0
- package/dist/technologies/pnpm.d.ts.map +1 -0
- package/dist/technologies/pnpm.js +9 -0
- package/dist/technologies/pnpm.js.map +1 -0
- package/dist/technologies/python.d.ts +3 -0
- package/dist/technologies/python.d.ts.map +1 -0
- package/dist/technologies/python.js +24 -0
- package/dist/technologies/python.js.map +1 -0
- package/dist/technologies/react.d.ts +3 -0
- package/dist/technologies/react.d.ts.map +1 -0
- package/dist/technologies/react.js +9 -0
- package/dist/technologies/react.js.map +1 -0
- package/dist/technologies/sass.d.ts +3 -0
- package/dist/technologies/sass.d.ts.map +1 -0
- package/dist/technologies/sass.js +9 -0
- package/dist/technologies/sass.js.map +1 -0
- package/dist/technologies/supabase.d.ts +3 -0
- package/dist/technologies/supabase.d.ts.map +1 -0
- package/dist/technologies/supabase.js +9 -0
- package/dist/technologies/supabase.js.map +1 -0
- package/dist/technologies/tailwind.d.ts +3 -0
- package/dist/technologies/tailwind.d.ts.map +1 -0
- package/dist/technologies/tailwind.js +9 -0
- package/dist/technologies/tailwind.js.map +1 -0
- package/dist/technologies/vercel.d.ts +3 -0
- package/dist/technologies/vercel.d.ts.map +1 -0
- package/dist/technologies/vercel.js +9 -0
- package/dist/technologies/vercel.js.map +1 -0
- package/dist/technologies/vite.d.ts +3 -0
- package/dist/technologies/vite.d.ts.map +1 -0
- package/dist/technologies/vite.js +9 -0
- package/dist/technologies/vite.js.map +1 -0
- package/dist/technologies/yarn.d.ts +3 -0
- package/dist/technologies/yarn.d.ts.map +1 -0
- package/dist/technologies/yarn.js +9 -0
- package/dist/technologies/yarn.js.map +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +44 -0
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { execa } from "execa";
|
|
2
|
+
import { existsSync } from "node:fs";
|
|
3
|
+
const drives = ["C:", "D:", "E:", "F:"];
|
|
4
|
+
const pathLaragon = ["laragon\\www", "laragon64\\www"];
|
|
5
|
+
const pathXampp = ["xampp\\htdocs", "xampp8\\htdocs", "xampp81\\htdocs"];
|
|
6
|
+
const pathWamp = ["wamp\\www", "wamp64\\www"];
|
|
7
|
+
async function cekRegistryLaragon() {
|
|
8
|
+
try {
|
|
9
|
+
const result = await execa("reg", [
|
|
10
|
+
"query",
|
|
11
|
+
"HKLM\\SOFTWARE\\Laragon",
|
|
12
|
+
"/v",
|
|
13
|
+
"Path",
|
|
14
|
+
]);
|
|
15
|
+
const match = result.stdout.match(/REG_SZ\s+(.+)/);
|
|
16
|
+
if (match?.[1]) {
|
|
17
|
+
const basePath = match[1].trim();
|
|
18
|
+
return `${basePath}\\www`;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
// Registry key tidak ada
|
|
23
|
+
}
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
async function cekRegistryXampp() {
|
|
27
|
+
try {
|
|
28
|
+
const result = await execa("reg", [
|
|
29
|
+
"query",
|
|
30
|
+
"HKLM\\SOFTWARE\\Apache Group\\XAMPP",
|
|
31
|
+
"/v",
|
|
32
|
+
"Install_Dir",
|
|
33
|
+
]);
|
|
34
|
+
const match = result.stdout.match(/REG_SZ\s+(.+)/);
|
|
35
|
+
if (match?.[1]) {
|
|
36
|
+
const basePath = match[1].trim();
|
|
37
|
+
return `${basePath}\\htdocs`;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
// Registry key tidak ada
|
|
42
|
+
}
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
async function cekProsesBerjalan() {
|
|
46
|
+
const hasil = [];
|
|
47
|
+
try {
|
|
48
|
+
const result = await execa("tasklist", ["/FO", "CSV", "/NH"]);
|
|
49
|
+
const proses = result.stdout.toLowerCase();
|
|
50
|
+
if (proses.includes("laragon.exe")) {
|
|
51
|
+
hasil.push({
|
|
52
|
+
nama: "Laragon",
|
|
53
|
+
path: "C:\\laragon\\www",
|
|
54
|
+
terdeteksi: true,
|
|
55
|
+
sumber: "Proses berjalan",
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
if (proses.includes("xampp-control.exe")) {
|
|
59
|
+
hasil.push({
|
|
60
|
+
nama: "XAMPP",
|
|
61
|
+
path: "C:\\xampp\\htdocs",
|
|
62
|
+
terdeteksi: true,
|
|
63
|
+
sumber: "Proses berjalan",
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
if (proses.includes("wampmanager.exe")) {
|
|
67
|
+
hasil.push({
|
|
68
|
+
nama: "WAMP",
|
|
69
|
+
path: "C:\\wamp\\www",
|
|
70
|
+
terdeteksi: true,
|
|
71
|
+
sumber: "Proses berjalan",
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
// tasklist tidak tersedia
|
|
77
|
+
}
|
|
78
|
+
return hasil;
|
|
79
|
+
}
|
|
80
|
+
function cekPathManual() {
|
|
81
|
+
const hasil = [];
|
|
82
|
+
for (const drive of drives) {
|
|
83
|
+
for (const p of pathLaragon) {
|
|
84
|
+
const fullPath = `${drive}\\${p}`;
|
|
85
|
+
if (existsSync(fullPath)) {
|
|
86
|
+
hasil.push({
|
|
87
|
+
nama: "Laragon",
|
|
88
|
+
path: fullPath,
|
|
89
|
+
terdeteksi: true,
|
|
90
|
+
sumber: "Path terdeteksi",
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
for (const p of pathXampp) {
|
|
95
|
+
const fullPath = `${drive}\\${p}`;
|
|
96
|
+
if (existsSync(fullPath)) {
|
|
97
|
+
hasil.push({
|
|
98
|
+
nama: "XAMPP",
|
|
99
|
+
path: fullPath,
|
|
100
|
+
terdeteksi: true,
|
|
101
|
+
sumber: "Path terdeteksi",
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
for (const p of pathWamp) {
|
|
106
|
+
const fullPath = `${drive}\\${p}`;
|
|
107
|
+
if (existsSync(fullPath)) {
|
|
108
|
+
hasil.push({
|
|
109
|
+
nama: "WAMP",
|
|
110
|
+
path: fullPath,
|
|
111
|
+
terdeteksi: true,
|
|
112
|
+
sumber: "Path terdeteksi",
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return hasil;
|
|
118
|
+
}
|
|
119
|
+
export async function deteksiEnvironmentLokal() {
|
|
120
|
+
const hasil = [];
|
|
121
|
+
const seen = new Set();
|
|
122
|
+
// 1. Cek registry
|
|
123
|
+
const regLaragon = await cekRegistryLaragon();
|
|
124
|
+
if (regLaragon && existsSync(regLaragon)) {
|
|
125
|
+
hasil.push({
|
|
126
|
+
nama: "Laragon",
|
|
127
|
+
path: regLaragon,
|
|
128
|
+
terdeteksi: true,
|
|
129
|
+
sumber: "Registry",
|
|
130
|
+
});
|
|
131
|
+
seen.add(regLaragon.toLowerCase());
|
|
132
|
+
}
|
|
133
|
+
const regXampp = await cekRegistryXampp();
|
|
134
|
+
if (regXampp && existsSync(regXampp)) {
|
|
135
|
+
hasil.push({
|
|
136
|
+
nama: "XAMPP",
|
|
137
|
+
path: regXampp,
|
|
138
|
+
terdeteksi: true,
|
|
139
|
+
sumber: "Registry",
|
|
140
|
+
});
|
|
141
|
+
seen.add(regXampp.toLowerCase());
|
|
142
|
+
}
|
|
143
|
+
// 2. Cek proses berjalan
|
|
144
|
+
const prosesHasil = await cekProsesBerjalan();
|
|
145
|
+
for (const p of prosesHasil) {
|
|
146
|
+
if (!seen.has(p.path.toLowerCase())) {
|
|
147
|
+
hasil.push(p);
|
|
148
|
+
seen.add(p.path.toLowerCase());
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
// 3. Cek path manual di semua drive
|
|
152
|
+
const manualHasil = cekPathManual();
|
|
153
|
+
for (const m of manualHasil) {
|
|
154
|
+
if (!seen.has(m.path.toLowerCase())) {
|
|
155
|
+
hasil.push(m);
|
|
156
|
+
seen.add(m.path.toLowerCase());
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return hasil;
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=environment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/core/environment.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface ExecutionResult {
|
|
2
|
+
success: boolean;
|
|
3
|
+
stdout: string;
|
|
4
|
+
stderr: string;
|
|
5
|
+
}
|
|
6
|
+
export interface ExecutionOptions {
|
|
7
|
+
cwd?: string;
|
|
8
|
+
dryRun?: boolean;
|
|
9
|
+
shell?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare function execute(command: string, args: string[], options?: ExecutionOptions): Promise<ExecutionResult>;
|
|
12
|
+
//# sourceMappingURL=executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/core/executor.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,OAAO,CAC3B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC,CAmC1B"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { execa } from "execa";
|
|
2
|
+
export async function execute(command, args, options = {}) {
|
|
3
|
+
const { cwd, dryRun, shell } = options;
|
|
4
|
+
if (dryRun) {
|
|
5
|
+
return {
|
|
6
|
+
success: true,
|
|
7
|
+
stdout: `[DRY RUN] ${command} ${args.join(" ")}`,
|
|
8
|
+
stderr: "",
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
try {
|
|
12
|
+
const result = shell
|
|
13
|
+
? await execa(`${command} ${args.join(" ")}`, cwd ? { shell: true, cwd } : { shell: true })
|
|
14
|
+
: await execa(command, args, cwd ? { cwd } : undefined);
|
|
15
|
+
return {
|
|
16
|
+
success: true,
|
|
17
|
+
stdout: result.stdout,
|
|
18
|
+
stderr: result.stderr,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
if (error instanceof Error) {
|
|
23
|
+
const execaError = error;
|
|
24
|
+
return {
|
|
25
|
+
success: false,
|
|
26
|
+
stdout: execaError.stdout ?? "",
|
|
27
|
+
stderr: execaError.stderr ?? error.message,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
success: false,
|
|
32
|
+
stdout: "",
|
|
33
|
+
stderr: "Terjadi kesalahan yang tidak diketahui",
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/core/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAc9B,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,OAAe,EACf,IAAc,EACd,OAAO,GAAqB,EAAE;IAE9B,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAEvC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,aAAa,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAChD,MAAM,EAAE,EAAE;SACX,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,KAAK;YAClB,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YAC3F,CAAC,CAAC,MAAM,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC1D,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,MAAM,UAAU,GAAG,KAAqD,CAAC;YACzE,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,UAAU,CAAC,MAAM,IAAI,EAAE;gBAC/B,MAAM,EAAE,UAAU,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO;aAC3C,CAAC;QACJ,CAAC;QACD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,wCAAwC;SACjD,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface EntriPerintah {
|
|
2
|
+
teknologi: string;
|
|
3
|
+
kategori: string;
|
|
4
|
+
perintah: string;
|
|
5
|
+
deskripsi: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function dapatkanSemuaPerintah(): EntriPerintah[];
|
|
8
|
+
export declare function dapatkanTeknologiUnik(): string[];
|
|
9
|
+
export declare function cariPerintah(teknologi: string): EntriPerintah[];
|
|
10
|
+
//# sourceMappingURL=knowledge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knowledge.d.ts","sourceRoot":"","sources":["../../src/core/knowledge.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AA2GD,wBAAgB,qBAAqB,IAAI,aAAa,EAAE,CAEvD;AAED,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAEhD;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,EAAE,CAI/D"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
const daftarPerintah = [
|
|
2
|
+
{
|
|
3
|
+
teknologi: "Laravel",
|
|
4
|
+
kategori: "Buat Proyek",
|
|
5
|
+
perintah: "composer create-project laravel/laravel my-app",
|
|
6
|
+
deskripsi: "Membuat project Laravel baru",
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
teknologi: "Laravel",
|
|
10
|
+
kategori: "Buat Proyek",
|
|
11
|
+
perintah: "laravel new my-app",
|
|
12
|
+
deskripsi: "Membuat project Laravel baru (via Laravel Installer)",
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
teknologi: "Laravel",
|
|
16
|
+
kategori: "Jalankan",
|
|
17
|
+
perintah: "php artisan serve",
|
|
18
|
+
deskripsi: "Menjalankan server development Laravel",
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
teknologi: "Laravel",
|
|
22
|
+
kategori: "Jalankan",
|
|
23
|
+
perintah: "php artisan migrate",
|
|
24
|
+
deskripsi: "Menjalankan database migration",
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
teknologi: "Laravel",
|
|
28
|
+
kategori: "Build",
|
|
29
|
+
perintah: "npm run dev",
|
|
30
|
+
deskripsi: "Build assets frontend (Vite)",
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
teknologi: "Laravel",
|
|
34
|
+
kategori: "Build",
|
|
35
|
+
perintah: "npm run build",
|
|
36
|
+
deskripsi: "Build assets frontend untuk production",
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
teknologi: "Vite",
|
|
40
|
+
kategori: "Buat Proyek",
|
|
41
|
+
perintah: "npm create vite@latest my-app -- --template vanilla",
|
|
42
|
+
deskripsi: "Membuat project Vite dengan template vanilla",
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
teknologi: "Vite",
|
|
46
|
+
kategori: "Buat Proyek",
|
|
47
|
+
perintah: "npm create vite@latest my-app -- --template react",
|
|
48
|
+
deskripsi: "Membuat project Vite dengan template React",
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
teknologi: "Vite",
|
|
52
|
+
kategori: "Jalankan",
|
|
53
|
+
perintah: "npm run dev",
|
|
54
|
+
deskripsi: "Menjalankan server development Vite",
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
teknologi: "Vite",
|
|
58
|
+
kategori: "Build",
|
|
59
|
+
perintah: "npm run build",
|
|
60
|
+
deskripsi: "Build project Vite untuk production",
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
teknologi: "React",
|
|
64
|
+
kategori: "Install",
|
|
65
|
+
perintah: "npm install react react-dom",
|
|
66
|
+
deskripsi: "Install React dan React DOM",
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
teknologi: "React",
|
|
70
|
+
kategori: "Jalankan",
|
|
71
|
+
perintah: "npm run dev",
|
|
72
|
+
deskripsi: "Menjalankan server development",
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
teknologi: "Tailwind CSS",
|
|
76
|
+
kategori: "Install",
|
|
77
|
+
perintah: "npm install -D tailwindcss @tailwindcss/vite",
|
|
78
|
+
deskripsi: "Install Tailwind CSS v4 dengan Vite plugin",
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
teknologi: "Tailwind CSS",
|
|
82
|
+
kategori: "Konfigurasi",
|
|
83
|
+
perintah: "npx tailwindcss init",
|
|
84
|
+
deskripsi: "Membuat file konfigurasi Tailwind",
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
teknologi: "Node.js",
|
|
88
|
+
kategori: "Buat Proyek",
|
|
89
|
+
perintah: "npm init -y",
|
|
90
|
+
deskripsi: "Membuat project Node.js baru",
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
teknologi: "Node.js",
|
|
94
|
+
kategori: "Install",
|
|
95
|
+
perintah: "npm install",
|
|
96
|
+
deskripsi: "Install semua dependencies",
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
teknologi: "Node.js",
|
|
100
|
+
kategori: "Jalankan",
|
|
101
|
+
perintah: "node index.js",
|
|
102
|
+
deskripsi: "Menjalankan file JavaScript",
|
|
103
|
+
},
|
|
104
|
+
];
|
|
105
|
+
export function dapatkanSemuaPerintah() {
|
|
106
|
+
return daftarPerintah;
|
|
107
|
+
}
|
|
108
|
+
export function dapatkanTeknologiUnik() {
|
|
109
|
+
return [...new Set(daftarPerintah.map((p) => p.teknologi))];
|
|
110
|
+
}
|
|
111
|
+
export function cariPerintah(teknologi) {
|
|
112
|
+
return daftarPerintah.filter((p) => p.teknologi.toLowerCase() === teknologi.toLowerCase());
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=knowledge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knowledge.js","sourceRoot":"","sources":["../../src/core/knowledge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/core/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAiC3D,wBAAgB,sBAAsB,IAAI,iBAAiB,EAAE,CAE5D;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAE7E"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { node } from "../technologies/node.js";
|
|
2
|
+
import { vite } from "../technologies/vite.js";
|
|
3
|
+
import { laravel } from "../technologies/laravel.js";
|
|
4
|
+
import { react } from "../technologies/react.js";
|
|
5
|
+
import { tailwind } from "../technologies/tailwind.js";
|
|
6
|
+
import { flutter } from "../technologies/flutter.js";
|
|
7
|
+
import { composer } from "../technologies/composer.js";
|
|
8
|
+
import { php } from "../technologies/php.js";
|
|
9
|
+
import { docker } from "../technologies/docker.js";
|
|
10
|
+
import { python } from "../technologies/python.js";
|
|
11
|
+
import { go } from "../technologies/go.js";
|
|
12
|
+
import { nextjs } from "../technologies/nextjs.js";
|
|
13
|
+
import { express } from "../technologies/express.js";
|
|
14
|
+
import { bootstrap } from "../technologies/bootstrap.js";
|
|
15
|
+
const daftarTeknologi = [
|
|
16
|
+
node,
|
|
17
|
+
vite,
|
|
18
|
+
laravel,
|
|
19
|
+
react,
|
|
20
|
+
tailwind,
|
|
21
|
+
flutter,
|
|
22
|
+
composer,
|
|
23
|
+
php,
|
|
24
|
+
docker,
|
|
25
|
+
python,
|
|
26
|
+
go,
|
|
27
|
+
nextjs,
|
|
28
|
+
express,
|
|
29
|
+
bootstrap,
|
|
30
|
+
];
|
|
31
|
+
export function dapatkanSemuaTeknologi() {
|
|
32
|
+
return daftarTeknologi;
|
|
33
|
+
}
|
|
34
|
+
export function dapatkanTeknologi(nama) {
|
|
35
|
+
return daftarTeknologi.find((t) => t.nama.toLowerCase() === nama.toLowerCase());
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/core/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAEzD,MAAM,eAAe,GAAwB;IAC3C,IAAI;IACJ,IAAI;IACJ,OAAO;IACP,KAAK;IACL,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,GAAG;IACH,MAAM;IACN,MAAM;IACN,EAAE;IACF,MAAM;IACN,OAAO;IACP,SAAS;CACV,CAAC;AAEF,MAAM,UAAU,sBAAsB;IACpC,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AAClF,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare const reset = "\u001B[0m";
|
|
2
|
+
export declare const bold = "\u001B[1m";
|
|
3
|
+
export declare const dim = "\u001B[2m";
|
|
4
|
+
export declare const red = "\u001B[31m";
|
|
5
|
+
export declare const green = "\u001B[32m";
|
|
6
|
+
export declare const yellow = "\u001B[33m";
|
|
7
|
+
export declare const blue = "\u001B[34m";
|
|
8
|
+
export declare const magenta = "\u001B[35m";
|
|
9
|
+
export declare const cyan = "\u001B[36m";
|
|
10
|
+
export declare const white = "\u001B[37m";
|
|
11
|
+
export declare const warnaTeknologi: Record<string, string>;
|
|
12
|
+
export declare function warnaUntukTeknologi(nama: string): string;
|
|
13
|
+
export declare function teksBerwarna(teks: string, warna: string): string;
|
|
14
|
+
//# sourceMappingURL=warna.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"warna.d.ts","sourceRoot":"","sources":["../../src/core/warna.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK,cAAY,CAAC;AAC/B,eAAO,MAAM,IAAI,cAAY,CAAC;AAC9B,eAAO,MAAM,GAAG,cAAY,CAAC;AAC7B,eAAO,MAAM,GAAG,eAAa,CAAC;AAC9B,eAAO,MAAM,KAAK,eAAa,CAAC;AAChC,eAAO,MAAM,MAAM,eAAa,CAAC;AACjC,eAAO,MAAM,IAAI,eAAa,CAAC;AAC/B,eAAO,MAAM,OAAO,eAAa,CAAC;AAClC,eAAO,MAAM,IAAI,eAAa,CAAC;AAC/B,eAAO,MAAM,KAAK,eAAa,CAAC;AAEhC,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAiBjD,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhE"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export const reset = "\x1b[0m";
|
|
2
|
+
export const bold = "\x1b[1m";
|
|
3
|
+
export const dim = "\x1b[2m";
|
|
4
|
+
export const red = "\x1b[31m";
|
|
5
|
+
export const green = "\x1b[32m";
|
|
6
|
+
export const yellow = "\x1b[33m";
|
|
7
|
+
export const blue = "\x1b[34m";
|
|
8
|
+
export const magenta = "\x1b[35m";
|
|
9
|
+
export const cyan = "\x1b[36m";
|
|
10
|
+
export const white = "\x1b[37m";
|
|
11
|
+
export const warnaTeknologi = {
|
|
12
|
+
"node.js": green,
|
|
13
|
+
"vite": magenta,
|
|
14
|
+
"laravel": red,
|
|
15
|
+
"react": cyan,
|
|
16
|
+
"tailwind css": cyan,
|
|
17
|
+
"flutter": blue,
|
|
18
|
+
"composer": yellow,
|
|
19
|
+
"php": magenta,
|
|
20
|
+
"docker": blue,
|
|
21
|
+
"python": yellow,
|
|
22
|
+
"go": cyan,
|
|
23
|
+
"git": red,
|
|
24
|
+
"npm": red,
|
|
25
|
+
"next.js": white,
|
|
26
|
+
"bootstrap": magenta,
|
|
27
|
+
"express.js": yellow,
|
|
28
|
+
};
|
|
29
|
+
export function warnaUntukTeknologi(nama) {
|
|
30
|
+
return warnaTeknologi[nama.toLowerCase()] ?? white;
|
|
31
|
+
}
|
|
32
|
+
export function teksBerwarna(teks, warna) {
|
|
33
|
+
return `${warna}${teks}${reset}`;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=warna.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"warna.js","sourceRoot":"","sources":["../../src/core/warna.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,KAAK,GAAG,SAAS,CAAC;AAC/B,MAAM,CAAC,MAAM,IAAI,GAAG,SAAS,CAAC;AAC9B,MAAM,CAAC,MAAM,GAAG,GAAG,SAAS,CAAC;AAC7B,MAAM,CAAC,MAAM,GAAG,GAAG,UAAU,CAAC;AAC9B,MAAM,CAAC,MAAM,KAAK,GAAG,UAAU,CAAC;AAChC,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC;AACjC,MAAM,CAAC,MAAM,IAAI,GAAG,UAAU,CAAC;AAC/B,MAAM,CAAC,MAAM,OAAO,GAAG,UAAU,CAAC;AAClC,MAAM,CAAC,MAAM,IAAI,GAAG,UAAU,CAAC;AAC/B,MAAM,CAAC,MAAM,KAAK,GAAG,UAAU,CAAC;AAEhC,MAAM,CAAC,MAAM,cAAc,GAA2B;IACpD,SAAS,EAAE,KAAK;IAChB,MAAM,EAAE,OAAO;IACf,SAAS,EAAE,GAAG;IACd,OAAO,EAAE,IAAI;IACb,cAAc,EAAE,IAAI;IACpB,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,MAAM;IAClB,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,MAAM;IAChB,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,SAAS,EAAE,KAAK;IAChB,WAAW,EAAE,OAAO;IACpB,YAAY,EAAE,MAAM;CACrB,CAAC;AAEF,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,KAAK,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,KAAa;IACtD,OAAO,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,EAAE,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"welcome.d.ts","sourceRoot":"","sources":["../../src/core/welcome.ts"],"names":[],"mappings":"AAcA,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAwCtD"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import * as p from "@clack/prompts";
|
|
2
|
+
import { reset, bold, dim, yellow, cyan, white, warnaUntukTeknologi, teksBerwarna } from "./warna.js";
|
|
3
|
+
function center(text, width) {
|
|
4
|
+
const lines = text.split("\n");
|
|
5
|
+
return lines
|
|
6
|
+
.map((line) => {
|
|
7
|
+
const visibleLength = line.replace(/\x1b\[[0-9;]*m/g, "").length;
|
|
8
|
+
const padding = Math.max(0, Math.floor((width - visibleLength) / 2));
|
|
9
|
+
return " ".repeat(padding) + line;
|
|
10
|
+
})
|
|
11
|
+
.join("\n");
|
|
12
|
+
}
|
|
13
|
+
export async function tampilkanWelcome() {
|
|
14
|
+
process.stdout.write("\x1Bc");
|
|
15
|
+
const termWidth = process.stdout.columns || 80;
|
|
16
|
+
const logo = [
|
|
17
|
+
`${bold}${cyan} ██████╗ ███████╗██╗ ██╗██╗ ██╗██╗████████╗${reset}`,
|
|
18
|
+
`${bold}${cyan} ██╔══██╗██╔════╝██║ ██║██║ ██╔╝██║╚══██╔══╝${reset}`,
|
|
19
|
+
`${bold}${cyan} ██║ ██║█████╗ ██║ ██║█████╔╝ ██║ ██║ ${reset}`,
|
|
20
|
+
`${bold}${cyan} ██║ ██║██╔══╝ ╚██╗ ██╔╝██╔═██╗ ██║ ██║ ${reset}`,
|
|
21
|
+
`${bold}${cyan} ██████╔╝███████╗ ╚████╔╝ ██║ ██╗██║ ██║ ${reset}`,
|
|
22
|
+
`${bold}${cyan} ╚═════╝ ╚══════╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ${reset}`,
|
|
23
|
+
].join("\n");
|
|
24
|
+
console.log(center(logo, termWidth));
|
|
25
|
+
console.log();
|
|
26
|
+
const title = `${bold}${white} DEVKIT${reset} ${dim}— Developer Project Wizard${reset}`;
|
|
27
|
+
console.log(center(title, termWidth));
|
|
28
|
+
console.log();
|
|
29
|
+
const info = [
|
|
30
|
+
`${bold}${cyan} Versi:${reset} 1.0.0`,
|
|
31
|
+
`${bold}${cyan} Node:${reset} ${process.version}`,
|
|
32
|
+
`${bold}${cyan} Platform:${reset} ${process.platform}`,
|
|
33
|
+
];
|
|
34
|
+
console.log(center(info.join(" "), termWidth));
|
|
35
|
+
console.log();
|
|
36
|
+
const pembuat = `${bold}${yellow} Dibuat oleh:${reset} ${cyan}@Adiwijaya11${reset}`;
|
|
37
|
+
console.log(center(pembuat, termWidth));
|
|
38
|
+
console.log();
|
|
39
|
+
await p.note(`${bold}Selamat datang di DevKit!${reset}\n\nDevKit akan membantu kamu membuat project, menginstall teknologi, dan mengecek environment tanpa perlu menghafal command.`, "Welcome");
|
|
40
|
+
console.log();
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=welcome.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"welcome.js","sourceRoot":"","sources":["../../src/core/welcome.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEtG,SAAS,MAAM,CAAC,IAAY,EAAE,KAAa;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC;QACjE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACrE,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACpC,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAE9B,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IAE/C,MAAM,IAAI,GAAG;QACX,GAAG,IAAI,GAAG,IAAI,kDAAkD,KAAK,EAAE;QACvE,GAAG,IAAI,GAAG,IAAI,kDAAkD,KAAK,EAAE;QACvE,GAAG,IAAI,GAAG,IAAI,kDAAkD,KAAK,EAAE;QACvE,GAAG,IAAI,GAAG,IAAI,kDAAkD,KAAK,EAAE;QACvE,GAAG,IAAI,GAAG,IAAI,kDAAkD,KAAK,EAAE;QACvE,GAAG,IAAI,GAAG,IAAI,kDAAkD,KAAK,EAAE;KACxE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,MAAM,KAAK,GAAG,GAAG,IAAI,GAAG,KAAK,WAAW,KAAK,IAAI,GAAG,6BAA6B,KAAK,EAAE,CAAC;IACzF,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,MAAM,IAAI,GAAG;QACX,GAAG,IAAI,GAAG,IAAI,WAAW,KAAK,QAAQ;QACtC,GAAG,IAAI,GAAG,IAAI,UAAU,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE;QAClD,GAAG,IAAI,GAAG,IAAI,cAAc,KAAK,IAAI,OAAO,CAAC,QAAQ,EAAE;KACxD,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,MAAM,OAAO,GAAG,GAAG,IAAI,GAAG,MAAM,iBAAiB,KAAK,IAAI,IAAI,eAAe,KAAK,EAAE,CAAC;IACrF,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,MAAM,CAAC,CAAC,IAAI,CACV,GAAG,IAAI,4BAA4B,KAAK,+HAA+H,EACvK,SAAS,CACV,CAAC;IAEF,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import * as p from "@clack/prompts";
|
|
3
|
+
import { deteksiSemua } from "./core/detector.js";
|
|
4
|
+
import { jalankanBuatProyek } from "./commands/buat.js";
|
|
5
|
+
import { jalankanInstallTeknologi } from "./commands/install.js";
|
|
6
|
+
import { jalankanReferensiPerintah } from "./commands/referensi.js";
|
|
7
|
+
import { tampilkanWelcome } from "./core/welcome.js";
|
|
8
|
+
import { reset, bold, cyan, green, yellow, magenta, blue, warnaUntukTeknologi, teksBerwarna } from "./core/warna.js";
|
|
9
|
+
async function utama() {
|
|
10
|
+
await tampilkanWelcome();
|
|
11
|
+
const opsi = await p.select({
|
|
12
|
+
message: `${bold}${cyan}Apa yang ingin kamu lakukan?${reset}`,
|
|
13
|
+
options: [
|
|
14
|
+
{ value: "buat", label: teksBerwarna("Buat Proyek Baru", green) },
|
|
15
|
+
{ value: "install", label: teksBerwarna("Install Teknologi", yellow) },
|
|
16
|
+
{ value: "cek", label: teksBerwarna("Cek Lingkungan", blue) },
|
|
17
|
+
{ value: "bantuan", label: teksBerwarna("Referensi Perintah", magenta) },
|
|
18
|
+
{ value: "keluar", label: teksBerwarna("Keluar", cyan) },
|
|
19
|
+
],
|
|
20
|
+
});
|
|
21
|
+
if (p.isCancel(opsi)) {
|
|
22
|
+
p.cancel("Operasi dibatalkan.");
|
|
23
|
+
process.exit(0);
|
|
24
|
+
}
|
|
25
|
+
switch (opsi) {
|
|
26
|
+
case "buat":
|
|
27
|
+
await jalankanBuatProyek();
|
|
28
|
+
break;
|
|
29
|
+
case "install":
|
|
30
|
+
await jalankanInstallTeknologi();
|
|
31
|
+
break;
|
|
32
|
+
case "cek":
|
|
33
|
+
await jalankanCekLingkungan();
|
|
34
|
+
break;
|
|
35
|
+
case "bantuan":
|
|
36
|
+
await jalankanReferensiPerintah();
|
|
37
|
+
break;
|
|
38
|
+
case "keluar":
|
|
39
|
+
p.outro("Sampai jumpa!");
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
async function jalankanCekLingkungan() {
|
|
44
|
+
p.intro("Cek Lingkungan");
|
|
45
|
+
const spinner = p.spinner();
|
|
46
|
+
spinner.start("Memeriksa alat...");
|
|
47
|
+
const hasil = await deteksiSemua();
|
|
48
|
+
spinner.stop("Cek Lingkungan");
|
|
49
|
+
const baris = hasil.map((r) => {
|
|
50
|
+
const ikon = r.terinstall ? "✓" : "✗";
|
|
51
|
+
const versi = r.terinstall ? r.versi : "Tidak terinstall";
|
|
52
|
+
const warna = warnaUntukTeknologi(r.nama);
|
|
53
|
+
return `${ikon} ${teksBerwarna(r.nama.padEnd(12), warna)} ${versi}`;
|
|
54
|
+
});
|
|
55
|
+
p.note(baris.join("\n"));
|
|
56
|
+
p.outro("Pemeriksaan lingkungan selesai.");
|
|
57
|
+
}
|
|
58
|
+
utama();
|
|
59
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/technologies/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,eAAO,MAAM,SAAS,EAAE,iBAOvB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export const bootstrap = {
|
|
2
|
+
nama: "Bootstrap",
|
|
3
|
+
deskripsi: "CSS framework populer untuk responsive design",
|
|
4
|
+
requirements: ["node", "npm"],
|
|
5
|
+
perintahBuat: [],
|
|
6
|
+
perintahInstall: ["npm", "install", "bootstrap"],
|
|
7
|
+
perintahVerifikasi: ["npm", "list", "bootstrap"],
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=bootstrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/technologies/bootstrap.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAsB;IAC1C,IAAI,EAAE,WAAW;IACjB,SAAS,EAAE,+CAA+C;IAC1D,YAAY,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;IAC7B,YAAY,EAAE,EAAE;IAChB,eAAe,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC;IAChD,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC;CACjD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bun.d.ts","sourceRoot":"","sources":["../../src/technologies/bun.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,eAAO,MAAM,GAAG,EAAE,iBAOjB,CAAC"}
|