Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: update LLVM to 19 + update cmake, meson, task, mingw + feat: support Windows arm cross-compilation + test on MacOS 15 #324

Merged
merged 21 commits into from
Jan 12, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 10 additions & 7 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -82,9 +82,9 @@ jobs:
fail-fast: false
matrix:
os:
- windows-2022
- ubuntu-24.04
- macos-13
- windows-2019
- ubuntu-20.04
- macos-13 # x64
- macos-14 # arm64
steps:
- uses: actions/checkout@v4
Expand Down Expand Up @@ -143,9 +143,12 @@ jobs:
- ubuntu-24.04
- ubuntu-22.04
- ubuntu-20.04
- macos-14
- macos-13
- macos-12
- macos-15 # arm64
# - macos-15-large # x64
- macos-14 # arm64
# - macos-14-large # x64
# - macos-14-xlarge #arm64
- macos-13 # x64
steps:
- uses: actions/checkout@v4
with:
Expand Down Expand Up @@ -202,7 +205,7 @@ jobs:
RUNNER_OS_NAME: ${{ matrix.os }}

- name: Setup Node 12
if: ${{ !contains(matrix.os, 'macos-14') }}
if: ${{ !contains(matrix.os, 'macos-14') && !contains(matrix.os, 'macos-15') }}
uses: actions/setup-node@v4
with:
node-version: 12
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Setting up a **cross-platform** environment for building and testing C++/C proje

`setup-cpp` can be used locally from terminal, from CI services like GitHub Actions and GitLab Pipelines, and inside containers like Docker.

`setup-cpp` is supported on many platforms. It is continuously tested on several configurations including Windows (11, 10, 2022, 2019) x64/ARM/x86, Linux (Ubuntu 24.0, 22.04, 20.04, 18.04, Fedora, ArchLinux) x64/ARM, and macOS (14, 13, 12, 11, 10.15) x64/ARM. `setup-cpp` is backed by unit tests for each tool and integration tests for compiling cpp projects.
`setup-cpp` is supported on many platforms. It is continuously tested on several configurations including Windows (11, 10, 2022, 2019) x64/ARM/x86, Linux (Ubuntu 24.0, 22.04, 20.04, 18.04, Fedora, ArchLinux) x64/ARM, and macOS (15, 14, 13, 12, 11, 10.15) x64/ARM. `setup-cpp` is backed by unit tests for each tool and integration tests for compiling cpp projects.

## Features

Expand Down
2 changes: 2 additions & 0 deletions cspell.config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ words:
- Sccache
- setupcpp
- setx
- sparcv
- SYSROOT
- Syuu
- terserrc
Expand All @@ -117,6 +118,7 @@ words:
- vsversion
- whatwg
- xcrun
- xlarge
- Yahyaabadi
ignoreWords: []
import: []
Expand Down
33 changes: 11 additions & 22 deletions dev/scripts/pack-exe.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -15,29 +15,18 @@ function getPlatformName() {
}
}

