1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const qq = require("qqjs");
|
4 | async function writeBinScripts({ config, baseWorkspace, nodeVersion }) {
|
5 | const binPathEnvVar = config.scopedEnvVarKey('BINPATH');
|
6 | const redirectedEnvVar = config.scopedEnvVarKey('REDIRECTED');
|
7 | const clientHomeEnvVar = config.scopedEnvVarKey('OCLIF_CLIENT_HOME');
|
8 | const writeWin32 = async () => {
|
9 | const { bin } = config;
|
10 | await qq.write([baseWorkspace, 'bin', `${config.bin}.cmd`], `@echo off
|
11 | setlocal enableextensions
|
12 |
|
13 | if not "%${redirectedEnvVar}%"=="1" if exist "%LOCALAPPDATA%\\${bin}\\client\\bin\\${bin}.cmd" (
|
14 | set ${redirectedEnvVar}=1
|
15 | "%LOCALAPPDATA%\\${bin}\\client\\bin\\${bin}.cmd" %*
|
16 | goto:EOF
|
17 | )
|
18 |
|
19 | if not defined ${binPathEnvVar} set ${binPathEnvVar}="%~dp0${bin}.cmd"
|
20 | if exist "%~dp0..\\bin\\node.exe" (
|
21 | "%~dp0..\\bin\\node.exe" "%~dp0..\\bin\\run" %*
|
22 | ) else if exist "%LOCALAPPDATA%\\oclif\\node\\node-${nodeVersion}.exe" (
|
23 | "%LOCALAPPDATA%\\oclif\\node\\node-${nodeVersion}.exe" "%~dp0..\\bin\\run" %*
|
24 | ) else (
|
25 | node "%~dp0..\\bin\\run" %*
|
26 | )
|
27 | `);
|
28 |
|
29 |
|
30 |
|
31 |
|
32 |
|
33 |
|
34 | };
|
35 | const writeUnix = async () => {
|
36 | const bin = qq.join([baseWorkspace, 'bin', config.bin]);
|
37 | await qq.write(bin, `#!/usr/bin/env bash
|
38 | set -e
|
39 | echoerr() { echo "$@" 1>&2; }
|
40 |
|
41 | get_script_dir () {
|
42 | SOURCE="\${BASH_SOURCE[0]}"
|
43 | # While \$SOURCE is a symlink, resolve it
|
44 | while [ -h "\$SOURCE" ]; do
|
45 | DIR="\$( cd -P "\$( dirname "\$SOURCE" )" && pwd )"
|
46 | SOURCE="\$( readlink "\$SOURCE" )"
|
47 | # If \$SOURCE was a relative symlink (so no "/" as prefix, need to resolve it relative to the symlink base directory
|
48 | [[ \$SOURCE != /* ]] && SOURCE="\$DIR/\$SOURCE"
|
49 | done
|
50 | DIR="\$( cd -P "\$( dirname "\$SOURCE" )" && pwd )"
|
51 | echo "\$DIR"
|
52 | }
|
53 | DIR=\$(get_script_dir)
|
54 | CLI_HOME=\$(cd && pwd)
|
55 | XDG_DATA_HOME=\${XDG_DATA_HOME:="\$CLI_HOME/.local/share"}
|
56 | CLIENT_HOME=\${${clientHomeEnvVar}:=$XDG_DATA_HOME/${config.dirname}/client}
|
57 | BIN_PATH="\$CLIENT_HOME/bin/${config.bin}"
|
58 | if [ -z "\$${redirectedEnvVar}" ] && [ -x "\$BIN_PATH" ] && [[ ! "\$DIR/${config.bin}" -ef "\$BIN_PATH" ]]; then
|
59 | if [ "\$DEBUG" == "*" ]; then
|
60 | echoerr "\$BIN_PATH" "\$@"
|
61 | fi
|
62 | ${binPathEnvVar}="\$BIN_PATH" ${redirectedEnvVar}=1 "\$BIN_PATH" "\$@"
|
63 | else
|
64 | export ${binPathEnvVar}=\${${binPathEnvVar}:="\$DIR/${config.bin}"}
|
65 | if [ -x "$(command -v "\$XDG_DATA_HOME/oclif/node/node-custom")" ]; then
|
66 | NODE="\$XDG_DATA_HOME/oclif/node/node-custom"
|
67 | elif [ -x "$(command -v "\$DIR/node")" ]; then
|
68 | NODE="\$DIR/node"
|
69 | elif [ -x "$(command -v "\$XDG_DATA_HOME/oclif/node/node-${nodeVersion}")" ]; then
|
70 | NODE="\$XDG_DATA_HOME/oclif/node/node-${nodeVersion}"
|
71 | elif [ -x "$(command -v node)" ]; then
|
72 | NODE=node
|
73 | else
|
74 | echoerr 'Error: node is not installed.' >&2
|
75 | exit 1
|
76 | fi
|
77 | if [ "\$DEBUG" == "*" ]; then
|
78 | echoerr ${binPathEnvVar}="\$${binPathEnvVar}" "\$NODE" "\$DIR/run" "\$@"
|
79 | fi
|
80 | "\$NODE" "\$DIR/run" "\$@"
|
81 | fi
|
82 | `);
|
83 | await qq.chmod(bin, 0o755);
|
84 | };
|
85 | await writeWin32();
|
86 | await writeUnix();
|
87 | }
|
88 | exports.writeBinScripts = writeBinScripts;
|