-
Notifications
You must be signed in to change notification settings - Fork 0
/
common.ts
54 lines (46 loc) · 1.83 KB
/
common.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with this
* work for additional information regarding copyright ownership. The ASF
* licenses this file to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
import {appTelemetry} from '@opvious/stl-bootstrap';
import {ResourceLoader} from '@opvious/stl-utils/files';
import humanizeDuration from 'humanize-duration';
import __inlinable from 'inlinable';
import os from 'os';
import path from 'path';
export const COMMAND_NAME = 'opvious';
export const packageInfo = __inlinable((ctx) =>
ctx.enclosing(import.meta.url).metadata()
);
export function isCommanderError(err: unknown): boolean {
const code = (err as any)?.code;
return typeof code == 'string' && code.startsWith('commander');
}
export function humanizeMillis(millis: number): string {
return Math.abs(millis) < 1_000
? '<1 second'
: humanizeDuration(millis, {largest: 1, round: true});
}
export function logPath(): string {
return path.join(os.tmpdir(), COMMAND_NAME + '.log');
}
export const telemetry = appTelemetry(packageInfo, {
loggerOptions: {
destination: logPath(),
redact: ['data.req.headers.authorization'],
base: {pid: process.pid},
},
});
export const resourceLoader = ResourceLoader.enclosing(import.meta.url);