@iksdev/shard-cli 0.1.28 → 0.1.29
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/notify-discord.js +32 -17
- package/package.json +1 -1
package/notify-discord.js
CHANGED
|
@@ -45,31 +45,37 @@ async function downloadBuffer(url) {
|
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
// ─── Parse le tarball (.tgz) sans dépendance externe ─────────────────────────
|
|
48
|
-
// Un .tgz = gzip(tar). On décompresse puis on parse le format TAR à la main.
|
|
49
48
|
function extractFileFromTar(tarBuffer, targetPath) {
|
|
50
49
|
let offset = 0;
|
|
50
|
+
const found = [];
|
|
51
|
+
|
|
51
52
|
while (offset + 512 <= tarBuffer.length) {
|
|
52
|
-
// Header TAR (512 octets)
|
|
53
53
|
const header = tarBuffer.slice(offset, offset + 512);
|
|
54
54
|
const nameRaw = header.slice(0, 100).toString("utf8").replace(/\0/g, "").trim();
|
|
55
|
-
if (!nameRaw) break;
|
|
55
|
+
if (!nameRaw) break;
|
|
56
56
|
|
|
57
57
|
const sizeOctal = header.slice(124, 136).toString("utf8").replace(/\0/g, "").trim();
|
|
58
58
|
const size = parseInt(sizeOctal, 8) || 0;
|
|
59
59
|
|
|
60
|
-
// Prefix (ustar)
|
|
61
60
|
const prefix = header.slice(345, 500).toString("utf8").replace(/\0/g, "").trim();
|
|
62
61
|
const fullName = prefix ? `${prefix}/${nameRaw}` : nameRaw;
|
|
63
62
|
|
|
64
|
-
offset += 512;
|
|
63
|
+
offset += 512;
|
|
64
|
+
|
|
65
|
+
// Log tous les fichiers trouvés pour debug
|
|
66
|
+
if (size > 0) found.push(fullName);
|
|
65
67
|
|
|
66
68
|
if (fullName.endsWith(targetPath) || fullName === targetPath) {
|
|
69
|
+
console.log(` ✅ Trouvé: ${fullName}`);
|
|
67
70
|
return tarBuffer.slice(offset, offset + size).toString("utf8");
|
|
68
71
|
}
|
|
69
72
|
|
|
70
|
-
// Saute le contenu (arrondi à 512)
|
|
71
73
|
offset += Math.ceil(size / 512) * 512;
|
|
72
74
|
}
|
|
75
|
+
|
|
76
|
+
// Si pas trouvé, affiche tous les fichiers du tarball
|
|
77
|
+
console.log(` ❌ "${targetPath}" introuvable. Fichiers dans le tarball:`);
|
|
78
|
+
found.forEach((f) => console.log(` - ${f}`));
|
|
73
79
|
return null;
|
|
74
80
|
}
|
|
75
81
|
|
|
@@ -85,21 +91,16 @@ async function fetchShardJsFromNpm(version) {
|
|
|
85
91
|
}
|
|
86
92
|
console.log(` ✅ Téléchargé (${(tgzBuffer.length / 1024).toFixed(0)} Ko)`);
|
|
87
93
|
|
|
88
|
-
// Décompresse le gzip
|
|
89
94
|
const tarBuffer = await new Promise((resolve, reject) => {
|
|
90
95
|
zlib.gunzip(tgzBuffer, (err, result) => {
|
|
91
|
-
if (err) reject(err);
|
|
96
|
+
if (err) { console.log(" ❌ Erreur gunzip:", err.message); reject(err); }
|
|
92
97
|
else resolve(result);
|
|
93
98
|
});
|
|
94
99
|
});
|
|
95
100
|
|
|
96
|
-
|
|
101
|
+
console.log(` ✅ Décompressé (${(tarBuffer.length / 1024).toFixed(0)} Ko)`);
|
|
97
102
|
const content = extractFileFromTar(tarBuffer, "bin/shard.js");
|
|
98
|
-
if (
|
|
99
|
-
console.log(" ❌ bin/shard.js introuvable dans le tarball");
|
|
100
|
-
} else {
|
|
101
|
-
console.log(` ✅ bin/shard.js extrait (${content.length} chars)`);
|
|
102
|
-
}
|
|
103
|
+
if (content) console.log(` ✅ bin/shard.js extrait (${content.length} chars)`);
|
|
103
104
|
return content;
|
|
104
105
|
}
|
|
105
106
|
|
|
@@ -122,16 +123,27 @@ function geminiRequest(prompt) {
|
|
|
122
123
|
},
|
|
123
124
|
(res) => {
|
|
124
125
|
let data = "";
|
|
126
|
+
console.log(` Gemini HTTP status: ${res.statusCode}`);
|
|
125
127
|
res.on("data", (c) => (data += c));
|
|
126
128
|
res.on("end", () => {
|
|
127
129
|
try {
|
|
128
130
|
const json = JSON.parse(data);
|
|
129
|
-
|
|
130
|
-
|
|
131
|
+
// Log la réponse complète si erreur
|
|
132
|
+
if (res.statusCode !== 200) {
|
|
133
|
+
console.log(" ❌ Réponse Gemini:", JSON.stringify(json, null, 2));
|
|
134
|
+
}
|
|
135
|
+
const text = json.candidates?.[0]?.content?.parts?.[0]?.text || null;
|
|
136
|
+
console.log(text ? ` ✅ Changelog généré (${text.length} chars)` : " ❌ Gemini a retourné null");
|
|
137
|
+
resolve(text);
|
|
138
|
+
} catch (e) {
|
|
139
|
+
console.log(" ❌ Parse JSON échoué:", e.message);
|
|
140
|
+
console.log(" Raw response:", data.slice(0, 500));
|
|
141
|
+
resolve(null);
|
|
142
|
+
}
|
|
131
143
|
});
|
|
132
144
|
}
|
|
133
145
|
);
|
|
134
|
-
req.on("error", reject);
|
|
146
|
+
req.on("error", (e) => { console.log(" ❌ Erreur réseau Gemini:", e.message); reject(e); });
|
|
135
147
|
req.write(body);
|
|
136
148
|
req.end();
|
|
137
149
|
});
|
|
@@ -220,6 +232,7 @@ function sendDiscord(changelog, prevVersion) {
|
|
|
220
232
|
(async () => {
|
|
221
233
|
console.log("🔍 Récupération de la version précédente sur npm...");
|
|
222
234
|
const prevVersion = await getPreviousVersion();
|
|
235
|
+
console.log(` Version précédente: ${prevVersion}`);
|
|
223
236
|
|
|
224
237
|
if (!prevVersion) {
|
|
225
238
|
console.log("⚠️ Pas de version précédente, envoi sans changelog.");
|
|
@@ -230,9 +243,11 @@ function sendDiscord(changelog, prevVersion) {
|
|
|
230
243
|
console.log(`📥 Téléchargement de shard.js v${prevVersion} depuis npm...`);
|
|
231
244
|
const oldCode = await fetchShardJsFromNpm(prevVersion);
|
|
232
245
|
|
|
246
|
+
console.log("📂 Lecture de bin/shard.js local...");
|
|
233
247
|
const newCode = fs.existsSync("./bin/shard.js")
|
|
234
248
|
? fs.readFileSync("./bin/shard.js", "utf-8")
|
|
235
249
|
: null;
|
|
250
|
+
console.log(newCode ? ` ✅ Lu (${newCode.length} chars)` : " ❌ ./bin/shard.js introuvable");
|
|
236
251
|
|
|
237
252
|
if (!oldCode || !newCode) {
|
|
238
253
|
console.log("⚠️ Fichiers introuvables, envoi sans changelog.");
|