Upload main.js via GUI
This commit is contained in:
34
main.js
34
main.js
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user