mirror of
https://github.com/BloopAI/setup-zig.git
synced 2026-08-24 12:28:35 +00:00
Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
59cbb946fb | ||
|
|
917722556b | ||
|
|
bd0d3f0ae3 | ||
|
|
25e170b42c | ||
|
|
b1d893be2f | ||
|
|
6b8f485f9f | ||
|
|
876f6a1254 |
5
.github/workflows/ci.yml
vendored
5
.github/workflows/ci.yml
vendored
@@ -15,11 +15,12 @@ jobs:
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-latest, macos-latest, windows-latest]
|
||||
zig-version: [0.5.0, master]
|
||||
runs-on: ${{matrix.os}}
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- uses: goto-bus-stop/setup-zig@default
|
||||
with:
|
||||
version: 0.5.0
|
||||
- run: zig run src/main.zig
|
||||
version: ${{matrix.zig-version}}
|
||||
- run: zig build test
|
||||
working-directory: test
|
||||
|
||||
@@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file.
|
||||
|
||||
This project adheres to [Semantic Versioning](http://semver.org/).
|
||||
|
||||
## 1.2.1
|
||||
* Make `version: master` actually work.
|
||||
|
||||
## 1.2.0
|
||||
* Allow setting `version: master` to get the latest build from the development branch.
|
||||
|
||||
## 1.1.0
|
||||
* Load the zig binaries from tool cache if available.
|
||||
* Use the ziglang.org download index instead of downloading from Github Releases.
|
||||
|
||||
@@ -34,6 +34,13 @@ Optionally set a Zig version:
|
||||
version: 0.4.0 # The default is 0.5.0
|
||||
```
|
||||
|
||||
To use the nightly builds, set:
|
||||
```yaml
|
||||
- uses: goto-bus-stop/setup-zig@v1.0.0
|
||||
with:
|
||||
version: master
|
||||
```
|
||||
|
||||
If you are running Zig on Windows machines, you need to make sure that your .zig files use \n line endings and not \r\n. The `actions/checkout` action auto-converts line endings to \r\n, so add a `.gitattributes` file:
|
||||
```
|
||||
*.zig text eol=lf
|
||||
|
||||
26
dist/index.js
vendored
26
dist/index.js
vendored
@@ -1125,32 +1125,32 @@ async function downloadZig (version) {
|
||||
|
||||
const index = await getJSON({ url: 'https://ziglang.org/download/index.json' })
|
||||
|
||||
const availableVersions = Object.keys(index).filter((v) => semver.valid(v))
|
||||
const useVersion = semver.maxSatisfying(availableVersions, version)
|
||||
const availableVersions = Object.keys(index)
|
||||
const useVersion = semver.valid(version)
|
||||
? semver.maxSatisfying(availableVersions.filter((v) => semver.valid(v)), version)
|
||||
: null
|
||||
|
||||
const meta = index[useVersion || version]
|
||||
if (!meta || !meta[host]) {
|
||||
throw new Error(`Could not find version ${version} for platform ${host}`)
|
||||
}
|
||||
|
||||
const hostVariantName = {
|
||||
linux: 'linux-x86_64',
|
||||
darwin: 'macos-x86_64',
|
||||
win32: 'windows-x86_64'
|
||||
}[os.platform()]
|
||||
const variantName = `zig-${hostVariantName}-${version}`
|
||||
const variantName = path.basename(meta[host].tarball).replace(`.${ext}`, '')
|
||||
|
||||
const downloadPath = await cache.downloadTool(meta[host].tarball)
|
||||
const zigPath = ext === 'zip'
|
||||
? await cache.extractZip(downloadPath)
|
||||
: await cache.extractTar(downloadPath, undefined, 'x')
|
||||
|
||||
const binPath = path.join(zigPath, variantName)
|
||||
return cache.cacheDir(binPath, 'zig', version)
|
||||
const cachePath = await cache.cacheDir(binPath, 'zig', variantName)
|
||||
|
||||
return cachePath
|
||||
}
|
||||
|
||||
async function main () {
|
||||
const version = actions.getInput('version') || '0.5.0'
|
||||
if (semver.lt(version, '0.3.0')) {
|
||||
if (semver.valid(version) && semver.lt(version, '0.3.0')) {
|
||||
actions.setFailed('This action does not work with Zig 0.1.0 and Zig 0.2.0')
|
||||
return
|
||||
}
|
||||
@@ -1164,7 +1164,11 @@ async function main () {
|
||||
actions.addPath(zigPath)
|
||||
}
|
||||
|
||||
main()
|
||||
main().catch((err) => {
|
||||
console.error(err.stack)
|
||||
actions.setFailed(err.message)
|
||||
process.exit(1)
|
||||
})
|
||||
|
||||
|
||||
/***/ }),
|
||||
|
||||
26
index.js
26
index.js
@@ -31,32 +31,32 @@ async function downloadZig (version) {
|
||||
|
||||
const index = await getJSON({ url: 'https://ziglang.org/download/index.json' })
|
||||
|
||||
const availableVersions = Object.keys(index).filter((v) => semver.valid(v))
|
||||
const useVersion = semver.maxSatisfying(availableVersions, version)
|
||||
const availableVersions = Object.keys(index)
|
||||
const useVersion = semver.valid(version)
|
||||
? semver.maxSatisfying(availableVersions.filter((v) => semver.valid(v)), version)
|
||||
: null
|
||||
|
||||
const meta = index[useVersion || version]
|
||||
if (!meta || !meta[host]) {
|
||||
throw new Error(`Could not find version ${version} for platform ${host}`)
|
||||
}
|
||||
|
||||
const hostVariantName = {
|
||||
linux: 'linux-x86_64',
|
||||
darwin: 'macos-x86_64',
|
||||
win32: 'windows-x86_64'
|
||||
}[os.platform()]
|
||||
const variantName = `zig-${hostVariantName}-${version}`
|
||||
const variantName = path.basename(meta[host].tarball).replace(`.${ext}`, '')
|
||||
|
||||
const downloadPath = await cache.downloadTool(meta[host].tarball)
|
||||
const zigPath = ext === 'zip'
|
||||
? await cache.extractZip(downloadPath)
|
||||
: await cache.extractTar(downloadPath, undefined, 'x')
|
||||
|
||||
const binPath = path.join(zigPath, variantName)
|
||||
return cache.cacheDir(binPath, 'zig', version)
|
||||
const cachePath = await cache.cacheDir(binPath, 'zig', variantName)
|
||||
|
||||
return cachePath
|
||||
}
|
||||
|
||||
async function main () {
|
||||
const version = actions.getInput('version') || '0.5.0'
|
||||
if (semver.lt(version, '0.3.0')) {
|
||||
if (semver.valid(version) && semver.lt(version, '0.3.0')) {
|
||||
actions.setFailed('This action does not work with Zig 0.1.0 and Zig 0.2.0')
|
||||
return
|
||||
}
|
||||
@@ -70,4 +70,8 @@ async function main () {
|
||||
actions.addPath(zigPath)
|
||||
}
|
||||
|
||||
main()
|
||||
main().catch((err) => {
|
||||
console.error(err.stack)
|
||||
actions.setFailed(err.message)
|
||||
process.exit(1)
|
||||
})
|
||||
|
||||
16
package.json
16
package.json
@@ -1,11 +1,17 @@
|
||||
{
|
||||
"name": "setup-zig",
|
||||
"description": "Use the zig compiler in your Github Action",
|
||||
"version": "1.1.0",
|
||||
"version": "1.2.1",
|
||||
"author": "Renée Kooi <renee@kooi.me>",
|
||||
"bugs": {
|
||||
"url": "https://github.com/goto-bus-stop/setup-zig/issues"
|
||||
},
|
||||
"dependencies": {
|
||||
"@actions/core": "^1.1.3",
|
||||
"@actions/tool-cache": "^1.1.2",
|
||||
"semver": "^6.3.0",
|
||||
"simple-get": "^3.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@zeit/ncc": "^0.20.5",
|
||||
"standard": "^14.3.1"
|
||||
@@ -24,15 +30,9 @@
|
||||
"url": "https://github.com/goto-bus-stop/setup-zig.git"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "ncc build index.js -o dist",
|
||||
"prepare": "ncc build index.js -o dist",
|
||||
"test": "standard"
|
||||
},
|
||||
"dependencies": {
|
||||
"@actions/core": "^1.1.3",
|
||||
"@actions/tool-cache": "^1.1.2",
|
||||
"semver": "^6.3.0",
|
||||
"simple-get": "^3.1.0"
|
||||
},
|
||||
"standard": {
|
||||
"ignore": [
|
||||
"dist/**/*.js"
|
||||
|
||||
@@ -2,13 +2,9 @@ const Builder = @import("std").build.Builder;
|
||||
|
||||
pub fn build(b: *Builder) void {
|
||||
const mode = b.standardReleaseOptions();
|
||||
const exe = b.addExecutable("test", "src/main.zig");
|
||||
exe.setBuildMode(mode);
|
||||
exe.install();
|
||||
const test_build = b.addTest("src/main.zig");
|
||||
test_build.setBuildMode(mode);
|
||||
|
||||
const run_cmd = exe.run();
|
||||
run_cmd.step.dependOn(b.getInstallStep());
|
||||
|
||||
const run_step = b.step("run", "Run the app");
|
||||
run_step.dependOn(&run_cmd.step);
|
||||
const test_step = b.step("test", "Run the app");
|
||||
test_step.dependOn(&test_build.step);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
const io = @import("std").io;
|
||||
const debug = @import("std").debug;
|
||||
|
||||
pub fn main() anyerror!void {
|
||||
const stdout = try io.getStdOut();
|
||||
try stdout.write("it works!\n");
|
||||
test "it works" {
|
||||
debug.assert(1 == 1);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user