Skip to content

Commit d389d6d

Browse files
Izak88jkuri
authored andcommitted
feat(status): check git installation (closes #249)
1 parent aa76406 commit d389d6d

File tree

5 files changed

+43
-14
lines changed

5 files changed

+43
-14
lines changed

src/api/server-routes.ts

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -558,6 +558,7 @@ export function setupRoutes(): express.Router {
558558

559559
router.get('/ready', (req: express.Request, res: express.Response) => {
560560
Observable.merge(...[
561+
system.isGitInstalled(),
561562
system.isSQLiteInstalled(),
562563
docker.isDockerInstalled(),
563564
docker.isDockerRunning(),
@@ -588,18 +589,24 @@ export function setupRoutes(): express.Router {
588589
});
589590

590591
router.get('/status', (req: express.Request, res: express.Response) => {
591-
system.isSQLiteInstalled().subscribe(sqlite => {
592-
docker.isDockerInstalled().subscribe(dockerInstalled => {
593-
if (dockerInstalled) {
594-
docker.isDockerRunning().subscribe(dockerRunning => {
595-
const data = { sqlite: sqlite, docker: dockerInstalled, dockerRunning: dockerRunning };
596-
res.status(200).json({ data: data });
597-
});
598-
} else {
599-
const data = { sqlite: sqlite, docker: false, dockerRunning: false };
600-
res.status(200).json({ data: data });
601-
}
602-
});
592+
Observable.concat(...[
593+
system.isGitInstalled(),
594+
system.isSQLiteInstalled(),
595+
docker.isDockerInstalled()
596+
])
597+
.toArray()
598+
.subscribe(data => {
599+
if (data[2]) {
600+
docker.isDockerRunning().subscribe(dockerRunning => {
601+
const status = {
602+
sqlite: data[1], docker: data[2], dockerRunning: dockerRunning, git: data[0] };
603+
res.status(200).json({ data: status });
604+
});
605+
} else {
606+
const status = {
607+
sqlite: data[1], docker: false, dockerRunning: false, git: data[0] };
608+
res.status(200).json({ data: status });
609+
}
603610
});
604611
});
605612

src/api/system.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,18 @@ export function isSQLiteInstalled(): Observable<boolean> {
1515
});
1616
});
1717
}
18+
19+
export function isGitInstalled(): Observable<boolean> {
20+
return new Observable((observer: Observer<boolean>) => {
21+
const git = spawn('which', ['git']);
22+
git.on('close', code => {
23+
if (code === 0) {
24+
observer.next(true);
25+
} else {
26+
observer.next(false);
27+
}
28+
29+
observer.complete();
30+
});
31+
});
32+
}

src/app/components/app-setup/app-setup.component.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ <h2>
3636
<div class="setup-list-item">
3737
<img class="icon" [src]="serverStatus.sqlite ? 'images/icons/check-true.svg' : 'images/icons/check-false.svg'" name="sqlite3-installed-icon"> SQLite3 Installed
3838
</div>
39+
<div class="setup-list-item">
40+
<img class="icon" [src]="serverStatus.git ? 'images/icons/check-true.svg' : 'images/icons/check-false.svg'" name="git-installed-icon"> Git Installed
41+
</div>
3942
</div>
4043
<hr/>
4144
<p *ngIf="!readyToSetup">Please make sure that all of the above checkmarks are green as it is mandatory to run Abstruse on this server.</p>

src/app/components/app-setup/app-setup.component.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ export interface ServerStatus {
88
sqlite: boolean;
99
docker: boolean;
1010
dockerRunning: boolean;
11+
git: boolean;
1112
}
1213

1314
export interface User {
@@ -40,7 +41,8 @@ export class AppSetupComponent implements OnInit {
4041
this.serverStatus = {
4142
sqlite: false,
4243
docker: false,
43-
dockerRunning: false
44+
dockerRunning: false,
45+
git: false
4446
};
4547

4648
this.readyToSetup = false;

tests/unit/050_new-server-api-routes.spec.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -375,7 +375,9 @@ describe('Api Server Routes Unit Tests', () => {
375375

376376
it(`status should return true`, () => {
377377
return sendGetRequest({}, `api/setup/status`).then(res => {
378-
expect(res).to.deep.equal({ data: { docker: true, dockerRunning: true, sqlite: true } });
378+
expect(res).to.deep.equal({
379+
data: { docker: true, dockerRunning: true, sqlite: true, git: true }
380+
});
379381
});
380382
});
381383

0 commit comments

Comments
 (0)