uvako-cli 0.2.0 → 0.2.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 +1 -1
- package/package.json +1 -1
- package/src/main.js +1 -0
- package/src/remote.js +38 -5
package/README.md
CHANGED
|
@@ -45,7 +45,7 @@ paneline giriş yapmış olmanız gerekir. Tema, panelden yayınlanana kadar vit
|
|
|
45
45
|
| `uvako logout` · `uvako whoami` | Kayıtlı girişi siler · bağlı mağazayı gösterir. |
|
|
46
46
|
| `uvako theme init <anahtar>` | Yeni tema iskeleti (`--base`, `--name`, `--author`). |
|
|
47
47
|
| `uvako theme check [klasör]` | Temayı denetler: yapı, ayarlar, bölümler, görseller, güvenlik. |
|
|
48
|
-
| `uvako theme dev [klasör]` | Canlı geliştirme: kaydettikçe yükler, önizleme yenilenir. |
|
|
48
|
+
| `uvako theme dev [klasör]` | Canlı geliştirme: kaydettikçe yükler, önizleme yenilenir. Durdurunca mağaza eski hâline döner (`--keep` ile kütüphanede kalır). |
|
|
49
49
|
| `uvako theme push [klasör]` | Temayı mağazanın tema kütüphanesine yükler. |
|
|
50
50
|
| `uvako theme pull <anahtar>` | Yüklediğiniz temayı indirir (`--dir`, `--force`). |
|
|
51
51
|
| `uvako theme list` | Mağazadaki temaları ve yüklediğiniz paketleri listeler. |
|
package/package.json
CHANGED
package/src/main.js
CHANGED
|
@@ -23,6 +23,7 @@ Tema:
|
|
|
23
23
|
Bir katalog temasını temel alan yeni tema iskeleti
|
|
24
24
|
uvako theme check [klasör] Temayı denetler (yapı, ayarlar, güvenlik)
|
|
25
25
|
uvako theme dev [klasör] Canlı geliştirme: kaydettikçe mağazaya yükler, önizleme yenilenir
|
|
26
|
+
Durdurunca mağaza eski hâline döner (--keep: kütüphanede bırak)
|
|
26
27
|
uvako theme push [klasör] Temayı mağazanın tema kütüphanesine yükler
|
|
27
28
|
uvako theme pull <anahtar> [--dir klasör] Yüklediğiniz temayı indirir
|
|
28
29
|
uvako theme list Mağazadaki temaları ve yüklediğiniz paketleri listeler
|
package/src/remote.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { existsSync, mkdirSync, watch, writeFileSync } from "node:fs";
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, watch, writeFileSync } from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { ApiError, call } from "./api.js";
|
|
4
4
|
import { printReport } from "./check.js";
|
|
@@ -152,11 +152,23 @@ export async function dev(target, options) {
|
|
|
152
152
|
const dir = path.resolve(target ?? ".");
|
|
153
153
|
let current;
|
|
154
154
|
let first;
|
|
155
|
+
// Geliştirme bitince mağaza başladığı hâle döner: paket önceden yüklüyse o sürüm geri yüklenir,
|
|
156
|
+
// değilse geliştirme kopyası silinir. `--keep` son hâli kütüphanede bırakır.
|
|
157
|
+
let before = null;
|
|
158
|
+
let existed = false;
|
|
155
159
|
try {
|
|
156
160
|
current = session(typeof options.store === "string" ? options.store : "");
|
|
161
|
+
const key = String(JSON.parse(readFileSync(path.join(dir, "theme.json"), "utf8")).key ?? "");
|
|
162
|
+
if (!options.keep && key) {
|
|
163
|
+
const state = await call(current, "GET", "/themes");
|
|
164
|
+
existed = state.packages.some((pkg) => pkg.key === key);
|
|
165
|
+
if (existed) before = await call(current, "GET", `/themes/${encodeURIComponent(key)}/package`, { raw: true });
|
|
166
|
+
}
|
|
157
167
|
first = await upload(current, dir);
|
|
158
168
|
} catch (error) {
|
|
159
|
-
return explain(error);
|
|
169
|
+
if (error instanceof ApiError) return explain(error);
|
|
170
|
+
console.error(`✖ ${error.message}`);
|
|
171
|
+
return 1;
|
|
160
172
|
}
|
|
161
173
|
if (!first) {
|
|
162
174
|
console.error("Başlatılamadı: önce hataları düzeltin.");
|
|
@@ -166,6 +178,8 @@ export async function dev(target, options) {
|
|
|
166
178
|
console.log(`Önizleme: ${previewUrl(current.origin, first.installationId)}`);
|
|
167
179
|
console.log(`Düzenleme: ${editorUrl(current.origin, first.installationId)}`);
|
|
168
180
|
console.log("Önizleme için tarayıcıda mağaza paneline giriş yapın. Dosyaları kaydettikçe sayfa yenilenir. Durdurmak için Ctrl+C.\n");
|
|
181
|
+
console.log(options.keep ? "Durdurduğunuzda tema son hâliyle kütüphanede kalır (--keep)." : existed ? "Durdurduğunuzda mağazadaki paket geliştirme öncesindeki sürümüne döner. Kalıcı yüklemek için: uvako theme push" : "Durdurduğunuzda geliştirme kopyası mağazadan silinir. Kalıcı yüklemek için: uvako theme push");
|
|
182
|
+
console.log("");
|
|
169
183
|
|
|
170
184
|
let timer = null;
|
|
171
185
|
let running = false;
|
|
@@ -204,10 +218,29 @@ export async function dev(target, options) {
|
|
|
204
218
|
timer = setTimeout(() => void sync(), 300);
|
|
205
219
|
});
|
|
206
220
|
return new Promise((resolve) => {
|
|
207
|
-
|
|
221
|
+
let stopping = false;
|
|
222
|
+
process.on("SIGINT", async () => {
|
|
223
|
+
if (stopping) return;
|
|
224
|
+
stopping = true;
|
|
208
225
|
watcher.close();
|
|
209
|
-
|
|
210
|
-
|
|
226
|
+
clearTimeout(timer);
|
|
227
|
+
const key = first.package.key;
|
|
228
|
+
try {
|
|
229
|
+
if (options.keep) {
|
|
230
|
+
console.log("\nCanlı geliştirme durdu. Tema son hâliyle mağaza kütüphanesinde duruyor.");
|
|
231
|
+
} else if (before) {
|
|
232
|
+
await call(current, "PUT", "/themes", { body: before });
|
|
233
|
+
console.log("\nCanlı geliştirme durdu. Mağazadaki paket geliştirme öncesindeki sürümüne döndü.");
|
|
234
|
+
} else {
|
|
235
|
+
await call(current, "DELETE", `/themes/${encodeURIComponent(key)}`);
|
|
236
|
+
console.log("\nCanlı geliştirme durdu. Geliştirme kopyası mağazadan silindi; vitrin ve kütüphane eski hâlinde.");
|
|
237
|
+
}
|
|
238
|
+
resolve(0);
|
|
239
|
+
} catch (error) {
|
|
240
|
+
console.error(`\nCanlı geliştirme durdu ama mağaza eski hâline döndürülemedi: ${error.message}`);
|
|
241
|
+
console.error(`Elle kaldırmak için: uvako theme delete ${key} --yes`);
|
|
242
|
+
resolve(1);
|
|
243
|
+
}
|
|
211
244
|
});
|
|
212
245
|
});
|
|
213
246
|
}
|