mirror of https://github.com/aminya/setup-cpp
feat: introduce setup-brew package
This commit is contained in:
parent
20b8aaf39f
commit
f2d212e7ec
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -36,7 +36,9 @@
|
|||
"copy.matchers": "run-p copy.matchers.legacy copy.matchers.actions",
|
||||
"copy.matchers.legacy": "shx cp ./src/gcc/gcc_matcher.json ./dist/legacy/ && shx cp ./src/msvc/msvc_matcher.json ./dist/legacy/ && shx cp ./src/python/python_matcher.json ./dist/legacy/ && shx cp ./src/llvm/llvm_matcher.json ./dist/legacy/",
|
||||
"copy.matchers.actions": "shx cp ./src/gcc/gcc_matcher.json ./dist/actions/ && shx cp ./src/msvc/msvc_matcher.json ./dist/actions/ && shx cp ./src/python/python_matcher.json ./dist/actions/ && shx cp ./src/llvm/llvm_matcher.json ./dist/actions/",
|
||||
"dev": "cross-env NODE_ENV=development parcel watch",
|
||||
"dev.parcel": "cross-env NODE_ENV=development parcel watch",
|
||||
"dev.packages": "turbo dev",
|
||||
"dev": "run-p dev.packages dev.parcel",
|
||||
"docs": "shx rm -rf packages/*/README.md && pnpm -r exec readme --path ../../dev/readme/template.md -y && pnpm -r exec ts-readme",
|
||||
"format": "run-s lint.dprint",
|
||||
"lint": "turbo lint && run-p --aggregate-output --continue-on-error lint.**",
|
||||
|
@ -114,6 +116,7 @@
|
|||
"retry-as-promised": "^7.0.4",
|
||||
"semver": "7.6.3",
|
||||
"setup-python": "github:aminya/setup-python#a783db655c6e40317e2c0c96f9d162d9c9f4a751",
|
||||
"setup-brew": "workspace:*",
|
||||
"shx": "0.3.4",
|
||||
"simple-update-notifier": "^2.0.0",
|
||||
"terser-config-atomic": "^1.0.0",
|
||||
|
@ -157,6 +160,7 @@
|
|||
"retry-as-promised",
|
||||
"semver",
|
||||
"setup-apt",
|
||||
"setup-brew",
|
||||
"setup-python",
|
||||
"simple-update-notifier",
|
||||
"time-delta",
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
<h1 align="center">ci-log</h1>
|
||||
<p>
|
||||
<img alt="Version" src="https://img.shields.io/badge/version-1.0.0-blue.svg?cacheSeconds=2592000" />
|
||||
<a href="https://www.npmjs.com/package/ci-log" target="_blank">
|
||||
<img alt="Version" src="https://img.shields.io/npm/v/ci-log.svg">
|
||||
</a>
|
||||
<a href="#" target="_blank">
|
||||
<img alt="License: Apache--2.0" src="https://img.shields.io/badge/License-Apache--2.0-yellow.svg" />
|
||||
</a>
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
"source": "./src/index.ts",
|
||||
"scripts": {
|
||||
"build": "tsc --pretty",
|
||||
"dev": "tsc --watch --pretty",
|
||||
"lint.tsc": "tsc --noEmit --pretty",
|
||||
"lint.eslint": "eslint **/*.{ts,tsx,js,jsx,cjs,mjs,json,yaml} --no-error-on-unmatched-pattern --cache --cache-location ./.cache/eslint/ --fix",
|
||||
"prepublishOnly": "pnpm run build"
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
<h1 align="center">envosman</h1>
|
||||
<p>
|
||||
<img alt="Version" src="https://img.shields.io/badge/version-1.0.0-blue.svg?cacheSeconds=2592000" />
|
||||
<a href="https://www.npmjs.com/package/envosman" target="_blank">
|
||||
<img alt="Version" src="https://img.shields.io/npm/v/envosman.svg">
|
||||
</a>
|
||||
<img src="https://img.shields.io/badge/node-%3E%3D12-blue.svg" />
|
||||
<a href="#" target="_blank">
|
||||
<img alt="License: Apache--2.0" src="https://img.shields.io/badge/License-Apache--2.0-yellow.svg" />
|
||||
|
@ -23,6 +25,8 @@ npm install --save envosman
|
|||
|
||||
### `RcOptions` (type)
|
||||
|
||||
Options for adding an rc file
|
||||
|
||||
### `sourceRCInRc` (variable)
|
||||
|
||||
handles adding conditions to source rc file from .bashrc and .profile
|
||||
|
@ -48,6 +52,8 @@ Escape a string for use in a shell command
|
|||
|
||||
### `AddEnvOptions` (type)
|
||||
|
||||
The options for adding an environment variable
|
||||
|
||||
### `addEnv` (function)
|
||||
|
||||
Add an environment variable.
|
||||
|
@ -62,6 +68,10 @@ This function is cross-platforms and works in all the local or CI systems.
|
|||
|
||||
**returns:** Promise<void>
|
||||
|
||||
### `AddPathOptions` (type)
|
||||
|
||||
The options for adding a PATH variable
|
||||
|
||||
### `addPath` (function)
|
||||
|
||||
Add a path to the PATH environment variable.
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
"source": "./src/index.ts",
|
||||
"scripts": {
|
||||
"build": "tsc --pretty",
|
||||
"dev": "tsc --watch --pretty",
|
||||
"lint.tsc": "tsc --noEmit --pretty",
|
||||
"lint.eslint": "eslint **/*.{ts,tsx,js,jsx,cjs,mjs,json,yaml} --no-error-on-unmatched-pattern --cache --cache-location ./.cache/eslint/ --fix",
|
||||
"prepublishOnly": "pnpm run build"
|
||||
|
|
|
@ -10,7 +10,7 @@ const { appendFile } = promises
|
|||
/**
|
||||
* The options for adding a PATH variable
|
||||
*/
|
||||
type AddPathOptions = {
|
||||
export type AddPathOptions = {
|
||||
/**
|
||||
* The path to the RC file that the PATH variables should be added to.
|
||||
*/
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
<h1 align="center">exec-powershell</h1>
|
||||
<p>
|
||||
<img alt="Version" src="https://img.shields.io/badge/version-1.0.0-blue.svg?cacheSeconds=2592000" />
|
||||
<a href="https://www.npmjs.com/package/exec-powershell" target="_blank">
|
||||
<img alt="Version" src="https://img.shields.io/npm/v/exec-powershell.svg">
|
||||
</a>
|
||||
<a href="#" target="_blank">
|
||||
<img alt="License: Apache--2.0" src="https://img.shields.io/badge/License-Apache--2.0-yellow.svg" />
|
||||
</a>
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
"source": "./src/index.ts",
|
||||
"scripts": {
|
||||
"build": "tsc --pretty",
|
||||
"dev": "tsc --watch --pretty",
|
||||
"lint.tsc": "tsc --noEmit --pretty",
|
||||
"lint.eslint": "eslint **/*.{ts,tsx,js,jsx,cjs,mjs,json,yaml} --no-error-on-unmatched-pattern --cache --cache-location ./.cache/eslint/ --fix",
|
||||
"prepublishOnly": "pnpm run build"
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
<h1 align="center">setup-apt</h1>
|
||||
<p>
|
||||
<img alt="Version" src="https://img.shields.io/badge/version-1.0.0-blue.svg?cacheSeconds=2592000" />
|
||||
<a href="https://www.npmjs.com/package/setup-apt" target="_blank">
|
||||
<img alt="Version" src="https://img.shields.io/npm/v/setup-apt.svg">
|
||||
</a>
|
||||
<img src="https://img.shields.io/badge/node-%3E%3D12-blue.svg" />
|
||||
<a href="#" target="_blank">
|
||||
<img alt="License: Apache--2.0" src="https://img.shields.io/badge/License-Apache--2.0-yellow.svg" />
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
"source": "./src/index.ts",
|
||||
"scripts": {
|
||||
"build": "tsc --pretty",
|
||||
"dev": "tsc --watch --pretty",
|
||||
"lint.tsc": "tsc --noEmit --pretty",
|
||||
"lint.eslint": "eslint **/*.{ts,tsx,js,jsx,cjs,mjs,json,yaml} --no-error-on-unmatched-pattern --cache --cache-location ./.cache/eslint/ --fix",
|
||||
"prepublishOnly": "pnpm run build"
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"extends": "../../.eslintrc.json"
|
||||
}
|
|
@ -0,0 +1,65 @@
|
|||
<h1 align="center">setup-brew</h1>
|
||||
<p>
|
||||
<img alt="Version" src="https://img.shields.io/badge/version-1.0.0-blue.svg?cacheSeconds=2592000" />
|
||||
<img src="https://img.shields.io/badge/node-%3E%3D12-blue.svg" />
|
||||
<a href="#" target="_blank">
|
||||
<img alt="License: Apache--2.0" src="https://img.shields.io/badge/License-Apache--2.0-yellow.svg" />
|
||||
</a>
|
||||
</p>
|
||||
|
||||
> Setup brew and brew packages
|
||||
|
||||
## Install
|
||||
|
||||
```sh
|
||||
npm install --save setup-brew
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
<!-- INSERT GENERATED DOCS START -->
|
||||
|
||||
### `InstallationInfo` (type)
|
||||
|
||||
The information about an installation result
|
||||
|
||||
### `SetupBrewOptions` (type)
|
||||
|
||||
### `setupBrew` (function)
|
||||
|
||||
**Parameters:**
|
||||
|
||||
- options (`SetupBrewOptions`)
|
||||
|
||||
**returns:** Promise<InstallationInfo>
|
||||
|
||||
### `getBrewBinDir` (function)
|
||||
|
||||
Get the path where brew is installed
|
||||
|
||||
**returns:** "/opt/homebrew/bin/" | "/usr/local/bin/" | "/home/linuxbrew/.linuxbrew/bin/"
|
||||
|
||||
### `BrewPackOptions` (type)
|
||||
|
||||
### `installBrewPack` (function)
|
||||
|
||||
A function that installs a package using brew
|
||||
|
||||
**Parameters:**
|
||||
|
||||
- name (`string`)
|
||||
- version (`string`)
|
||||
- givenOptions (`BrewPackOptions`)
|
||||
|
||||
**returns:** Promise<InstallationInfo>
|
||||
|
||||
<!-- INSERT GENERATED DOCS END -->
|
||||
|
||||
## 🤝 Contributing
|
||||
|
||||
You can sponsor my work here:
|
||||
|
||||
https://github.com/sponsors/aminya
|
||||
|
||||
Pull requests, issues and feature requests are welcome.
|
||||
See the [Contributing guide](https://github.com/aminya/setup-cpp/blob/master/CONTRIBUTING.md).
|
|
@ -0,0 +1,45 @@
|
|||
import { join } from "path"
|
||||
import spawn from "cross-spawn"
|
||||
import { pathExists } from "path-exists"
|
||||
import { addExeExt } from "patha"
|
||||
import which from "which"
|
||||
import { setupBrew } from "../src/index.js"
|
||||
|
||||
jest.setTimeout(300000)
|
||||
describe("setup-brew", () => {
|
||||
if (process.platform === "win32") {
|
||||
it.skip("should setup brew", () => {})
|
||||
return
|
||||
}
|
||||
it("should setup brew", async () => {
|
||||
const installInfo = await setupBrew()
|
||||
await testBin("brew", ["--version"], installInfo?.binDir)
|
||||
})
|
||||
})
|
||||
|
||||
async function testBin(
|
||||
name: string,
|
||||
args: string[] | null = ["--version"],
|
||||
binDir: string | undefined = undefined,
|
||||
) {
|
||||
try {
|
||||
let bin = name
|
||||
if (typeof binDir === "string") {
|
||||
console.log(`Testing the existence of ${binDir}`)
|
||||
expect(binDir).toBeDefined()
|
||||
expect(binDir).not.toHaveLength(0)
|
||||
expect(await pathExists(binDir)).toBeTruthy()
|
||||
bin = join(binDir, addExeExt(name))
|
||||
}
|
||||
|
||||
if (args !== null) {
|
||||
console.log(`Running ${bin} ${args.join(" ")}`)
|
||||
const { status } = spawn.sync(bin, args, { stdio: "inherit" })
|
||||
expect(status).toBe(0)
|
||||
}
|
||||
|
||||
expect((await which(name, { nothrow: true }))?.includes(bin))
|
||||
} catch (err) {
|
||||
throw new Error(`Failed to test bin ${name}: ${err}`)
|
||||
}
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"extends": "../tsconfig.json",
|
||||
"include": ["**/*.ts"]
|
||||
}
|
|
@ -0,0 +1,51 @@
|
|||
{
|
||||
"name": "setup-brew",
|
||||
"version": "1.0.0",
|
||||
"description": "Setup brew and brew packages",
|
||||
"repository": "https://github.com/aminya/setup-cpp",
|
||||
"homepage": "https://github.com/aminya/setup-cpp/tree/master/packages/setup-brew",
|
||||
"license": "Apache-2.0",
|
||||
"author": "Amin Yahyaabadi",
|
||||
"main": "./dist/index.js",
|
||||
"source": "./src/index.ts",
|
||||
"scripts": {
|
||||
"build": "tsc --pretty",
|
||||
"dev": "tsc --watch --pretty",
|
||||
"lint.tsc": "tsc --noEmit --pretty",
|
||||
"lint.eslint": "eslint **/*.{ts,tsx,js,jsx,cjs,mjs,json,yaml} --no-error-on-unmatched-pattern --cache --cache-location ./.cache/eslint/ --fix",
|
||||
"prepublishOnly": "pnpm run build"
|
||||
},
|
||||
"dependencies": {
|
||||
"@types/node": "^12",
|
||||
"ci-log": "workspace:*",
|
||||
"envosman": "workspace:*",
|
||||
"which": "4.0.0",
|
||||
"execa": "^7.2.0",
|
||||
"setup-apt": "workspace:*",
|
||||
"node-downloader-helper": "2.1.9"
|
||||
},
|
||||
"devDependencies": {
|
||||
"path-exists": "5.0.0",
|
||||
"patha": "0.4.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
"keywords": [
|
||||
"setup",
|
||||
"brew",
|
||||
"install",
|
||||
"brew-install",
|
||||
"cask",
|
||||
"formula",
|
||||
"package",
|
||||
"setup-brew",
|
||||
"repositories",
|
||||
"macos",
|
||||
"homebrew",
|
||||
"linuxbrew",
|
||||
"osx",
|
||||
"linux",
|
||||
"ubuntu"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
/**
|
||||
* The information about an installation result
|
||||
*/
|
||||
|
||||
export type InstallationInfo = {
|
||||
/** The install dir of the package (Defaults to `undefined`) */
|
||||
installDir?: string
|
||||
/** The bin dir of the package (Defaults to `/usr/bin`) */
|
||||
binDir: string
|
||||
/** The bin path of the package (Defaults to `undefined`) */
|
||||
bin?: string
|
||||
}
|
|
@ -0,0 +1,2 @@
|
|||
export * from "./install-pack.js"
|
||||
export * from "./install.js"
|
|
@ -1,14 +1,14 @@
|
|||
import { join } from "path"
|
||||
import { info } from "ci-log"
|
||||
/* eslint-disable require-atomic-updates */
|
||||
import { info } from "@actions/core"
|
||||
import { execaSync } from "execa"
|
||||
import { join } from "patha"
|
||||
import which from "which"
|
||||
import { getBrewBinDir, setupBrew } from "../../brew/brew.js"
|
||||
import type { InstallationInfo } from "./setupBin.js"
|
||||
import type { InstallationInfo } from "./InstallationInfo.js"
|
||||
import { getBrewBinDir, setupBrew } from "./install.js"
|
||||
|
||||
let hasBrew = false
|
||||
|
||||
type BrewPackOptions = {
|
||||
export type BrewPackOptions = {
|
||||
/** Whether to overwrite the package if it already exists */
|
||||
overwrite?: boolean
|
||||
/** Whether to install the package as a cask */
|
||||
|
@ -18,7 +18,7 @@ type BrewPackOptions = {
|
|||
}
|
||||
|
||||
/** A function that installs a package using brew */
|
||||
export async function setupBrewPack(
|
||||
export async function installBrewPack(
|
||||
name: string,
|
||||
version?: string,
|
||||
givenOptions: BrewPackOptions = {},
|
||||
|
@ -33,7 +33,7 @@ export async function setupBrewPack(
|
|||
info(`Installing ${name} ${version ?? ""} via brew`)
|
||||
|
||||
if (!hasBrew || which.sync("brew", { nothrow: true }) === null) {
|
||||
await setupBrew("", "", process.arch)
|
||||
await setupBrew()
|
||||
hasBrew = true
|
||||
}
|
||||
|
|
@ -1,17 +1,27 @@
|
|||
import { tmpdir } from "os"
|
||||
import { addPath } from "envosman"
|
||||
import { dirname } from "path"
|
||||
import { type AddPathOptions, addPath } from "envosman"
|
||||
import { execaSync } from "execa"
|
||||
import { DownloaderHelper } from "node-downloader-helper"
|
||||
import { dirname } from "patha"
|
||||
import { installAptPack } from "setup-apt"
|
||||
import which from "which"
|
||||
import { rcOptions } from "../cli-options.js"
|
||||
import type { InstallationInfo } from "./InstallationInfo.js"
|
||||
|
||||
/* eslint-disable require-atomic-updates */
|
||||
let binDir: string | undefined
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
export async function setupBrew(_version: string, _setupDir: string, _arch: string) {
|
||||
export type SetupBrewOptions = {
|
||||
/** Options for adding the brew path to the rc file */
|
||||
rcOptions?: AddPathOptions
|
||||
/** (Unsupported option) The version of brew to install */
|
||||
version?: never
|
||||
/** (Unsupported option) The directory where brew should be installed */
|
||||
setupDir?: never
|
||||
/** (Unsupported option) The architecture of the system */
|
||||
arch?: never
|
||||
}
|
||||
|
||||
export async function setupBrew(options: SetupBrewOptions = {}): Promise<InstallationInfo | undefined> {
|
||||
// brew is only available on darwin and linux
|
||||
if (!["darwin", "linux"].includes(process.platform)) {
|
||||
return undefined
|
||||
|
@ -49,7 +59,7 @@ export async function setupBrew(_version: string, _setupDir: string, _arch: stri
|
|||
|
||||
// add the bin directory to the PATH
|
||||
binDir = getBrewBinDir()
|
||||
await addPath(binDir, rcOptions)
|
||||
await addPath(binDir, options.rcOptions)
|
||||
|
||||
return { binDir }
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"extends": "../../tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"outDir": "./dist",
|
||||
"noEmit": false,
|
||||
"allowImportingTsExtensions": false
|
||||
},
|
||||
"include": ["./src"]
|
||||
}
|
|
@ -1,6 +1,8 @@
|
|||
<h1 align="center">untildify-user</h1>
|
||||
<p>
|
||||
<img alt="Version" src="https://img.shields.io/badge/version-1.0.0-blue.svg?cacheSeconds=2592000" />
|
||||
<a href="https://www.npmjs.com/package/untildify-user" target="_blank">
|
||||
<img alt="Version" src="https://img.shields.io/npm/v/untildify-user.svg">
|
||||
</a>
|
||||
<a href="#" target="_blank">
|
||||
<img alt="License: Apache--2.0" src="https://img.shields.io/badge/License-Apache--2.0-yellow.svg" />
|
||||
</a>
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
"source": "./src/index.ts",
|
||||
"scripts": {
|
||||
"build": "tsc --pretty",
|
||||
"dev": "tsc --watch --pretty",
|
||||
"lint.tsc": "tsc --noEmit --pretty",
|
||||
"lint.eslint": "eslint **/*.{ts,tsx,js,jsx,cjs,mjs,json,yaml} --no-error-on-unmatched-pattern --cache --cache-location ./.cache/eslint/ --fix",
|
||||
"prepublishOnly": "pnpm run build"
|
||||
|
|
|
@ -182,6 +182,9 @@ importers:
|
|||
setup-apt:
|
||||
specifier: workspace:*
|
||||
version: link:packages/setup-apt
|
||||
setup-brew:
|
||||
specifier: workspace:*
|
||||
version: link:packages/setup-brew
|
||||
setup-python:
|
||||
specifier: github:aminya/setup-python#a783db655c6e40317e2c0c96f9d162d9c9f4a751
|
||||
version: https://codeload.github.com/aminya/setup-python/tar.gz/a783db655c6e40317e2c0c96f9d162d9c9f4a751(encoding@0.1.13)
|
||||
|
@ -319,6 +322,37 @@ importers:
|
|||
specifier: 4.0.0
|
||||
version: 4.0.0
|
||||
|
||||
packages/setup-brew:
|
||||
dependencies:
|
||||
'@types/node':
|
||||
specifier: ^12
|
||||
version: 12.20.55
|
||||
ci-log:
|
||||
specifier: workspace:*
|
||||
version: link:../ci-log
|
||||
envosman:
|
||||
specifier: workspace:*
|
||||
version: link:../envosman
|
||||
execa:
|
||||
specifier: ^7.2.0
|
||||
version: 7.2.0
|
||||
node-downloader-helper:
|
||||
specifier: 2.1.9
|
||||
version: 2.1.9
|
||||
setup-apt:
|
||||
specifier: workspace:*
|
||||
version: link:../setup-apt
|
||||
which:
|
||||
specifier: 4.0.0
|
||||
version: 4.0.0
|
||||
devDependencies:
|
||||
path-exists:
|
||||
specifier: 5.0.0
|
||||
version: 5.0.0
|
||||
patha:
|
||||
specifier: 0.4.1
|
||||
version: 0.4.1
|
||||
|
||||
packages/untildify-user:
|
||||
dependencies:
|
||||
admina:
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
import { execRootSync } from "admina"
|
||||
import { addAptKeyViaDownload, installAptPack } from "setup-apt"
|
||||
import { installBrewPack } from "setup-brew"
|
||||
import { hasDnf } from "../utils/env/hasDnf.js"
|
||||
import { isArch } from "../utils/env/isArch.js"
|
||||
import { isUbuntu } from "../utils/env/isUbuntu.js"
|
||||
import { setupBrewPack } from "../utils/setup/setupBrewPack.js"
|
||||
import { setupChocoPack } from "../utils/setup/setupChocoPack.js"
|
||||
import { setupDnfPack } from "../utils/setup/setupDnfPack.js"
|
||||
|
||||
|
@ -16,7 +16,7 @@ export async function setupBazel(version: string, _setupDir: string, _arch: stri
|
|||
}
|
||||
case "darwin": {
|
||||
// install bazelisk because it contains both
|
||||
return setupBrewPack("bazelisk", version)
|
||||
return installBrewPack("bazelisk", version)
|
||||
}
|
||||
case "linux": {
|
||||
if (isArch()) {
|
||||
|
|
|
@ -1,14 +0,0 @@
|
|||
import { testBin } from "../../utils/tests/test-helpers.js"
|
||||
import { setupBrew } from "../brew.js"
|
||||
|
||||
jest.setTimeout(300000)
|
||||
describe("setup-brew", () => {
|
||||
if (process.platform === "win32") {
|
||||
it.skip("should setup brew", () => {})
|
||||
return
|
||||
}
|
||||
it("should setup brew", async () => {
|
||||
const installInfo = await setupBrew("", "", process.arch)
|
||||
await testBin("brew", ["--version"], installInfo?.binDir)
|
||||
})
|
||||
})
|
|
@ -1,8 +1,8 @@
|
|||
import { installAptPack } from "setup-apt"
|
||||
import { installBrewPack } from "setup-brew"
|
||||
import { hasDnf } from "../utils/env/hasDnf.js"
|
||||
import { isArch } from "../utils/env/isArch.js"
|
||||
import { isUbuntu } from "../utils/env/isUbuntu.js"
|
||||
import { setupBrewPack } from "../utils/setup/setupBrewPack.js"
|
||||
import { setupChocoPack } from "../utils/setup/setupChocoPack.js"
|
||||
import { setupDnfPack } from "../utils/setup/setupDnfPack.js"
|
||||
import { setupPacmanPack } from "../utils/setup/setupPacmanPack.js"
|
||||
|
@ -14,7 +14,7 @@ export function setupCcache(version: string, _setupDir: string, _arch: string) {
|
|||
return setupChocoPack("ccache", version)
|
||||
}
|
||||
case "darwin": {
|
||||
return setupBrewPack("ccache", version)
|
||||
return installBrewPack("ccache", version)
|
||||
}
|
||||
case "linux": {
|
||||
if (isArch()) {
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
import { addPath } from "envosman"
|
||||
import { installAptPack } from "setup-apt"
|
||||
import { installBrewPack } from "setup-brew"
|
||||
import { rcOptions } from "../cli-options.js"
|
||||
import { hasDnf } from "../utils/env/hasDnf.js"
|
||||
import { isArch } from "../utils/env/isArch.js"
|
||||
import { isUbuntu } from "../utils/env/isUbuntu.js"
|
||||
import { setupBrewPack } from "../utils/setup/setupBrewPack.js"
|
||||
import { setupChocoPack } from "../utils/setup/setupChocoPack.js"
|
||||
import { setupDnfPack } from "../utils/setup/setupDnfPack.js"
|
||||
import { setupPacmanPack } from "../utils/setup/setupPacmanPack.js"
|
||||
|
@ -18,7 +18,7 @@ export async function setupCppcheck(version: string | undefined, _setupDir: stri
|
|||
return { binDir }
|
||||
}
|
||||
case "darwin": {
|
||||
return setupBrewPack("cppcheck", version)
|
||||
return installBrewPack("cppcheck", version)
|
||||
}
|
||||
case "linux": {
|
||||
if (isArch()) {
|
||||
|
|
|
@ -2,9 +2,9 @@ import { info, notice } from "ci-log"
|
|||
import { addPath } from "envosman"
|
||||
import { addExeExt, join } from "patha"
|
||||
import { installAptPack } from "setup-apt"
|
||||
import { installBrewPack } from "setup-brew"
|
||||
import { setupGraphviz } from "../graphviz/graphviz.js"
|
||||
import { type InstallationInfo, type PackageInfo, setupBin } from "../utils/setup/setupBin.js"
|
||||
import { setupBrewPack } from "../utils/setup/setupBrewPack.js"
|
||||
import { setupChocoPack } from "../utils/setup/setupChocoPack.js"
|
||||
import { setupPacmanPack } from "../utils/setup/setupPacmanPack.js"
|
||||
import { getVersion } from "../versions/versions.js"
|
||||
|
@ -77,7 +77,7 @@ export async function setupDoxygen(version: string, setupDir: string, arch: stri
|
|||
// try {
|
||||
// installationInfo = await setupBin("doxygen", version, getDoxygenPackageInfo, setupDir, arch)
|
||||
// } catch {
|
||||
const installationInfo = await setupBrewPack("doxygen", undefined)
|
||||
const installationInfo = await installBrewPack("doxygen", undefined)
|
||||
// }
|
||||
|
||||
// only install graphviz if the macOS version is greater than 11
|
||||
|
|
|
@ -8,6 +8,7 @@ import { addExeExt, join } from "patha"
|
|||
import semverCoerce from "semver/functions/coerce"
|
||||
import semverMajor from "semver/functions/major"
|
||||
import { addUpdateAlternativesToRc, installAptPack } from "setup-apt"
|
||||
import { installBrewPack } from "setup-brew"
|
||||
import { rcOptions } from "../cli-options.js"
|
||||
import { setupMacOSSDK } from "../macos-sdk/macos-sdk.js"
|
||||
import { hasDnf } from "../utils/env/hasDnf.js"
|
||||
|
@ -15,7 +16,6 @@ import { isArch } from "../utils/env/isArch.js"
|
|||
import { isUbuntu } from "../utils/env/isUbuntu.js"
|
||||
import { extract7Zip } from "../utils/setup/extract.js"
|
||||
import { type InstallationInfo, type PackageInfo, setupBin } from "../utils/setup/setupBin.js"
|
||||
import { setupBrewPack } from "../utils/setup/setupBrewPack.js"
|
||||
import { setupChocoPack } from "../utils/setup/setupChocoPack.js"
|
||||
import { setupDnfPack } from "../utils/setup/setupDnfPack.js"
|
||||
import { setupPacmanPack } from "../utils/setup/setupPacmanPack.js"
|
||||
|
@ -96,7 +96,7 @@ export async function setupGcc(version: string, setupDir: string, arch: string,
|
|||
break
|
||||
}
|
||||
case "darwin": {
|
||||
installationInfo = await setupBrewPack("gcc", version)
|
||||
installationInfo = await installBrewPack("gcc", version)
|
||||
break
|
||||
}
|
||||
case "linux": {
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
import { addPath } from "envosman"
|
||||
import { installAptPack } from "setup-apt"
|
||||
import { installBrewPack } from "setup-brew"
|
||||
import { rcOptions } from "../cli-options.js"
|
||||
import { hasDnf } from "../utils/env/hasDnf.js"
|
||||
import { isArch } from "../utils/env/isArch.js"
|
||||
import { isUbuntu } from "../utils/env/isUbuntu.js"
|
||||
import type { InstallationInfo } from "../utils/setup/setupBin.js"
|
||||
import { setupBrewPack } from "../utils/setup/setupBrewPack.js"
|
||||
import { setupChocoPack } from "../utils/setup/setupChocoPack.js"
|
||||
import { setupDnfPack } from "../utils/setup/setupDnfPack.js"
|
||||
import { setupPacmanPack } from "../utils/setup/setupPacmanPack.js"
|
||||
|
@ -18,7 +18,7 @@ export async function setupGraphviz(version: string, _setupDir: string, _arch: s
|
|||
return activateGraphviz()
|
||||
}
|
||||
case "darwin": {
|
||||
return setupBrewPack("graphviz", version)
|
||||
return installBrewPack("graphviz", version)
|
||||
}
|
||||
case "linux": {
|
||||
if (isArch()) {
|
||||
|
|
|
@ -2,7 +2,8 @@ import { endGroup, startGroup } from "@actions/core"
|
|||
import { error } from "ci-log"
|
||||
import pTimeout from "p-timeout"
|
||||
import { join } from "patha"
|
||||
import { getSuccessMessage } from "./cli-options.js"
|
||||
import { setupBrew } from "setup-brew"
|
||||
import { getSuccessMessage, rcOptions } from "./cli-options.js"
|
||||
import { type ToolName, setups } from "./tool.js"
|
||||
import type { InstallationInfo } from "./utils/setup/setupBin.js"
|
||||
import { setupVCVarsall } from "./vcvarsall/vcvarsall.js"
|
||||
|
@ -54,15 +55,20 @@ async function installToolImpl(
|
|||
if (tool === "vcvarsall") {
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
await setupVCVarsall(getVersion(tool, version, osVersion), undefined, arch, undefined, undefined, false, false)
|
||||
} else if (tool === "brew") {
|
||||
// eslint-disable no-await-in-loop
|
||||
installationInfo = await setupBrew({ rcOptions })
|
||||
} else {
|
||||
// get the setup function
|
||||
const setupFunction = setups[tool]
|
||||
|
||||
// the tool installation directory (for the functions that ue it)
|
||||
const setupDir = join(setupCppDir, hasLLVM ? "llvm" : tool)
|
||||
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
installationInfo = await setupFunction(getVersion(tool, version, osVersion), setupDir, arch)
|
||||
const setupVersion = getVersion(tool, version, osVersion)
|
||||
|
||||
// get the setup function
|
||||
const setupFunction = setups[tool]
|
||||
|
||||
// eslint-disable no-await-in-loop
|
||||
installationInfo = await setupFunction(setupVersion, setupDir, arch)
|
||||
}
|
||||
// preparing a report string
|
||||
successMessages.push(getSuccessMessage(tool, installationInfo))
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
import { addPath } from "envosman"
|
||||
import { installAptPack } from "setup-apt"
|
||||
import { installBrewPack } from "setup-brew"
|
||||
import { rcOptions } from "../cli-options.js"
|
||||
import { hasDnf } from "../utils/env/hasDnf.js"
|
||||
import { isArch } from "../utils/env/isArch.js"
|
||||
import { isUbuntu } from "../utils/env/isUbuntu.js"
|
||||
import { setupBrewPack } from "../utils/setup/setupBrewPack.js"
|
||||
import { setupChocoPack } from "../utils/setup/setupChocoPack.js"
|
||||
import { setupDnfPack } from "../utils/setup/setupDnfPack.js"
|
||||
import { setupPacmanPack } from "../utils/setup/setupPacmanPack.js"
|
||||
|
@ -16,7 +16,7 @@ export async function setupMake(version: string, _setupDir: string, _arch: strin
|
|||
return setupChocoPack("make", version)
|
||||
}
|
||||
case "darwin": {
|
||||
await setupBrewPack("make", version)
|
||||
await installBrewPack("make", version)
|
||||
await addPath("/usr/local/opt/make/libexec/gnubin", rcOptions)
|
||||
return { binDir: "/usr/local/opt/make/libexec/gnubin" }
|
||||
}
|
||||
|
|
|
@ -3,13 +3,13 @@ import { error } from "ci-log"
|
|||
import { addPath } from "envosman"
|
||||
import { addExeExt } from "patha"
|
||||
import { installAptPack } from "setup-apt"
|
||||
import { installBrewPack } from "setup-brew"
|
||||
import { rcOptions } from "../cli-options.js"
|
||||
import { hasDnf } from "../utils/env/hasDnf.js"
|
||||
import { isArch } from "../utils/env/isArch.js"
|
||||
import { isUbuntu } from "../utils/env/isUbuntu.js"
|
||||
import { ubuntuVersion } from "../utils/env/ubuntu_version.js"
|
||||
import { type PackageInfo, setupBin } from "../utils/setup/setupBin.js"
|
||||
import { setupBrewPack } from "../utils/setup/setupBrewPack.js"
|
||||
import { setupChocoPack } from "../utils/setup/setupChocoPack.js"
|
||||
import { setupDnfPack } from "../utils/setup/setupDnfPack.js"
|
||||
import { setupPacmanPack } from "../utils/setup/setupPacmanPack.js"
|
||||
|
@ -79,7 +79,7 @@ export async function setupPowershellSystem(version: string | undefined, _setupD
|
|||
return { binDir }
|
||||
}
|
||||
case "darwin": {
|
||||
return setupBrewPack("powershell", version, { cask: true, overwrite: false })
|
||||
return installBrewPack("powershell", version, { cask: true, overwrite: false })
|
||||
}
|
||||
case "linux": {
|
||||
if (isArch()) {
|
||||
|
|
|
@ -11,13 +11,13 @@ import memoize from "micro-memoize"
|
|||
import { pathExists } from "path-exists"
|
||||
import { addExeExt, dirname, join } from "patha"
|
||||
import { installAptPack } from "setup-apt"
|
||||
import { installBrewPack } from "setup-brew"
|
||||
import which from "which"
|
||||
import { rcOptions } from "../cli-options.js"
|
||||
import { hasDnf } from "../utils/env/hasDnf.js"
|
||||
import { isArch } from "../utils/env/isArch.js"
|
||||
import { isUbuntu } from "../utils/env/isUbuntu.js"
|
||||
import type { InstallationInfo } from "../utils/setup/setupBin.js"
|
||||
import { setupBrewPack } from "../utils/setup/setupBrewPack.js"
|
||||
import { setupChocoPack } from "../utils/setup/setupChocoPack.js"
|
||||
import { setupDnfPack } from "../utils/setup/setupDnfPack.js"
|
||||
import { setupPacmanPack } from "../utils/setup/setupPacmanPack.js"
|
||||
|
@ -140,7 +140,7 @@ async function setupPythonSystem(setupDir: string, version: string) {
|
|||
break
|
||||
}
|
||||
case "darwin": {
|
||||
installInfo = await setupBrewPack("python3", version)
|
||||
installInfo = await installBrewPack("python3", version)
|
||||
// add the python and pip binaries to the path
|
||||
const brewPythonPrefix: {
|
||||
stdout: string
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { setupBrewPack } from "../utils/setup/setupBrewPack.js"
|
||||
import { installBrewPack } from "setup-brew"
|
||||
import { setupChocoPack } from "../utils/setup/setupChocoPack.js"
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
|
@ -9,7 +9,7 @@ export function setupSccache(version: string, _setupDir: string, _arch: string)
|
|||
}
|
||||
case "linux":
|
||||
case "darwin": {
|
||||
return setupBrewPack("sccache", version)
|
||||
return installBrewPack("sccache", version)
|
||||
}
|
||||
default: {
|
||||
throw new Error("Unsupported platform")
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
import { installAptPack } from "setup-apt"
|
||||
import { installBrewPack } from "setup-brew"
|
||||
import { hasDnf } from "../utils/env/hasDnf.js"
|
||||
import { isArch } from "../utils/env/isArch.js"
|
||||
import { isUbuntu } from "../utils/env/isUbuntu.js"
|
||||
import { setupBrewPack } from "../utils/setup/setupBrewPack.js"
|
||||
import { setupChocoPack } from "../utils/setup/setupChocoPack.js"
|
||||
import { setupDnfPack } from "../utils/setup/setupDnfPack.js"
|
||||
import { setupPacmanPack } from "../utils/setup/setupPacmanPack.js"
|
||||
|
@ -14,7 +14,7 @@ export function setupSevenZip(version: string, _setupDir: string, _arch: string)
|
|||
return setupChocoPack("7zip", version)
|
||||
}
|
||||
case "darwin": {
|
||||
return setupBrewPack("p7zip", version)
|
||||
return installBrewPack("p7zip", version)
|
||||
}
|
||||
case "linux": {
|
||||
if (isArch()) {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { setupBrew } from "setup-brew"
|
||||
import { setupBazel } from "./bazel/bazel.js"
|
||||
import { setupBrew } from "./brew/brew.js"
|
||||
import { setupCcache } from "./ccache/ccache.js"
|
||||
import { setupChocolatey } from "./chocolatey/chocolatey.js"
|
||||
import { setupCmake } from "./cmake/cmake.js"
|
||||
|
@ -65,5 +65,5 @@ export const tools = Object.keys(setups) as Array<ToolName>
|
|||
/** The possible inputs to the program */
|
||||
export type Inputs = keyof typeof setups | "compiler" | "architecture" | "timeout"
|
||||
|
||||
/** an array of possible inputs */
|
||||
/** An array of possible inputs */
|
||||
export const inputs: Array<Inputs> = ["compiler", "architecture", "timeout", ...tools]
|
||||
|
|
|
@ -6,6 +6,10 @@
|
|||
"dependsOn": ["^build"],
|
||||
"outputs": ["dist/"]
|
||||
},
|
||||
"dev": {
|
||||
"persistent": true,
|
||||
"cache": false
|
||||
},
|
||||
"lint.tsc": {
|
||||
"dependsOn": ["build", "^lint.tsc"]
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue