Skip to content

Commit e00d9a5

Browse files
Check and Install Git!
- Check if git is installed and if not it returns false - It then installs it - Front end displays this information tell the user to wait for Git to be installed and then once complete the user can click the Continue button to continue to the main app - These updates are huge to limit the amount of steps it takes to setup!
1 parent 8627da4 commit e00d9a5

5 files changed

Lines changed: 71 additions & 0 deletions

File tree

src/checkGitExists.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
const gitOverlay_el = document.getElementById('gitOverlay');
2+
const gitStatusText_el = document.getElementById('gitStatusText');
3+
const gitOKButton_el = document.getElementById('gitOKButton');
4+
5+
async function checkifGitExists(){
6+
const checkGit = await api.checkGitExists();
7+
if (!checkGit){
8+
gitOverlay_el.style.display = 'flex';
9+
const installStatus = await api.installGit();
10+
console.log(installStatus);
11+
gitStatusText_el.textContent = 'Git Installation Complete. Thank you!'
12+
gitOKButton_el.style.display = 'block';
13+
}
14+
}
15+
16+
gitOKButton_el.addEventListener('click', () => {
17+
gitOverlay_el.style.display = 'none';
18+
});

src/index.html

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,16 @@
77
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
88
</head>
99
<body>
10+
<div id="gitOverlay" class="overlay" style="display: none;">
11+
<div class="stop-container" style="text-align: center;">
12+
<div style="display: grid">
13+
<h2 id="gitStatusText">Please Allow Git to Install</h2>
14+
<p style="text-align: center;">Git is used so that we can all keep up to date map data!</p>
15+
<button id="gitOKButton" class="input-button" style="display: none;">Continue</button>
16+
</div>
17+
</div>
18+
</div>
19+
1020
<div id="updateOverlay" class="overlay" style="display: none;">
1121
<div class="stop-container" style="text-align: center;">
1222
<div style="display: grid">
@@ -161,4 +171,5 @@ <h3 id="serverPortText">N/A</h3>
161171
<script src="server.js"></script>
162172
<script src="loopback.js"></script>
163173
<script src="autoUpdater.js"></script>
174+
<script src="checkGitExists.js"></script>
164175
</html>

src/index.js

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,43 @@ app.on('ready', () => {
7575
*/
7676
});
7777

78+
ipcMain.handle('install-git', async (event, args) => {
79+
return new Promise((resolve, reject) => {
80+
exec('winget install Git.Git', (error, stdout, stderr) => {
81+
if (error) {
82+
console.error(`Error executing git: ${error.message}`);
83+
reject(error.message);
84+
return;
85+
}
86+
87+
if (stderr) {
88+
console.error('Error during git command:', stderr);
89+
reject(stderr);
90+
return;
91+
} else {
92+
console.log('Git installed:', stdout.trim());
93+
resolve(stdout.trim());
94+
return;
95+
}
96+
});
97+
});
98+
});
99+
100+
ipcMain.handle('check-git-exists', () => {
101+
return new Promise((resolve, reject) => {
102+
exec('git --version', (error, stdout, stderr) => {
103+
if (error || stderr) {
104+
console.error(`Error executing git: ${error ? error.message : stderr}`);
105+
resolve(false);
106+
return;
107+
}
108+
109+
console.log('Git version:', stdout.trim());
110+
resolve(true);
111+
});
112+
});
113+
});
114+
78115
ipcMain.handle('get-zerotier-ip', () => {
79116
return new Promise((resolve, reject) => {
80117
exec('ipconfig', (error, stdout, stderr) => {

src/preload.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,6 @@ contextBridge.exposeInMainWorld('api', {
3030

3131
restartAndUpdate: () => ipcRenderer.invoke('restart-and-update'),
3232
getZerotierIP: () => ipcRenderer.invoke('get-zerotier-ip'),
33+
checkGitExists: () => ipcRenderer.invoke('check-git-exists'),
34+
installGit: () => ipcRenderer.invoke('install-git'),
3335
});

src/settings.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ saveSettingsButton_el.addEventListener('click', async () => {
5858

5959
toggleHostInputs('block');
6060

61+
await checkifGitExists();
62+
6163
settings = await api.hostSettingsHandler({request: 'Get'});
6264

6365
if (settings !== null){
@@ -82,6 +84,7 @@ document.addEventListener('DOMContentLoaded', async () => {
8284
ipInput_el.value = ztIP;
8385
//settingsOverlay_el.style.display = 'flex';
8486
} else {
87+
await checkifGitExists();
8588
await getGist();
8689
const canHost = canHostCheck();
8790
if (canHost){

0 commit comments

Comments
 (0)