| /** |
| * This file lists helpers for returning global constants in Status. These should not change once |
| * an instance has booted up, so they need not be returned via JSON requests. |
| * |
| * Settings are set via <script> on pages in status/pages, filled in by serverside template. |
| */ |
| |
| class StatusSettings { |
| public swarmingUrl: string = ''; |
| |
| public treeStatusBaseUrl: string = ''; |
| |
| // Url with '{{TaskID}}' as a placeholder. |
| public logsUrlTemplate: string = ''; |
| |
| public taskSchedulerUrl: string = ''; |
| |
| public defaultRepo: string = ''; |
| |
| public repos: Map<string, string> = new Map(); |
| } |
| |
| function settings(): StatusSettings | undefined { |
| return (<any>window).StatusSettings; |
| } |
| |
| // swarmingUrl: Base URL for linking to swarming task data. |
| export function swarmingUrl() { |
| return settings()?.swarmingUrl; |
| } |
| |
| // treeStatusBaseUrl: Base URL for getting tree status of specific repos. |
| export function treeStatusBaseUrl() { |
| return settings()?.treeStatusBaseUrl; |
| } |
| |
| // taskSchedulerUrl: Base URL for linking to Task Scheduler data. |
| export function taskSchedulerUrl() { |
| return settings()?.taskSchedulerUrl; |
| } |
| |
| // logsUrl: Returns a logsUrl for the given taskId. |
| export function logsUrl(taskId: string): string { |
| const temp = settings()?.logsUrlTemplate; |
| if (!temp) { |
| return '#'; |
| } |
| if (temp.includes('annotations')) { |
| if (!taskId.endsWith('0')) { |
| return '#'; |
| } |
| // Hack because chromium logs replaces a persistent trailing '0' with a '1' for log urls. |
| taskId = `${taskId.slice(0, -1)}1`; |
| } |
| return temp.replace('{{TaskID}}', taskId); |
| } |
| |
| // defaultRepo: Repo to use on initial load. |
| export function defaultRepo() { |
| return settings()?.defaultRepo || ''; |
| } |
| |
| // repos: List of available repos. |
| export function repos() { |
| const r = settings()?.repos; |
| return r ? [...r.keys()] : []; |
| } |
| |
| export function repoUrl(r: string) { |
| return settings()?.repos.get(r) || ''; |
| } |
| |
| // revisionUrlTemplate: Returns the base url for a repo's revisions. Can be |
| // concatenated with a hash to form a valid url. |
| export function revisionUrlTemplate(repo: string) { |
| return settings()?.repos.get(repo); |
| } |
| |
| // SetTestSettings: Inject setting values for tests. |
| export function SetTestSettings(s: StatusSettings) { |
| (<any>window).StatusSettings = s; |
| } |