From 845b270e06af354f446dd77f8421c8fae66a862d Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Thu, 10 Feb 2022 22:16:36 +0000 Subject: [PATCH] Maintain the version number in assets/version.js --- .gitignore | 2 ++ .gitlab-ci.yml | 7 +++++-- src/app/app.component.ts | 8 +++++--- src/app/app.module.ts | 12 +++++++----- src/app/window-ref.service.spec.ts | 16 ++++++++++++++++ src/app/window-ref.service.ts | 14 ++++++++++++++ src/index.html | 1 + 7 files changed, 50 insertions(+), 10 deletions(-) create mode 100644 src/app/window-ref.service.spec.ts create mode 100644 src/app/window-ref.service.ts diff --git a/.gitignore b/.gitignore index cb40977..f223915 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,5 @@ testem.log # System Files .DS_Store Thumbs.db + +src/assets/version.js diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0e2a1ea..b7184a6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -26,6 +26,7 @@ build: script: - yarn install - yarn build --no-progress --prod --aot + - 'echo "let window.appVersion = \"$CI_COMMIT_TAG\";" >> dist/web-remote/assets/version.js' artifacts: paths: - dist/ @@ -40,7 +41,7 @@ deploy: - cd ../../ - export CHECK_SUM=`sha256sum remote-$CI_COMMIT_TAG.zip | cut -d' ' -f1` - export FILE_SIZE=`stat -c '%s' remote-$CI_COMMIT_TAG.zip` - - 'echo -e "{\"latest\": {\"version\": \"$CI_COMMIT_TAG\", \"sha256\": \"$CHECK_SUM\", \"filename\": \"remote-$CI_COMMIT_TAG.zip\", \"size\": $FILE_SIZE}}" > version.json' + - 'echo -e "{\"latest\": {\"version\": \"$CI_COMMIT_TAG\", \"sha256\": \"$CHECK_SUM\", \"filename\": \"remote-$CI_COMMIT_TAG.zip\", \"size\": $FILE_SIZE}}" > version-$CI_COMMIT_TAG.json' - mkdir -p ~/.ssh - echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa - chmod 600 ~/.ssh/id_rsa @@ -49,6 +50,8 @@ deploy: - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config' - ssh openlp@openlp.io "mkdir -p /home/openlp/sites/get.openlp.org/www/remote/$CI_COMMIT_TAG" - scp remote-$CI_COMMIT_TAG.zip openlp@openlp.io:/home/openlp/sites/get.openlp.org/www/remote/$CI_COMMIT_TAG/ - - scp version.json openlp@openlp.io:/home/openlp/sites/get.openlp.org/www/remote/ + - scp version-$CI_COMMIT_TAG.json openlp@openlp.io:/home/openlp/sites/get.openlp.org/www/remote/ + - ssh openlp@openlp.io "rm /home/openlp/sites/get.openlp.org/www/remote/version.json" + - scp version-$CI_COMMIT_TAG.json openlp@openlp.io:/home/openlp/sites/get.openlp.org/www/remote/version.json only: - tags diff --git a/src/app/app.component.ts b/src/app/app.component.ts index f8abe3a..072148c 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -4,9 +4,10 @@ import { MatSlideToggleChange } from '@angular/material/slide-toggle'; import { State } from './responses'; import { OpenLPService } from './openlp.service'; +import { WindowRef } from './window-ref.service'; import { PageTitleService } from './page-title.service'; import { LoginComponent } from './components/login/login.component'; -import { version } from '../../package.json'; +// import { version } from '../../package.json'; @Component({ selector: 'app-root', @@ -18,12 +19,13 @@ export class AppComponent implements OnInit { state = new State(); showLogin = false; pageTitle = 'OpenLP Remote'; - appVersion = version; + appVersion = '0.0'; constructor(private pageTitleService: PageTitleService, private openlpService: OpenLPService, - private dialog: MatDialog) { + private dialog: MatDialog, private windowRef: WindowRef) { pageTitleService.pageTitleChanged$.subscribe(pageTitle => this.pageTitle = pageTitle); openlpService.stateChanged$.subscribe(item => this.state = item); + this.appVersion = windowRef.nativeWindow.appVersion || '0.0'; } ngOnInit(): void { diff --git a/src/app/app.module.ts b/src/app/app.module.ts index bafbc08..85e7856 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -1,7 +1,10 @@ -import { BrowserModule, Title } from '@angular/platform-browser'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { BrowserModule, Title } from '@angular/platform-browser'; +import { FormsModule } from '@angular/forms'; +import { HttpClientModule } from '@angular/common/http'; import { NgModule } from '@angular/core'; +import { FlexLayoutModule } from '@angular/flex-layout'; import { MatButtonModule } from '@angular/material/button'; import { MatButtonToggleModule } from '@angular/material/button-toggle'; import { MatDialogModule } from '@angular/material/dialog'; @@ -18,19 +21,17 @@ import { MatSlideToggleModule } from '@angular/material/slide-toggle'; import { MatTabsModule } from '@angular/material/tabs'; import { MatToolbarModule } from '@angular/material/toolbar'; import { MatTooltipModule } from '@angular/material/tooltip'; -import { FlexLayoutModule } from '@angular/flex-layout'; import { AppComponent } from './app.component'; import { PageTitleService } from './page-title.service'; import { OpenLPService } from './openlp.service'; -import { HttpClientModule } from '@angular/common/http'; +import { WindowRef } from './window-ref.service'; import { AppRoutingModule } from './app.routing'; import { ServiceComponent } from './components/service/service.component'; import { AlertComponent } from './components/alert/alert.component'; import { SearchComponent } from './components/search/search.component'; import { SearchOptionsComponent } from './components/search/search-options/search-options.component'; import { SlidesComponent } from './components/slides/slides.component'; -import { FormsModule } from '@angular/forms'; import { ChordViewComponent } from './components/chord-view/chord-view.component'; import { StageViewComponent } from './components/stage-view/stage-view.component'; import { Nl2BrPipe } from './components/stage-view/nl2br.pipe'; @@ -91,7 +92,8 @@ import { ServiceListComponent } from './components/service/service-list/service- providers: [ PageTitleService, OpenLPService, - Title + Title, + WindowRef ], entryComponents: [ LoginComponent diff --git a/src/app/window-ref.service.spec.ts b/src/app/window-ref.service.spec.ts new file mode 100644 index 0000000..32aae4c --- /dev/null +++ b/src/app/window-ref.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { WindowRef} from './window-ref.service'; + +describe('WindowRef', () => { + let service: WindowRef; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(WindowRef); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/window-ref.service.ts b/src/app/window-ref.service.ts new file mode 100644 index 0000000..e5cb701 --- /dev/null +++ b/src/app/window-ref.service.ts @@ -0,0 +1,14 @@ +import { Injectable } from '@angular/core'; + +function _window(): any { + return window; +} + + +@Injectable({providedIn: 'root'}) +export class WindowRef { + + get nativeWindow(): any { + return _window(); + } +} diff --git a/src/index.html b/src/index.html index 5a16c0d..b3bf0d6 100644 --- a/src/index.html +++ b/src/index.html @@ -7,6 +7,7 @@ +