Upload main.js via GUI

This commit is contained in:
2026-03-24 20:59:13 +00:00
parent 272bd00c80
commit 3ecb3125d3

34
main.js
View File

@@ -1911,6 +1911,40 @@ ipcMain.handle('upload-and-push', async (event, data) => {
const destPath = (data.destPath || '').replace(/^\//, '').replace(/\/$/, ''); const destPath = (data.destPath || '').replace(/^\//, '').replace(/\/$/, '');
if (!owner || !repo) return { ok: false, error: 'missing-owner-or-repo' }; if (!owner || !repo) return { ok: false, error: 'missing-owner-or-repo' };
// Auto-Backup vor Upload (wenn in Einstellungen aktiviert)
const autoBackupEnabled = Boolean(credentials && credentials.autoBackupEnabled);
if (autoBackupEnabled && !data.skipBackup) {
const backupTarget = String((credentials && credentials.backupPrefLocalFolder) || '').trim();
const emitStatus = (payload) => {
try { event.sender.send('pre-push-backup-status', payload); } catch (_) {}
};
if (!backupTarget) {
return { ok: false, error: 'Auto-Backup ist aktiv, aber kein lokaler Backup-Zielordner ist gesetzt.' };
}
// Nur den Repo-Namen ohne Owner verwenden (verhindert "/" im Dateinamen)
const backupRepoName = String(repo || ppath.basename(data.localFolder)).replace(/[<>:"/\\|?*]+/g, '-');
// Wenn localFolder eine Datei ist, den Elternordner sichern
const statForBackup = fs.statSync(data.localFolder);
const backupProjectPath = statForBackup.isFile() ? ppath.dirname(data.localFolder) : data.localFolder;
try {
emitStatus({ stage: 'backup-start', repoName: backupRepoName, target: backupTarget });
await ensureLocalBackupConfigured(backupRepoName, backupTarget);
const backupResult = await ipcMain._handle_create_cloud_backup(event, {
repoName: backupRepoName,
projectPath: backupProjectPath
});
if (!backupResult?.ok) {
emitStatus({ stage: 'backup-failed', repoName: backupRepoName, error: backupResult?.error || 'Unbekannter Fehler' });
return { ok: false, error: `Auto-Backup vor Upload fehlgeschlagen: ${backupResult?.error || 'Unbekannter Fehler'}` };
}
emitStatus({ stage: 'backup-done', repoName: backupRepoName, filename: backupResult.filename || '' });
emitStatus({ stage: 'upload-start' });
} catch (backupErr) {
emitStatus({ stage: 'backup-failed', repoName: backupRepoName, error: mapIpcError(backupErr) });
return { ok: false, error: `Auto-Backup vor Upload fehlgeschlagen: ${mapIpcError(backupErr)}` };
}
}
// Prüfen ob es eine Datei oder ein Ordner ist // Prüfen ob es eine Datei oder ein Ordner ist
const stat = fs.statSync(data.localFolder); const stat = fs.statSync(data.localFolder);
const isFile = stat.isFile(); const isFile = stat.isFile();