@atomist/sdm
Version:
Atomist Software Delivery Machine SDK
42 lines (39 loc) • 1.29 kB
text/typescript
/*
* Copyright © 2020 Atomist, Inc.
*
* Licensed 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 {
doWithRetry,
RetryOptions,
} from "@atomist/automation-client/lib/util/retry";
import { k8sErrMsg } from "./error";
/**
* Extract Kubernetes errors for doWithRetry.
*/
export async function logRetry<T>(f: () => Promise<T>, desc: string, options?: RetryOptions): Promise<T> {
return doWithRetry(async () => {
let r: T;
try {
r = await f();
} catch (e) {
if (!(e instanceof Error)) {
const err = new Error(k8sErrMsg(e));
Object.keys(e).forEach(k => (err as any)[k] = e[k]);
throw err;
}
throw e;
}
return r;
}, desc, options);
}