1const reifyOutput = require('./reify-output.js')
2const ini = require('ini')
3const { writeFile } = require('fs').promises
4const { resolve } = require('path')
5
6const reifyFinish = async (npm, arb) => {
7  await saveBuiltinConfig(npm, arb)
8  reifyOutput(npm, arb)
9}
10
11const saveBuiltinConfig = async (npm, arb) => {
12  const { options: { global }, actualTree } = arb
13  if (!global) {
14    return
15  }
16
17  // if we are using a builtin config, and just installed npm as
18  // a top-level global package, we have to preserve that config.
19  const npmNode = actualTree.inventory.get('node_modules/npm')
20  if (!npmNode) {
21    return
22  }
23
24  const builtinConf = npm.config.data.get('builtin')
25  if (builtinConf.loadError) {
26    return
27  }
28
29  const content = ini.stringify(builtinConf.raw).trim() + '\n'
30  await writeFile(resolve(npmNode.path, 'npmrc'), content)
31}
32
33module.exports = reifyFinish
34