diff options
Diffstat (limited to 'webapp/src/app/@core-xds/services/build-settings.service.ts')
-rw-r--r-- | webapp/src/app/@core-xds/services/build-settings.service.ts | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/webapp/src/app/@core-xds/services/build-settings.service.ts b/webapp/src/app/@core-xds/services/build-settings.service.ts new file mode 100644 index 0000000..cb52ce3 --- /dev/null +++ b/webapp/src/app/@core-xds/services/build-settings.service.ts @@ -0,0 +1,78 @@ +import { Injectable } from '@angular/core'; +import { CookieService } from 'ngx-cookie'; +import { Observable } from 'rxjs/Observable'; +import { BehaviorSubject } from 'rxjs/BehaviorSubject'; + +export interface IBuildSettings { + subpath: string; + cmdClean: string; + cmdPrebuild: string; + cmdBuild: string; + cmdPopulate: string; + cmdArgs: string[]; + envVars: string[]; +} + +@Injectable() +export class BuildSettingsService { + public settings$: Observable<IBuildSettings>; + + private settingsSubject: BehaviorSubject<IBuildSettings>; + private settingsStore: IBuildSettings; + + constructor( + private cookie: CookieService, + ) { + this._load(); + } + + // Load build settings from cookie + private _load() { + // Try to retrieve previous config from cookie + const cookConf = this.cookie.getObject('xds-build-settings'); + if (cookConf != null) { + this.settingsStore = <IBuildSettings>cookConf; + } else { + // Set default config + this.settingsStore = { + subpath: '', + cmdClean: 'rm -rf build && echo Done', + cmdPrebuild: 'mkdir -p build && cd build && cmake ..', + cmdBuild: 'cd build && make', + cmdPopulate: 'cd build && make remote-target-populate', + cmdArgs: [], + envVars: [], + }; + } + } + + // Save config into cookie + private _save() { + // Notify subscribers + this.settingsSubject.next(Object.assign({}, this.settingsStore)); + + const cfg = Object.assign({}, this.settingsStore); + this.cookie.putObject('xds-build-settings', cfg); + } + + // Get whole config values + get(): IBuildSettings { + return this.settingsStore; + } + + // Get whole config values + set(bs: IBuildSettings) { + this.settingsStore = bs; + this._save(); + } + + get subpath(): string { + return this.settingsStore.subpath; + } + + set subpath(p: string) { + this.settingsStore.subpath = p; + this._save(); + } + +} |