1 import { Injectable } from '@angular/core';
2 import { CookieService } from 'ngx-cookie';
3 import { Observable } from 'rxjs/Observable';
4 import { BehaviorSubject } from 'rxjs/BehaviorSubject';
6 export interface IBuildSettings {
17 export class BuildSettingsService {
18 public settings$: Observable<IBuildSettings>;
20 private settingsSubject: BehaviorSubject<IBuildSettings>;
21 private settingsStore: IBuildSettings;
24 private cookie: CookieService,
29 // Load build settings from cookie
31 // Try to retrieve previous config from cookie
32 const cookConf = this.cookie.getObject('xds-build-settings');
33 if (cookConf != null) {
34 this.settingsStore = <IBuildSettings>cookConf;
37 this.settingsStore = {
39 cmdClean: 'rm -rf build && echo Done',
40 cmdPrebuild: 'mkdir -p build && cd build && cmake ..',
41 cmdBuild: 'cd build && make',
42 cmdPopulate: 'cd build && make remote-target-populate',
49 // Save config into cookie
52 this.settingsSubject.next(Object.assign({}, this.settingsStore));
54 const cfg = Object.assign({}, this.settingsStore);
55 this.cookie.putObject('xds-build-settings', cfg);
58 // Get whole config values
59 get(): IBuildSettings {
60 return this.settingsStore;
63 // Get whole config values
64 set(bs: IBuildSettings) {
65 this.settingsStore = bs;
69 get subpath(): string {
70 return this.settingsStore.subpath;
73 set subpath(p: string) {
74 this.settingsStore.subpath = p;