function main() {
let exes
if (process.platform === "win32") {
exes = [".exe"]
} else if (process.platform === "darwin") {
exes = [""]
} else {
exes = [""]
}
async function main() {
const exe = process.platform === "win32" ? ".exe" : ""

return Promise.all(
exes.map((exe) =>
execaNode("./node_modules/caxa/build/index.mjs", [
"--input",
"./dist/modern",
"--output",
`./exe/setup-cpp-${process.arch}-${getPlatformName()}${exe}`,
"--",
`{{caxa}}/node_modules/.bin/node${exe}`,
"{{caxa}}/setup-cpp.mjs",
])
),
)
await execaNode("./node_modules/caxa/build/index.mjs", [
"--input",
"./dist/modern",
"--output",
`./exe/setup-cpp-${process.arch}-${getPlatformName()}${exe}`,
"--",
`{{caxa}}/node_modules/.bin/node${exe}`,
"{{caxa}}/setup-cpp.mjs",
])
}

main().catch((err) => {
Expand Down
2 changes: 2 additions & 0 deletions dist/legacy/assets/actions_python-Czj4ScEf.js

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions dist/legacy/assets/actions_python-Czj4ScEf.js.map

Large diffs are not rendered by default.

2 changes: 0 additions & 2 deletions dist/legacy/assets/actions_python-juFJ8Ha1.js

This file was deleted.

1 change: 0 additions & 1 deletion dist/legacy/assets/actions_python-juFJ8Ha1.js.map

This file was deleted.

2 changes: 0 additions & 2 deletions dist/legacy/assets/hdi-Bqz5zNw7.js

This file was deleted.

1 change: 0 additions & 1 deletion dist/legacy/assets/hdi-Bqz5zNw7.js.map

This file was deleted.

2 changes: 2 additions & 0 deletions dist/legacy/assets/hdi-KnshNzDE.js

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions dist/legacy/assets/hdi-KnshNzDE.js.map

Large diffs are not rendered by default.

2 changes: 0 additions & 2 deletions dist/legacy/assets/proxy-agent-BtRxTz9r.js

This file was deleted.

1 change: 0 additions & 1 deletion dist/legacy/assets/proxy-agent-BtRxTz9r.js.map

This file was deleted.

2 changes: 2 additions & 0 deletions dist/legacy/assets/proxy-agent-Bxzdb3SZ.js

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions dist/legacy/assets/proxy-agent-Bxzdb3SZ.js.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/legacy/github_brechtsanders_winlibs_mingw.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/legacy/github_llvm_llvm-project.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/legacy/setup-cpp.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/legacy/setup-cpp.js.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/legacy/versions.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"ninja":"1.12.1","cmake":"3.30.4","task":"3.39.2","powershell":"7.4.5","pip":">=22.2.0","python":">=3.7.9","meson":{"linux":{"ubuntu":{"20":"1.5.2","18":"0.61.4","else":"0.61.4"},"else":"1.5.2"},"else":"1.5.2"},"kcov":{"linux":{"ubuntu":{"22":"42-binary","20":"40-binary","14":"40","else":"42"},"else":"42"},"else":"42"},"doxygen":{"linux":{"archlinux":"1.12.0-2","ubuntu":{"22":"1.12.0","18":"1.10.0","else":"1.10.0"},"else":"1.12.0"},"else":"1.12.0"},"gcc":{"win32":"14.2.0posix-18.1.8-12.0.0-ucrt-r1","else":""},"mingw":{"win32":"14.2.0posix-18.1.8-12.0.0-ucrt-r1","linux":{"ubuntu":{"22":"8.0.0-1","20":"7.0.0-2","else":"7.0.0-2"},"else":""},"else":""},"gcovr":{"linux":{"ubuntu":{"20":"","18":"5.0","else":"5.0"},"else":""},"else":""},"nala":{"linux":{"ubuntu":{"22":"","21":"legacy","else":"legacy"},"else":""},"else":""},"llvm":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"18.1.8"}}},"else":"18.1.8"},"clang":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"18.1.8"}}},"else":"18.1.8"},"clang++":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"18.1.8"}}},"else":"18.1.8"},"clang-tidy":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"18.1.8"}}},"else":"18.1.8"},"clangtidy":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"18.1.8"}}},"else":"18.1.8"},"clang-format":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"18.1.8"}}},"else":"18.1.8"},"clangformat":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"18.1.8"}}},"else":"18.1.8"}}
{"ninja":"1.12.1","cmake":"3.31.4","task":"3.40.1","powershell":"7.4.5","pip":">=22.2.0","python":">=3.7.9","meson":{"linux":{"ubuntu":{"20":"1.6.1","18":"0.61.4","else":"0.61.4"},"else":"1.6.1"},"else":"1.6.1"},"kcov":{"linux":{"ubuntu":{"22":"42-binary","20":"40-binary","14":"40","else":"42"},"else":"42"},"else":"42"},"doxygen":{"linux":{"archlinux":"1.12.0-2","ubuntu":{"22":"1.12.0","18":"1.10.0","else":"1.10.0"},"else":"1.12.0"},"else":"1.12.0"},"gcc":{"win32":"14.2.0posix-18.1.8-12.0.0-ucrt-r1","else":""},"mingw":{"win32":"14.2.0posix-18.1.8-12.0.0-ucrt-r1","linux":{"ubuntu":{"22":"8.0.0-1","20":"7.0.0-2","else":"7.0.0-2"},"else":""},"else":""},"gcovr":{"linux":{"ubuntu":{"20":"","18":"5.0","else":"5.0"},"else":""},"else":""},"nala":{"linux":{"ubuntu":{"22":"","21":"legacy","else":"legacy"},"else":""},"else":""},"llvm":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"18.1.8"}}},"else":"19.1.6"},"clang":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"18.1.8"}}},"else":"19.1.6"},"clang++":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"18.1.8"}}},"else":"19.1.6"},"clang-tidy":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"18.1.8"}}},"else":"19.1.6"},"clangtidy":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"18.1.8"}}},"else":"19.1.6"},"clang-format":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"18.1.8"}}},"else":"19.1.6"},"clangformat":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"18.1.8"}}},"else":"19.1.6"}}
2 changes: 0 additions & 2 deletions dist/modern/assets/actions_python-56soSduK.mjs

