diff --git a/package.json b/package.json index c0346e56e4..f413f5f125 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,7 @@ "dependencies": { "@sindresorhus/is": "6.1.0", "clipanion": "3.2.1", + "common-tags": "1.8.2", "deepmerge": "4.3.1", "del": "7.1.0", "execa": "8.0.1", @@ -59,6 +60,7 @@ "@semantic-release/exec": "6.0.3", "@tsconfig/node20": "20.1.2", "@tsconfig/strictest": "2.0.2", + "@types/common-tags": "1.8.4", "@types/global-agent": "2.1.3", "@types/node": "20.11.16", "@types/semver": "7.5.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 45722f00a3..2d92f41a43 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,6 +22,9 @@ dependencies: clipanion: specifier: 3.2.1 version: 3.2.1(patch_hash=fhbb5gvkz3xnkjsqqxesufv7h4)(typanion@3.14.0) + common-tags: + specifier: 1.8.2 + version: 1.8.2 deepmerge: specifier: 4.3.1 version: 4.3.1 @@ -75,6 +78,9 @@ devDependencies: '@tsconfig/strictest': specifier: 2.0.2 version: 2.0.2 + '@types/common-tags': + specifier: 1.8.4 + version: 1.8.4 '@types/global-agent': specifier: 2.1.3 version: 2.1.3 @@ -1031,6 +1037,10 @@ packages: resolution: {integrity: sha512-jt4jIsWKvUvuY6adJnQJlb/UR7DdjC8CjHI/OaSQruj2yX9/K6+KOvDt/vD6udqos/FUk5Op66CvYT7TBLYO5Q==} dev: true + /@types/common-tags@1.8.4: + resolution: {integrity: sha512-S+1hLDJPjWNDhcGxsxEbepzaxWqURP/o+3cP4aa2w7yBXgdcmKGQtZzP8JbyfOd0m+33nh+8+kvxYE2UJtBDkg==} + dev: true + /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} dev: true @@ -1922,6 +1932,11 @@ packages: engines: {node: '>=16'} dev: true + /common-tags@1.8.2: + resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} + engines: {node: '>=4.0.0'} + dev: false + /compare-func@2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} dependencies: diff --git a/src/cli/install-tool/install-tool-base.service.ts b/src/cli/install-tool/install-tool-base.service.ts index 81318b30c7..4492e55324 100644 --- a/src/cli/install-tool/install-tool-base.service.ts +++ b/src/cli/install-tool/install-tool-base.service.ts @@ -1,5 +1,6 @@ import { writeFile } from 'node:fs/promises'; import { join } from 'node:path'; +import { codeBlock } from 'common-tags'; import { injectable } from 'inversify'; import type { EnvService, PathService } from '../services'; import { NoPrepareTools } from '../tools'; @@ -58,18 +59,19 @@ export abstract class InstallToolBaseService { }: ShellWrapperConfig): Promise { const tgt = join(this.pathSvc.binDir, name ?? this.name); - let content = `#!/bin/bash + let content = codeBlock` + #!/bin/bash -if [[ -z "\${CONTAINERBASE_ENV+x}" ]]; then - . ${this.pathSvc.envFile} -fi -`; + if [[ -z "\${CONTAINERBASE_ENV+x}" ]]; then + . ${this.pathSvc.envFile} + fi + `; if (exports) { - content += `export ${exports}\n`; + content += `\nexport ${exports}`; } - content += `${srcDir}/${name ?? this.name}`; + content += `\n${srcDir}/${name ?? this.name}`; if (args) { content += ` ${args}`; }