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(/\/$/, '');
|
||||
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
|
||||
const stat = fs.statSync(data.localFolder);
|
||||
const isFile = stat.isFile();
|
||||
|
||||
Reference in New Issue
Block a user