This file was deleted.

1 change: 0 additions & 1 deletion dist/modern/assets/actions_python-56soSduK.mjs.map

This file was deleted.

2 changes: 2 additions & 0 deletions dist/modern/assets/actions_python-C5ar-1oi.mjs

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions dist/modern/assets/actions_python-C5ar-1oi.mjs.map

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions dist/modern/assets/hdi-BTtpGNI1.mjs

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions dist/modern/assets/hdi-BTtpGNI1.mjs.map

Large diffs are not rendered by default.

2 changes: 0 additions & 2 deletions dist/modern/assets/hdi-BtlhU6up.mjs

This file was deleted.

1 change: 0 additions & 1 deletion dist/modern/assets/hdi-BtlhU6up.mjs.map

This file was deleted.

2 changes: 0 additions & 2 deletions dist/modern/assets/proxy-agent-CazGe35s.mjs

This file was deleted.

1 change: 0 additions & 1 deletion dist/modern/assets/proxy-agent-CazGe35s.mjs.map

This file was deleted.

2 changes: 2 additions & 0 deletions dist/modern/assets/proxy-agent-DB9QOaSI.mjs

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions dist/modern/assets/proxy-agent-DB9QOaSI.mjs.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/modern/github_brechtsanders_winlibs_mingw.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/modern/github_llvm_llvm-project.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/modern/setup-cpp.mjs

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/modern/setup-cpp.mjs.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/modern/versions.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"ninja":"1.12.1","cmake":"3.30.4","task":"3.39.2","powershell":"7.4.5","pip":">=22.2.0","python":">=3.7.9","meson":{"linux":{"ubuntu":{"20":"1.5.2","18":"0.61.4","else":"0.61.4"},"else":"1.5.2"},"else":"1.5.2"},"kcov":{"linux":{"ubuntu":{"22":"42-binary","20":"40-binary","14":"40","else":"42"},"else":"42"},"else":"42"},"doxygen":{"linux":{"archlinux":"1.12.0-2","ubuntu":{"22":"1.12.0","18":"1.10.0","else":"1.10.0"},"else":"1.12.0"},"else":"1.12.0"},"gcc":{"win32":"14.2.0posix-18.1.8-12.0.0-ucrt-r1","else":""},"mingw":{"win32":"14.2.0posix-18.1.8-12.0.0-ucrt-r1","linux":{"ubuntu":{"22":"8.0.0-1","20":"7.0.0-2","else":"7.0.0-2"},"else":""},"else":""},"gcovr":{"linux":{"ubuntu":{"20":"","18":"5.0","else":"5.0"},"else":""},"else":""},"nala":{"linux":{"ubuntu":{"22":"","21":"legacy","else":"legacy"},"else":""},"else":""},"llvm":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"18.1.8"}}},"else":"18.1.8"},"clang":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"18.1.8"}}},"else":"18.1.8"},"clang++":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"18.1.8"}}},"else":"18.1.8"},"clang-tidy":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"18.1.8"}}},"else":"18.1.8"},"clangtidy":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"18.1.8"}}},"else":"18.1.8"},"clang-format":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"18.1.8"}}},"else":"18.1.8"},"clangformat":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"18.1.8"}}},"else":"18.1.8"}}
{"ninja":"1.12.1","cmake":"3.31.4","task":"3.40.1","powershell":"7.4.5","pip":">=22.2.0","python":">=3.7.9","meson":{"linux":{"ubuntu":{"20":"1.6.1","18":"0.61.4","else":"0.61.4"},"else":"1.6.1"},"else":"1.6.1"},"kcov":{"linux":{"ubuntu":{"22":"42-binary","20":"40-binary","14":"40","else":"42"},"else":"42"},"else":"42"},"doxygen":{"linux":{"archlinux":"1.12.0-2","ubuntu":{"22":"1.12.0","18":"1.10.0","else":"1.10.0"},"else":"1.12.0"},"else":"1.12.0"},"gcc":{"win32":"14.2.0posix-18.1.8-12.0.0-ucrt-r1","else":""},"mingw":{"win32":"14.2.0posix-18.1.8-12.0.0-ucrt-r1","linux":{"ubuntu":{"22":"8.0.0-1","20":"7.0.0-2","else":"7.0.0-2"},"else":""},"else":""},"gcovr":{"linux":{"ubuntu":{"20":"","18":"5.0","else":"5.0"},"else":""},"else":""},"nala":{"linux":{"ubuntu":{"22":"","21":"legacy","else":"legacy"},"else":""},"else":""},"llvm":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"18.1.8"}}},"else":"19.1.6"},"clang":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"18.1.8"}}},"else":"19.1.6"},"clang++":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"18.1.8"}}},"else":"19.1.6"},"clang-tidy":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"18.1.8"}}},"else":"19.1.6"},"clangtidy":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"18.1.8"}}},"else":"19.1.6"},"clang-format":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"18.1.8"}}},"else":"19.1.6"},"clangformat":{"darwin":{"else":{"else":{"x64":"15.0.7","else":"18.1.8"}}},"else":"19.1.6"}}
64 changes: 34 additions & 30 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,11 @@
"build.vite": "cross-env NODE_ENV=production vite build",
"build.vite.legacy": "cross-env NODE_ENV=production TARGET=legacy vite build",
"build.json": "shx cp ./src/*/*.json ./dist/legacy/ && shx cp ./dist/legacy/*.json ./dist/modern && minijson --file ./dist/**/*.json",
"bump": "ncu -u -x execa,numerous,eslint,@types/eslint && pnpm update && pnpx typesync && pnpm run clean",
"bump": "ncu -u -x execa,numerous,eslint,@types/eslint,which && pnpm update && pnpx typesync && pnpm run clean",
"bump.llvm": "GITHUB_TOKEN=$(gh auth token) tsx ./src/llvm/assets-list.ts",
"bump.gcc": "GITHUB_TOKEN=$(gh auth token) tsx ./src/gcc/assets-list.ts",
"bump.infer": "GITHUB_TOKEN=$(gh auth token) tsx ./src/infer/assets-list.ts",
"bump.versions": "run-p bump.llvm bump.gcc bump.infer && run-s format",
"clean": "shx rm -rf ./dist ./packages/*/dist ./exe ./.parcel-cache && shx mkdir -p ./dist/legacy ./dist/modern ./dist/modern ",
"dev.vite": "cross-env NODE_ENV=development vite build --watch",
"dev.packages": "turbo dev",
Expand All @@ -55,45 +59,45 @@
"build.docker-ci": "node ./dev/docker/ci/docker-ci.mjs"
},
"devDependencies": {
"@actions/cache": "^3.2.4",
"@actions/core": "^1.10.1",
"@actions/cache": "^4.0.0",
"@actions/core": "^1.11.1",
"@actions/exec": "^1.1.1",
"@actions/http-client": "^2.2.3",
"@actions/io": "^1.1.3",
"@actions/tool-cache": "^2.0.1",
"@aminya/minijson": "1.1.0",
"@babel/core": "^7.25.2",
"@biomejs/biome": "^1.9.2",
"@babel/core": "^7.26.0",
"@biomejs/biome": "^1.9.4",
"@iarna/toml": "^2.2.5",
"@liuli-util/vite-plugin-node": "^0.9.0",
"@octokit/core": "^6.1.2",
"@octokit/openapi-types": "^22.2.0",
"@octokit/plugin-paginate-rest": "^11.3.3",
"@octokit/plugin-rest-endpoint-methods": "^13.2.4",
"@octokit/rest": "^21.0.2",
"@octokit/types": "^13.5.0",
"@octokit/core": "^6.1.3",
"@octokit/openapi-types": "^23.0.1",
"@octokit/plugin-paginate-rest": "^11.4.0",
"@octokit/plugin-rest-endpoint-methods": "^13.3.0",
"@octokit/rest": "^21.1.0",
"@octokit/types": "^13.7.0",
"@shockpkg/archive-files": "github:aminya/archive-files#54ec59fad46aca736ac6feb6c7bb526528141b9d",
"@swc/jest": "^0.2.36",
"@swc/jest": "^0.2.37",
"@types/babel__core": "~7.20.5",
"@types/cross-spawn": "^6.0.6",
"@types/escape-quotes": "~1.0.0",
"@types/eslint": "^9.6.1",
"@types/iarna__toml": "~2.0.5",
"@types/jest": "^29.5.13",
"@types/jest": "^29.5.14",
"@types/memoizee": "^0.4.11",
"@types/node": "^22.5.5",
"@types/node": "^22.10.5",
"@types/semver": "^7.5.8",
"@types/which": "^3.0.4",
"@upleveled/babel-plugin-remove-node-prefix": "github:aminya/babel-plugin-remove-node-prefix#02526f866c4f57d3a097590942dc0e700fb3eb15",
"admina": "^1.0.1",
"caxa": "^3.0.1",
"ci-info": "^4.0.0",
"ci-info": "^4.1.0",
"ci-log": "workspace:*",
"cross-env": "7.0.3",
"cross-spawn": "^7.0.3",
"cspell": "^8.14.4",
"cross-spawn": "^7.0.6",
"cspell": "^8.17.1",
"diagnostics_channel": "^1.1.0",
"dprint": "^0.47.2",
"dprint": "^0.48.0",
"envosman": "workspace:*",
"escape-path-with-spaces": "^1.0.2",
"escape-quotes": "^1.0.2",
Expand All @@ -104,45 +108,45 @@
"execa": "^7",
"is-url-online": "^1.5.0",
"jest": "^29.7.0",
"lefthook": "^1.7.15",
"lefthook": "^1.10.3",
"macos-release": "^3.3.0",
"memoizee": "^0.4.17",
"mkdirp": "^3.0.1",
"mri": "^1.2.0",
"msvc-dev-cmd": "github:aminya/msvc-dev-cmd#c01f519bd995460228ed3dec4df51df92dc290fd",
"node-downloader-helper": "2.1.9",
"npm-check-updates": "^17.1.2",
"npm-run-all2": "^6.2.3",
"npm-check-updates": "^17.1.13",
"npm-run-all2": "^7.0.2",
"numerous": "1.0.3",
"p-timeout": "^6.1.2",
"p-timeout": "^6.1.4",
"path-exists": "^5.0.0",
"patha": "^0.4.1",
"prettier": "3.3.3",
"prettier": "3.4.2",
"prettier-config-atomic": "^4.0.0",
"readme-md-generator": "^1.0.0",
"retry-as-promised": "^7.0.4",
"rollup": "^4.22.0",
"rollup": "^4.30.1",
"safe-stable-stringify": "^2.5.0",
"semver": "7.6.3",
"setup-apt": "workspace:*",
"setup-brew": "workspace:*",
"setup-python": "github:aminya/setup-python#9700887",
"shx": "0.3.4",
"simple-update-notifier": "^2.0.0",
"terser": "^5.33.0",
"terser": "^5.37.0",
"terser-config-atomic": "^1.0.0",
"time-delta": "github:aminya/time-delta#69d91a4",
"timers-browserify": "^2.0.12",
"ts-node": "^10.9.2",
"ts-readme": "^1.1.3",
"turbo": "2.1.2",
"typescript": "^5.6.2",
"turbo": "2.3.3",
"typescript": "^5.7.3",
"ubuntu-version": "^2.0.0",
"untildify-user": "workspace:*",
"util.types": "^0.0.2",
"vite": "^5.4.6",
"vite-plugin-babel": "^1.2.0",
"web-streams-polyfill": "^4.0.0",
"vite": "^6.0.7",
"vite-plugin-babel": "^1.3.0",
"web-streams-polyfill": "^4.1.0",
"which": "^4.0.0"
},
"productionDependencies": [
Expand Down
2 changes: 1 addition & 1 deletion packages/setup-brew/src/install-pack.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ export async function installBrewPack(
if (!("overwrite" in options)) {
options.overwrite = true // default to true if not specified
}
if (options.cask) {
if (options.cask === true) {
options.overwrite = false // mutually exclusive with --overwrite
}

Expand Down
Loading