test
This commit is contained in:
@@ -179,7 +179,8 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="catSlot" class="absolute bottom-12 right-2"></div>
|
<div id="catSlot" class="absolute bottom-12 right-2"></div>
|
||||||
<!-- Interaction bar am unteren Rand -->
|
|
||||||
|
<!-- Interaction Bar -->
|
||||||
<div class="w-full h-16 flex items-center p-4"
|
<div class="w-full h-16 flex items-center p-4"
|
||||||
style="background: var(--bg-sidebar); border-top: 1px solid var(--border)">
|
style="background: var(--bg-sidebar); border-top: 1px solid var(--border)">
|
||||||
<button id="commitBtn"
|
<button id="commitBtn"
|
||||||
|
|||||||
104
main.js
104
main.js
@@ -19,11 +19,14 @@ const store = new Store({
|
|||||||
// Map zum Speichern der Watcher pro Ordner
|
// Map zum Speichern der Watcher pro Ordner
|
||||||
const repoWatchers = new Map();
|
const repoWatchers = new Map();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Debug Helper
|
// Debug Helper
|
||||||
function debug(msg) {
|
function debug(msg) {
|
||||||
console.log(`[DEBUG ${new Date().toISOString()}] ${msg}`);
|
console.log(`[DEBUG ${new Date().toISOString()}] ${msg}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Erstellt das BrowserWindow und lädt index.html.
|
* Erstellt das BrowserWindow und lädt index.html.
|
||||||
* Gibt das Window-Objekt zurück.
|
* Gibt das Window-Objekt zurück.
|
||||||
@@ -272,6 +275,53 @@ app.whenReady().then(() => {
|
|||||||
});
|
});
|
||||||
ipcMain.handle('get-skip-git-prompt', () => store.get('skipGitPrompt'));
|
ipcMain.handle('get-skip-git-prompt', () => store.get('skipGitPrompt'));
|
||||||
ipcMain.handle('set-skip-git-prompt', (_e,val) => store.set('skipGitPrompt', val));
|
ipcMain.handle('set-skip-git-prompt', (_e,val) => store.set('skipGitPrompt', val));
|
||||||
|
|
||||||
|
|
||||||
|
ipcMain.handle('commit-current-folder', async (_e, folder, message) => {
|
||||||
|
try {
|
||||||
|
debug(`Commit-Vorgang für ${folder} gestartet…`);
|
||||||
|
const git = simpleGit(folder);
|
||||||
|
|
||||||
|
// 1) Branch‐Status prüfen
|
||||||
|
let currentBranch = null;
|
||||||
|
try {
|
||||||
|
currentBranch = (await git.revparse(['--abbrev-ref', 'HEAD'])).trim();
|
||||||
|
debug(`Aktueller Branch: ${currentBranch}`);
|
||||||
|
} catch {
|
||||||
|
debug('HEAD ist detached.');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2) Falls detached, alten master sichern und neuen anlegen
|
||||||
|
if (!currentBranch || currentBranch === 'HEAD') {
|
||||||
|
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
|
||||||
|
const backupBranch = `backup-master-${timestamp}`;
|
||||||
|
const branches = await git.branchLocal();
|
||||||
|
|
||||||
|
if (branches.all.includes('master')) {
|
||||||
|
await git.branch(['-m', 'master', backupBranch]);
|
||||||
|
debug(`Alter master → ${backupBranch}`);
|
||||||
|
}
|
||||||
|
await git.checkout(['-b', 'master']);
|
||||||
|
debug('Neuer master-Branch erstellt.');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3) Commit & Push
|
||||||
|
await git.add(['-A']); debug('git add -A');
|
||||||
|
await git.commit(message || 'test'); debug('git commit');
|
||||||
|
await git.push(['-u','origin','master']); debug('git push');
|
||||||
|
|
||||||
|
return { success: true };
|
||||||
|
} catch (err) {
|
||||||
|
debug(`FEHLER beim Commit: ${err.message}`);
|
||||||
|
return { success: false, error: err.message };
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// … Ende der IPC-Handler …
|
||||||
});
|
});
|
||||||
|
|
||||||
ipcMain.on('show-folder-context-menu', (event, folderPath) => {
|
ipcMain.on('show-folder-context-menu', (event, folderPath) => {
|
||||||
@@ -293,60 +343,6 @@ ipcMain.on('show-folder-context-menu', (event, folderPath) => {
|
|||||||
];
|
];
|
||||||
const menu = Menu.buildFromTemplate(template);
|
const menu = Menu.buildFromTemplate(template);
|
||||||
menu.popup({ window: win });
|
menu.popup({ window: win });
|
||||||
|
|
||||||
// main.js
|
|
||||||
|
|
||||||
const simpleGit = require('simple-git');
|
|
||||||
const path = require('path');
|
|
||||||
|
|
||||||
// Debug Helper
|
|
||||||
function debug(msg) {
|
|
||||||
console.log(`[DEBUG ${new Date().toISOString()}] ${msg}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
ipcMain.handle('commit-current-folder', async (_e, folder, message) => {
|
|
||||||
try {
|
|
||||||
debug(`Commit-Vorgang für ${folder} gestartet…`);
|
|
||||||
const git = simpleGit(folder);
|
|
||||||
|
|
||||||
// HEAD-Status prüfen
|
|
||||||
let currentBranch = null;
|
|
||||||
try {
|
|
||||||
currentBranch = (await git.revparse(['--abbrev-ref', 'HEAD'])).trim();
|
|
||||||
debug(`Aktueller Branch: ${currentBranch}`);
|
|
||||||
} catch (err) {
|
|
||||||
debug('HEAD ist detached.');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Wenn detached, alten Branch umbenennen und neuen master erzeugen
|
|
||||||
if (!currentBranch || currentBranch === 'HEAD') {
|
|
||||||
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
|
|
||||||
const backupBranch = `backup-master-${timestamp}`;
|
|
||||||
|
|
||||||
// Alten master umbenennen (nur falls vorhanden!)
|
|
||||||
const branches = await git.branchLocal();
|
|
||||||
if (branches.all.includes('master')) {
|
|
||||||
await git.branch(['-m', 'master', backupBranch]);
|
|
||||||
debug(`Alter master-Branch wurde in ${backupBranch} umbenannt.`);
|
|
||||||
}
|
|
||||||
// Neuer master-Branch
|
|
||||||
await git.checkout(['-b', 'master']);
|
|
||||||
debug('Neuer master-Branch erstellt und ausgecheckt.');
|
|
||||||
}
|
|
||||||
|
|
||||||
await git.add(['-A']);
|
|
||||||
debug('Alle Änderungen gestaged.');
|
|
||||||
await git.commit(message || 'test');
|
|
||||||
debug('Commit erfolgreich erstellt.');
|
|
||||||
await git.push(['-u', 'origin', 'master']);
|
|
||||||
debug('Push auf origin/master erfolgreich.');
|
|
||||||
|
|
||||||
return { success: true };
|
|
||||||
} catch (err) {
|
|
||||||
debug(`FEHLER beim Commit: ${err.message}`);
|
|
||||||
return { success: false, error: err.message };
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// clean up on exit
|
// clean up on exit
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ contextBridge.exposeInMainWorld('electronAPI', {
|
|||||||
setSkipPrompt: val => ipcRenderer.invoke('set-skip-git-prompt', val),
|
setSkipPrompt: val => ipcRenderer.invoke('set-skip-git-prompt', val),
|
||||||
showFolderContextMenu: folderPath => ipcRenderer.send('show-folder-context-menu', folderPath),
|
showFolderContextMenu: folderPath => ipcRenderer.send('show-folder-context-menu', folderPath),
|
||||||
commitCurrentFolder: (folder, message) => ipcRenderer.invoke('commit-current-folder', folder, message),
|
commitCurrentFolder: (folder, message) => ipcRenderer.invoke('commit-current-folder', folder, message),
|
||||||
|
showFolderContextMenu: folderPath => ipcRenderer.send('show-folder-context-menu', folderPath),
|
||||||
});
|
});
|
||||||
|
|
||||||
ipcRenderer.on('repo-updated', (_e, folder) => {
|
ipcRenderer.on('repo-updated', (_e, folder) => {
|
||||||
|
|||||||
35
renderer.js
35
renderer.js
@@ -8,9 +8,6 @@ window.addEventListener('DOMContentLoaded', async () => {
|
|||||||
const contentList = document.getElementById('contentList');
|
const contentList = document.getElementById('contentList');
|
||||||
const panel = document.querySelector('.flex-1.p-4.overflow-y-auto');
|
const panel = document.querySelector('.flex-1.p-4.overflow-y-auto');
|
||||||
|
|
||||||
const commitBtn = document.getElementById('commitBtn');
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 1) Baby-Blau und Nacht-Blau als RGB-Arrays
|
// 1) Baby-Blau und Nacht-Blau als RGB-Arrays
|
||||||
@@ -401,31 +398,39 @@ async function renderSidebar() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
const commitBtn = document.getElementById('commitBtn');
|
||||||
commitBtn.addEventListener('click', async () => {
|
commitBtn.addEventListener('click', async () => {
|
||||||
|
// 1) Welcher Ordner ist gerade ausgewählt?
|
||||||
const folder = await window.electronAPI.getSelected();
|
const folder = await window.electronAPI.getSelected();
|
||||||
console.log('[DEBUG] Selected folder for commit:', folder);
|
if (!folder) {
|
||||||
|
|
||||||
if (!folder || folder === 'No folder selected') {
|
|
||||||
alert('Kein Ordner ausgewählt!');
|
alert('Kein Ordner ausgewählt!');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const message = prompt('Commit-Nachricht:', 'test');
|
// 2) Nachricht abfragen
|
||||||
if (!message) return;
|
const message = 'test'
|
||||||
|
alert('Commit-Button geklickt!');
|
||||||
commitBtn.disabled = true;
|
// 3) UI blockieren
|
||||||
commitBtn.textContent = 'Committing...';
|
commitBtn.disabled = true;
|
||||||
|
commitBtn.textContent = 'Committing…';
|
||||||
|
|
||||||
|
// 4) IPC‐Aufruf
|
||||||
const result = await window.electronAPI.commitCurrentFolder(folder, message);
|
const result = await window.electronAPI.commitCurrentFolder(folder, message);
|
||||||
console.log('[DEBUG] Commit result:', result);
|
console.log('[renderer] commit result:', result);
|
||||||
|
|
||||||
|
// 5) Ergebnis anzeigen und Liste neu laden
|
||||||
if (result.success) {
|
if (result.success) {
|
||||||
alert('Commit erfolgreich!');
|
alert('Commit erfolgreich!');
|
||||||
await renderContent(folder); // ← refresht Commit-Liste!
|
await renderContent(folder);
|
||||||
} else {
|
} else {
|
||||||
alert('Commit fehlgeschlagen:\n' + result.error);
|
alert('Commit fehlgeschlagen:\n' + result.error);
|
||||||
}
|
}
|
||||||
commitBtn.disabled = false;
|
|
||||||
|
// 6) UI wieder freigeben
|
||||||
|
commitBtn.disabled = false;
|
||||||
commitBtn.textContent = 'Commit';
|
commitBtn.textContent = 'Commit';
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
Reference in New Issue
Block a user