v6
1// Copyright 2022 Google LLC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// https://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15import { getCtx } from './context.js'
16import { ProcessPromise } from './core.js'
17
18export function quote(arg: string) {
19 if (/^[a-z0-9/_.-]+$/i.test(arg) || arg === '') {
20 return arg
21 }
22 return (
23 `$'` +
24 arg
25 .replace(/\\/g, '\\\\')
26 .replace(/'/g, "\\'")
27 .replace(/\f/g, '\\f')
28 .replace(/\n/g, '\\n')
29 .replace(/\r/g, '\\r')
30 .replace(/\t/g, '\\t')
31 .replace(/\v/g, '\\v')
32 .replace(/\0/g, '\\0') +
33 `'`
34 )
35}
36
37export function substitute(arg: ProcessPromise | any) {
38 if (arg?.stdout) {
39 return arg.stdout.replace(/\n$/, '')
40 }
41 return `${arg}`
42}