马宇豪
2024-07-16 f591c27b57e2418c9495bc02ae8cfff84d35bc18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// replace any ${ENV} values with the appropriate environ.
 
const envExpr = /(?<!\\)(\\*)\$\{([^${}]+)\}/g
 
module.exports = (f, env) => f.replace(envExpr, (orig, esc, name) => {
  const val = env[name] !== undefined ? env[name] : `$\{${name}}`
 
  // consume the escape chars that are relevant.
  if (esc.length % 2) {
    return orig.slice((esc.length + 1) / 2)
  }
 
  return (esc.slice(esc.length / 2)) + val
})