@elcrm/deploy 0.0.50 → 0.0.52
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/dist/bin/index.js +2 -2
- package/dist/bin/index.js.map +1 -0
- package/dist/command/build.js +76 -0
- package/dist/command/build.js.map +1 -0
- package/dist/command/index.js +11 -0
- package/dist/command/index.js.map +1 -0
- package/dist/command/uuid.js +4 -0
- package/dist/command/uuid.js.map +1 -0
- package/dist/fn/memoize.js +11 -0
- package/dist/fn/memoize.js.map +1 -0
- package/dist/fn/nextVersion.js +14 -0
- package/dist/fn/nextVersion.js.map +1 -0
- package/dist/fn/parseArgs.js +83 -0
- package/dist/fn/parseArgs.js.map +1 -0
- package/package.json +1 -1
package/dist/bin/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
// @bun
|
|
3
|
-
var z={command:"",options:{},flags:[]},
|
|
3
|
+
var z={command:"",options:{},flags:[]},h=(U)=>{if(!U||typeof U!=="string")return{...z};switch(!0){case U.startsWith("--"):if(U.includes("=")){let[q,...G]=U.split("="),Q=G.join("="),j=q.slice(2);if(j)z.options[j]=Q||""}else{let q=U.slice(2);if(q&&!z.flags.includes(q))z.flags.push(q)}break;case U.startsWith("-"):let B=U.slice(1);if(B&&!z.flags.includes(B))z.flags.push(B);break;default:if(!z.command&&U.trim())z.command=U.trim();break}return{command:z.command,options:{...z.options},flags:[...z.flags]}},K=()=>{z={command:"",options:{},flags:[]};let U=process.argv.slice(2);if(U.length===0)return{...z};return U.forEach((B)=>{try{h(B)}catch(q){console.warn(`\u26A0\uFE0F \u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0440\u0430\u0441\u043F\u0430\u0440\u0441\u0438\u0442\u044C \u0430\u0440\u0433\u0443\u043C\u0435\u043D\u0442: ${B}`)}}),{command:z.command,options:{...z.options},flags:[...z.flags]}};var O=async(U)=>{let q=JSON.parse(await Bun.file("./package.json").text()),G=q.version.split(".").map(Number);G[G.length-1]+=1,q.version=G.join("."),console.log("v",q.version),await Bun.write("./package.json",JSON.stringify(q,null,2))};var C=async(U,B)=>{await O();let q=B.includes("client"),G=U.dir||"./out",Q=U.name?U.name:q?"build":"api",j=U.folder?U.folder:"build";if(q){let X=Bun.spawn(["bun","run","build"],{stdout:"pipe",stderr:"pipe"}),Y=await new Response(X.stdout).text(),Z=await new Response(X.stderr).text();await X.exited,console.log("stdout:",Y),console.log("stderr:",Z),console.log("\u2699\uFE0F Build completed");let y=Bun.spawn(["tar","czf","build.tar","build"],{stderr:"pipe"});await y.exited;let $=await new Response(y.stderr).text();if($&&!$.includes("LIBARCHIVE.xattr")&&$.trim()!=="");let R=Bun.file("./build.tar"),w=new FormData;w.append("upload",R),w.append("name",Q),w.append("folder",j);let V=await(await fetch(U.url,{method:"POST",body:w})).text();console.log(V)}else{let X=await Bun.build({entrypoints:["./src/index.js"],outdir:G,minify:!0,target:"bun",naming:`${Q}.js`});if(!X.success){console.error("Build failed");for(let Y of X.logs)console.error(Y)}else if(U.url){let Y=Bun.file(`${G}/${Q}.js`),Z=new FormData;Z.append("upload",Y),Z.append("name",Q);let $=await(await fetch(U.url,{method:"POST",body:Z})).text();console.log($)}}};var H=async()=>{console.log(crypto.randomUUID())};var W={build:C,uuid:H};function F(){console.log(`
|
|
4
4
|
\uD83D\uDE80 elCRM Deploy Tool
|
|
5
5
|
|
|
6
6
|
\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435:
|
|
@@ -24,4 +24,4 @@ var z={command:"",options:{},flags:[]},H=(U)=>{if(!U||typeof U!=="string")return
|
|
|
24
24
|
elcrm build --client --url=https://example.com/deploy
|
|
25
25
|
elcrm build --name=my-api --dir=./dist --url=https://example.com/deploy
|
|
26
26
|
elcrm build --dev
|
|
27
|
-
`)}async function
|
|
27
|
+
`)}async function J(){try{let U=K(),B=U.flags.includes("dev"),q=U.flags.includes("help")||U.flags.includes("h");if(B)console.log("\uD83D\uDD0D \u041E\u0442\u043B\u0430\u0434\u043E\u0447\u043D\u0430\u044F \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F:"),console.log(JSON.stringify(U,null,2));if(q||!U.command){F();return}if(W[U.command])await W[U.command](U.options,U.flags);else console.error(`\u274C \u041D\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043D\u0430\u044F \u043A\u043E\u043C\u0430\u043D\u0434\u0430: ${U.command}`),console.log("\uD83D\uDCA1 \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 'elcrm --help' \u0434\u043B\u044F \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u044F \u0441\u043F\u0440\u0430\u0432\u043A\u0438"),process.exit(1)}catch(U){console.error("\u274C \u041D\u0435\u043E\u0436\u0438\u0434\u0430\u043D\u043D\u0430\u044F \u043E\u0448\u0438\u0431\u043A\u0430:",U),process.exit(1)}}J();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bin/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC;;GAEG;AACH,SAAS,QAAQ;IACb,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;CAwBf,CAAC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,IAAI;IACf,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,SAAS,GACX,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAEhE,IAAI,MAAM,EAAE,CAAC;YACT,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,SAAS,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC/B,QAAQ,EAAE,CAAC;YACX,OAAO;QACX,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,MAAM,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACjE,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,KAAK,CAAC,0BAA0B,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;YACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC;AAED,4BAA4B;AAC5B,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { nextVersion } from "../fn/nextVersion";
|
|
2
|
+
export default async (options, flags) => {
|
|
3
|
+
await nextVersion();
|
|
4
|
+
const IS_CLIENT = flags.includes("client");
|
|
5
|
+
const DIR = options.dir || "./out";
|
|
6
|
+
const NAME = options.name ? options.name : IS_CLIENT ? "build" : "api";
|
|
7
|
+
const FOLDER = options.folder ? options.folder : "build";
|
|
8
|
+
if (IS_CLIENT) {
|
|
9
|
+
// CLIENT
|
|
10
|
+
let bu = Bun.spawn(["bun", "run", "build"], {
|
|
11
|
+
stdout: "pipe",
|
|
12
|
+
stderr: "pipe",
|
|
13
|
+
});
|
|
14
|
+
// Чтение вывода
|
|
15
|
+
const stdout = await new Response(bu.stdout).text();
|
|
16
|
+
const stderr = await new Response(bu.stderr).text();
|
|
17
|
+
await bu.exited;
|
|
18
|
+
console.log("stdout:", stdout);
|
|
19
|
+
console.log("stderr:", stderr);
|
|
20
|
+
console.log("⚙️ Build completed");
|
|
21
|
+
let proc = Bun.spawn(["tar", "czf", "build.tar", "build"], {
|
|
22
|
+
stderr: "pipe",
|
|
23
|
+
});
|
|
24
|
+
await proc.exited;
|
|
25
|
+
// Фильтруем stderr чтобы скрыть предупреждения о xattr
|
|
26
|
+
const stderrText = await new Response(proc.stderr).text();
|
|
27
|
+
// Выводим stderr только если он содержит что-то кроме предупреждений о xattr
|
|
28
|
+
if (stderrText &&
|
|
29
|
+
!stderrText.includes("LIBARCHIVE.xattr") &&
|
|
30
|
+
stderrText.trim() !== "") {
|
|
31
|
+
// console.error(stderrText);
|
|
32
|
+
}
|
|
33
|
+
const tar = Bun.file("./build.tar");
|
|
34
|
+
const formData = new FormData();
|
|
35
|
+
formData.append("upload", tar);
|
|
36
|
+
formData.append("name", NAME);
|
|
37
|
+
formData.append("folder", FOLDER);
|
|
38
|
+
let res = await fetch(options.url, {
|
|
39
|
+
method: "POST",
|
|
40
|
+
body: formData,
|
|
41
|
+
});
|
|
42
|
+
let text = await res.text();
|
|
43
|
+
console.log(text);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
// API
|
|
47
|
+
const result = await Bun.build({
|
|
48
|
+
entrypoints: ["./src/index.js"],
|
|
49
|
+
outdir: DIR,
|
|
50
|
+
minify: true,
|
|
51
|
+
target: "bun",
|
|
52
|
+
naming: `${NAME}.js`,
|
|
53
|
+
});
|
|
54
|
+
if (!result.success) {
|
|
55
|
+
console.error("Build failed");
|
|
56
|
+
for (const message of result.logs) {
|
|
57
|
+
console.error(message);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
if (options.url) {
|
|
62
|
+
const foo = Bun.file(`${DIR}/${NAME}.js`);
|
|
63
|
+
const formData = new FormData();
|
|
64
|
+
formData.append("upload", foo);
|
|
65
|
+
formData.append("name", NAME);
|
|
66
|
+
let res = await fetch(options.url, {
|
|
67
|
+
method: "POST",
|
|
68
|
+
body: formData,
|
|
69
|
+
});
|
|
70
|
+
let text = await res.text();
|
|
71
|
+
console.log(text);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=build.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/command/build.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/command/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,IAAI,MAAM,QAAQ,CAAC;AAE1B;;GAEG;AACH,MAAM,QAAQ,GAGV;IACA,KAAK;IACL,IAAI;CACP,CAAC;AAEF,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uuid.js","sourceRoot":"","sources":["../../src/command/uuid.ts"],"names":[],"mappings":"AAAA,eAAe,KAAK,IAAI,EAAE;IACtB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;AACrC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memoize.js","sourceRoot":"","sources":["../../src/fn/memoize.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,OAAO,CAAoC,CAAI;IAC3D,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,GAAkB,EAAE,EAAE;QAC7B,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACV,CAAC,GAAG,CAAC,CAAC;YACN,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QACrB,CAAC;IACL,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export const nextVersion = async (version) => {
|
|
2
|
+
// Обновление версии в package.json
|
|
3
|
+
const packageJsonPath = "./package.json";
|
|
4
|
+
const packageJson = JSON.parse(await Bun.file(packageJsonPath).text());
|
|
5
|
+
// Увеличиваем версию
|
|
6
|
+
const versionParts = packageJson.version.split(".").map(Number);
|
|
7
|
+
versionParts[versionParts.length - 1] += 1; // Увеличиваем последнюю часть версии
|
|
8
|
+
packageJson.version = versionParts.join(".");
|
|
9
|
+
// 🔄
|
|
10
|
+
console.log("v", packageJson.version);
|
|
11
|
+
// Записываем обновленную версию обратно в package.json
|
|
12
|
+
await Bun.write(packageJsonPath, JSON.stringify(packageJson, null, 2));
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=nextVersion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nextVersion.js","sourceRoot":"","sources":["../../src/fn/nextVersion.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAAE,OAAgB,EAAE,EAAE;IAClD,mCAAmC;IACnC,MAAM,eAAe,GAAG,gBAAgB,CAAC;IAEzC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAEvE,qBAAqB;IACrB,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAChE,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,qCAAqC;IACjF,WAAW,CAAC,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE7C,KAAK;IACL,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IACtC,uDAAuD;IACvD,MAAM,GAAG,CAAC,KAAK,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3E,CAAC,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Объект для хранения распарсенных аргументов
|
|
3
|
+
*/
|
|
4
|
+
let parsed = {
|
|
5
|
+
command: "",
|
|
6
|
+
options: {},
|
|
7
|
+
flags: [],
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Парсит один аргумент из командной строки
|
|
11
|
+
* @param args - Аргумент для парсинга
|
|
12
|
+
* @returns Объект с распарсенными данными
|
|
13
|
+
*/
|
|
14
|
+
export const parseArg = (args) => {
|
|
15
|
+
if (!args || typeof args !== "string") {
|
|
16
|
+
return { ...parsed };
|
|
17
|
+
}
|
|
18
|
+
switch (true) {
|
|
19
|
+
case args.startsWith("--"):
|
|
20
|
+
if (args.includes("=")) {
|
|
21
|
+
const [key, ...valueParts] = args.split("=");
|
|
22
|
+
const value = valueParts.join("="); // Поддержка знаков = в значениях
|
|
23
|
+
const optionKey = key.slice(2);
|
|
24
|
+
if (optionKey) {
|
|
25
|
+
parsed.options[optionKey] = value || "";
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
const flag = args.slice(2);
|
|
30
|
+
if (flag && !parsed.flags.includes(flag)) {
|
|
31
|
+
parsed.flags.push(flag);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
break;
|
|
35
|
+
case args.startsWith("-"):
|
|
36
|
+
const shortFlag = args.slice(1);
|
|
37
|
+
if (shortFlag && !parsed.flags.includes(shortFlag)) {
|
|
38
|
+
parsed.flags.push(shortFlag);
|
|
39
|
+
}
|
|
40
|
+
break;
|
|
41
|
+
default:
|
|
42
|
+
// Первая команда без префиксов
|
|
43
|
+
if (!parsed.command && args.trim()) {
|
|
44
|
+
parsed.command = args.trim();
|
|
45
|
+
}
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
command: parsed.command,
|
|
50
|
+
options: { ...parsed.options },
|
|
51
|
+
flags: [...parsed.flags],
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Парсит все аргументы командной строки
|
|
56
|
+
* @returns Объект с всеми распарсенными аргументами
|
|
57
|
+
*/
|
|
58
|
+
export const parseArgs = () => {
|
|
59
|
+
// Сбрасываем состояние перед парсингом
|
|
60
|
+
parsed = {
|
|
61
|
+
command: "",
|
|
62
|
+
options: {},
|
|
63
|
+
flags: [],
|
|
64
|
+
};
|
|
65
|
+
const args = process.argv.slice(2);
|
|
66
|
+
if (args.length === 0) {
|
|
67
|
+
return { ...parsed };
|
|
68
|
+
}
|
|
69
|
+
args.forEach((arg) => {
|
|
70
|
+
try {
|
|
71
|
+
parseArg(arg);
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
console.warn(`⚠️ Не удалось распарсить аргумент: ${arg}`);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
return {
|
|
78
|
+
command: parsed.command,
|
|
79
|
+
options: { ...parsed.options },
|
|
80
|
+
flags: [...parsed.flags],
|
|
81
|
+
};
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=parseArgs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseArgs.js","sourceRoot":"","sources":["../../src/fn/parseArgs.ts"],"names":[],"mappings":"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"}
|