diff --git a/.github/workflows/deploy-pages.yml b/.github/workflows/deploy-pages.yml index 8587b9b..ea4d943 100644 --- a/.github/workflows/deploy-pages.yml +++ b/.github/workflows/deploy-pages.yml @@ -28,7 +28,7 @@ jobs: run: bun install --frozen-lockfile - name: Build application - run: bun run build -- --base-href /watch-list/ + run: bun run build -- --base-href /watch-list/ --define "import.meta.env.APP_COMMIT_HASH=\"${{ github.sha }}\"" --define "import.meta.env.APP_VERSION=\"$(bun -e \"console.log(require('./package.json').version)\")\"" - name: Setup Pages uses: actions/configure-pages@v4 diff --git a/Dockerfile b/Dockerfile index 8877a86..bc58c40 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,7 +14,8 @@ COPY tsconfig.json . COPY tsconfig.app.json . COPY tsconfig.spec.json . -RUN bun run build +ARG COMMIT_HASH=unknown +RUN bun run build -- --define "import.meta.env.APP_COMMIT_HASH=\"$COMMIT_HASH\"" --define "import.meta.env.APP_VERSION=\"$(grep '"version"' package.json | sed 's/.*"\(.*\)".*/\1/')\"" FROM nginx:alpine-slim AS prod diff --git a/angular.json b/angular.json index 53a4c57..ce936f5 100644 --- a/angular.json +++ b/angular.json @@ -30,7 +30,11 @@ ], "styles": [ "src/styles.css" - ] + ], + "define": { + "import.meta.env.APP_COMMIT_HASH": "\"dev\"", + "import.meta.env.APP_VERSION": "\"0.0.0\"" + } }, "configurations": { "production": { diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 7235e59..ea9de8d 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -12,6 +12,8 @@ services: dockerfile: ./Dockerfile target: prod network: host + args: + COMMIT_HASH: ${COMMIT_HASH:-unknown} ports: - 4200:80 networks: diff --git a/src/app/components/settings/settings.component.spec.ts b/src/app/components/settings/settings.component.spec.ts index c6a4fcf..2f80029 100644 --- a/src/app/components/settings/settings.component.spec.ts +++ b/src/app/components/settings/settings.component.spec.ts @@ -1,10 +1,24 @@ import { TestBed } from '@angular/core/testing'; +import { environment } from '../../../environments/environment'; import { ImportExportService } from '../../services/import-export.service'; import { TmdbCredential, TmdbSettingsService } from '../../services/tmdb-settings.service'; import { SettingsComponent } from './settings.component'; import { vi } from 'vitest'; describe('SettingsComponent', () => { + let origHash: string; + let origVersion: string; + + beforeEach(() => { + origHash = environment.commitHash; + origVersion = environment.appVersion; + }); + + afterEach(() => { + environment.commitHash = origHash; + environment.appVersion = origVersion; + }); + function configure(credentials: { token: string; key: string; credential: TmdbCredential }) { const tmdbSettingsService = { token: vi.fn(() => credentials.token), @@ -101,4 +115,21 @@ describe('SettingsComponent', () => { expect(tmdbSettingsService.clearCredentials).toHaveBeenCalled(); expect(fixture.componentInstance.tmdbSettingsMessage()).toBe('TMDB credentials cleared.'); }); + + it('renders About section with version info', () => { + environment.commitHash = 'abc123456789'; + environment.appVersion = '1.2.3'; + + configure({ + token: '', + key: '', + credential: null, + }); + const fixture = TestBed.createComponent(SettingsComponent); + + fixture.detectChanges(); + + expect(fixture.nativeElement.textContent).toContain('Watch List v1.2.3'); + expect(fixture.nativeElement.textContent).toContain('abc1234'); + }); }); diff --git a/src/app/components/settings/settings.component.ts b/src/app/components/settings/settings.component.ts index 37ee714..4d3d861 100644 --- a/src/app/components/settings/settings.component.ts +++ b/src/app/components/settings/settings.component.ts @@ -3,6 +3,7 @@ import { FormsModule } from '@angular/forms'; import { ImportExportService } from '../../services/import-export.service'; import { TmdbSettingsService } from '../../services/tmdb-settings.service'; +import { environment } from '../../../environments/environment'; @Component({ selector: 'app-settings', @@ -120,6 +121,15 @@ import { TmdbSettingsService } from '../../services/tmdb-settings.service'; +
+ Watch List v{{ environment.appVersion }} ({{ shortHash }}) +
+