7 Commits

Author SHA1 Message Date
Renée Kooi
59cbb946fb 1.2.1 2020-02-01 20:50:02 +01:00
Renée Kooi
917722556b ci: switch back to default 2020-02-01 19:11:05 +01:00
Renée Kooi
bd0d3f0ae3 Actually support downloading Zig version: master (#5)
* Fix extracted folder name

* ci: also test with zig master

* fix lint

* fail on error

* debug

* other debug 😂

* console.log

* lol apply the change

* yadda

* wtf

* fuck

* ????

* xauuaoethosnuhtnohqsn

* siiiiiigh

* just use stderr lol whatever

* ditch debugging

* use test
2020-02-01 19:01:44 +01:00
Renée Kooi
25e170b42c 1.2.0 2020-01-23 10:57:44 +01:00
Renée Kooi
b1d893be2f run build script in npm prepare step 2020-01-23 10:56:44 +01:00
Renée Kooi
6b8f485f9f support version: master to use development zig 2020-01-23 10:55:01 +01:00
Renée Kooi
876f6a1254 npx fixpack 2019-10-09 12:34:19 +02:00
8 changed files with 61 additions and 44 deletions

View File

@@ -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

View File

@@ -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.

View File

@@ -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
View File

@@ -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)
})
/***/ }),

View File

@@ -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)
})

View File

@@ -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"

View File

@@ -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);
}

View File

@@ -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);
}