breaks at decompiling

This commit is contained in:
trippjoe 2022-05-29 21:44:40 -04:00
commit 75e203e72e
16 changed files with 323 additions and 189 deletions

View file

@ -2,7 +2,6 @@ import { Octokit } from "@octokit/rest";
import { throttling } from "@octokit/plugin-throttling";
import { retry } from "@octokit/plugin-retry";
import * as fs from "fs";
import * as path from "path";
Octokit.plugin(throttling);
Octokit.plugin(retry);
@ -36,12 +35,58 @@ const octokit = new Octokit({
},
});
let releaseId = process.env.RELEASE_ID;
const { data: releaseData } = await octokit.rest.repos.getRelease({
let tagToSearchFor = process.env.TAG_VALUE.split("refs/tags/")[1];
const { data: recentReleases } = await octokit.rest.repos.listReleases({
owner: "open-goal",
repo: "launcher",
release_id: releaseId,
per_page: 100,
});
// does the tauri action auto take it out of draft?
// gotta test...
let release = undefined;
for (var i = 0; i < recentReleases.length; i++) {
if (recentReleases[i].tag_name == tagToSearchFor) {
release = recentReleases[i];
break;
}
}
if (release === undefined) {
console.log(`Could not find release with tag name: ${tagToSearchFor}`);
process.exit(1);
}
// TODO - no macOS yet
const releaseMeta = {
name: release.tag_name,
notes: "UPDATE",
pub_date: release.created_at,
platforms: {
linux: {
signature: "",
url: `https://github.com/open-goal/launcher/releases/download/${
release.tag_name
}/opengoal-launcher_${tagToSearchFor.replace(
"v",
""
)}_amd64.AppImage.tar.gz`,
},
win64: {
signature: "",
url: `https://github.com/open-goal/launcher/releases/download/${
release.tag_name
}/opengoal-launcher_${tagToSearchFor.replace("v", "")}_x64_en-US.msi.zip`,
},
},
};
fs.writeFileSync(
"./.tauri/latest-release.json",
JSON.stringify(releaseMeta, null, 2)
);
await octokit.rest.repos.updateRelease({
owner: "open-goal",
repo: "launcher",
release_id: release.id,
draft: false,
});

View file

@ -35,7 +35,7 @@ jobs:
if: matrix.platform == 'ubuntu-latest'
run: |
sudo apt-get update
sudo apt-get install -y libgtk-3-dev webkit2gtk-4.0 libappindicator3-dev librsvg2-dev patchelf
sudo apt-get install -y libgtk-3-dev webkit2gtk-4.0 libappindicator3-dev librsvg2-dev libglew2.1 patchelf
- name: install app dependencies and build it
run: |

View file

@ -44,5 +44,5 @@ jobs:
default_author: github_actor
author_name: "OpenGOALBot"
author_email: "OpenGOALBot@users.noreply.github.com"
message: "Bump to version - ${{ steps.version-bump.outputs.new_version }}"
message: "release: bump to version - ${{ steps.version-bump.outputs.new_version }}"
tag: "v${{ steps.version-bump.outputs.new_version }}"

View file

@ -37,7 +37,7 @@ jobs:
if: matrix.platform == 'ubuntu-latest'
run: |
sudo apt-get update
sudo apt-get install -y libgtk-3-dev webkit2gtk-4.0 libappindicator3-dev librsvg2-dev patchelf
sudo apt-get install -y libgtk-3-dev webkit2gtk-4.0 libappindicator3-dev librsvg2-dev libglew2.1 patchelf
- name: install app dependencies
run: |
@ -55,6 +55,10 @@ jobs:
popd
node ./.github/scripts/download-binaries/index.js
- name: prepare release config
run: |
npm run prepare-release-config
- name: prepare resources for build
if: matrix.os == 'windows'
run: |
@ -86,10 +90,46 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAURI_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }}
with:
configPath: "./.tauri/release-config.combined.json"
tagName: "v__VERSION__"
releaseName: "OpenGOAL Launcher v__VERSION__"
releaseBody: "See the assets to download this version and install."
releaseDraft: true # TODO - when we are ready to go live, make them non draft
releaseDraft: true
prerelease: false
# TODO - update a json file in the repo that will allow auto-updating, change the repo to release
update-release-meta:
if: github.repository == 'open-goal/launcher'
needs: publish-tauri
strategy:
fail-fast: false
matrix:
platform: [ubuntu-latest]
runs-on: ${{ matrix.platform }}
steps:
- uses: actions/checkout@v2
with:
token: ${{ secrets.BOT_PAT }}
ref: main
- name: setup node
uses: actions/setup-node@v1
with:
node-version: 16
- name: update release metadata and publish the release
env:
GITHUB_TOKEN: ${{ secrets.BOT_PAT }}
TAG_VALUE: ${{ github.REF }}
run: |
pushd ./.github/scripts/update-release-metadata
npm ci
popd
node ./.github/scripts/update-release-metadata/index.js
- name: commit release metadata change
uses: EndBug/add-and-commit@v8
with:
default_author: github_actor
author_name: "OpenGOALBot"
author_email: "OpenGOALBot@users.noreply.github.com"
message: "release: update release metadata to latest"

1
.tauri/.gitignore vendored Normal file
View file

@ -0,0 +1 @@
release-config.combined.json

View file

@ -0,0 +1,12 @@
{
"tauri": {
"updater": {
"active": true,
"endpoints": [
"https://raw.githubusercontent.com/open-goal/launcher/main/.tauri/latest-release.json"
],
"dialog": true,
"pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IEJGQjRCQzI1N0I4REZBMzIKUldReStvMTdKYnkwditmb2IvK3hJUm9xdjJMMlN2N2tRejlON0djdE03YnhGOHlaTzVwUy9IY2YK"
}
}
}

View file

@ -28,3 +28,16 @@ We are using Tauri to build a native app, but still with simple Web technology.
- `npm run tauri dev`
This builds the app with Tauri (this is a rust compilation, the first run will take a while) and the frontend is served via Vite -- a nice web server that will hot-reload any changes as you develop.
## Release Process
```mermaid
sequenceDiagram
jak-project->>jak-project: New tag is manually cut and built
jak-project->>launcher: Repository Dispatch to start release
launcher->>launcher: Alternatively, manually triggered release here
launcher->>launcher: Build App for all supported platforms
launcher->>launcher: Publish release and update latest release metadata file in repo
website->>GitHub API: Website will display latest release
app->>launcher: Detect new version and will prompt the user to update
```

229
package-lock.json generated
View file

@ -13,7 +13,7 @@
},
"devDependencies": {
"@sveltejs/vite-plugin-svelte": "^1.0.0-next.30",
"@tauri-apps/cli": "^1.0.0-rc.8",
"@tauri-apps/cli": "^1.0.0-rc.9",
"@tauri-apps/tauricon": "github:tauri-apps/tauricon",
"execa": "^6.1.0",
"prettier": "2.6.2",
@ -594,11 +594,11 @@
}
},
"node_modules/@tauri-apps/api": {
"version": "1.0.0-rc.3",
"resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-1.0.0-rc.3.tgz",
"integrity": "sha512-/ZbyBjuUoU6mYm8RzibIUvVuJ31ZwYA2+fTRl7FF4LVFhzCVJ1YI1BS5ohGb2GsLNmLpfeo7kDHaIhV2uaOchQ==",
"version": "1.0.0-rc.4",
"resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-1.0.0-rc.4.tgz",
"integrity": "sha512-1HaUsx8+TzFHDoQ+Mmd6RWaMsPyZlurQHgACDt+il5e/ui6pDkumVXaS92SnY5XOcS4gBC0BkgjVfkWgcm/Oww==",
"dependencies": {
"type-fest": "2.12.1"
"type-fest": "2.12.2"
},
"engines": {
"node": ">= 12.13.0",
@ -611,9 +611,9 @@
}
},
"node_modules/@tauri-apps/cli": {
"version": "1.0.0-rc.8",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli/-/cli-1.0.0-rc.8.tgz",
"integrity": "sha512-FWpNwbgGMPgDb41oO7wdBhBsBE6FMG9yHKbtbrkJ/8d/hWcT6e3UUTfFL9cR2VGdp1pdWlul5+BKH0PTf8rB9w==",
"version": "1.0.0-rc.9",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli/-/cli-1.0.0-rc.9.tgz",
"integrity": "sha512-j+HZ65wdfFrMwisYeQpdZnldONevBPHjAo9v9Impf0irUU2UR5nwyvyArHTaWCvNeqEs+YV4XXHsfm2xVpnaug==",
"dev": true,
"bin": {
"tauri": "tauri.js"
@ -626,21 +626,21 @@
"url": "https://opencollective.com/tauri"
},
"optionalDependencies": {
"@tauri-apps/cli-darwin-arm64": "1.0.0-rc.8",
"@tauri-apps/cli-darwin-x64": "1.0.0-rc.8",
"@tauri-apps/cli-linux-arm-gnueabihf": "1.0.0-rc.8",
"@tauri-apps/cli-linux-arm64-gnu": "1.0.0-rc.8",
"@tauri-apps/cli-linux-arm64-musl": "1.0.0-rc.8",
"@tauri-apps/cli-linux-x64-gnu": "1.0.0-rc.8",
"@tauri-apps/cli-linux-x64-musl": "1.0.0-rc.8",
"@tauri-apps/cli-win32-ia32-msvc": "1.0.0-rc.8",
"@tauri-apps/cli-win32-x64-msvc": "1.0.0-rc.8"
"@tauri-apps/cli-darwin-arm64": "1.0.0-rc.9",
"@tauri-apps/cli-darwin-x64": "1.0.0-rc.9",
"@tauri-apps/cli-linux-arm-gnueabihf": "1.0.0-rc.9",
"@tauri-apps/cli-linux-arm64-gnu": "1.0.0-rc.9",
"@tauri-apps/cli-linux-arm64-musl": "1.0.0-rc.9",
"@tauri-apps/cli-linux-x64-gnu": "1.0.0-rc.9",
"@tauri-apps/cli-linux-x64-musl": "1.0.0-rc.9",
"@tauri-apps/cli-win32-ia32-msvc": "1.0.0-rc.9",
"@tauri-apps/cli-win32-x64-msvc": "1.0.0-rc.9"
}
},
"node_modules/@tauri-apps/cli-darwin-arm64": {
"version": "1.0.0-rc.8",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-1.0.0-rc.8.tgz",
"integrity": "sha512-sbV4fkd3YBlX0gEBldEVmN/NbBdHzrn8wCRRiFaNBocDWC6Ji6DNvpp1Vy1xgY0RgtGOisGD+3+HelmKP4Mh/A==",
"version": "1.0.0-rc.9",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-1.0.0-rc.9.tgz",
"integrity": "sha512-cpcSRyVOh3n5GsCdKtVQpLJ36yx7h+KY868l7KhPnM5EL1cQbFwYzD/VHlzFvfrpS19YvPBB/AHln4rll5iWvw==",
"cpu": [
"arm64"
],
@ -654,9 +654,9 @@
}
},
"node_modules/@tauri-apps/cli-darwin-x64": {
"version": "1.0.0-rc.8",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-1.0.0-rc.8.tgz",
"integrity": "sha512-VmuYbBZKKal/YxSTbzHTaM04C9zUlTXq7ePoXc1PRAa/Xafo16N37OGzhzBlsKHrvh6BtPp9ZWk5UhHIDiJBsw==",
"version": "1.0.0-rc.9",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-1.0.0-rc.9.tgz",
"integrity": "sha512-ku8QpMNrfqyCk2adLdVB+zzaCb7T0/RgVvaqEZqK54WW4blUxkeKHbKqZ/SKRdxTkghHbgJIoBtlk1A5GUbAwg==",
"cpu": [
"x64"
],
@ -670,9 +670,9 @@
}
},
"node_modules/@tauri-apps/cli-linux-arm-gnueabihf": {
"version": "1.0.0-rc.8",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-1.0.0-rc.8.tgz",
"integrity": "sha512-2VKkS1c2pK56sgtGxtsm9nKKWefG7dgPnynTuCoEngkgQfNIlZ1ns/eAIZpBmwhvOMOw2OesKvK9ZQo0/lE/IA==",
"version": "1.0.0-rc.9",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-1.0.0-rc.9.tgz",
"integrity": "sha512-Qlwm4eWo0uCeL3kmowfaLghPehYTYvnM4fH6cRZndzs6/abqsFdghmEmhP5mn34/RAnHXAUANItqlgk6L7C4iw==",
"cpu": [
"arm"
],
@ -686,9 +686,9 @@
}
},
"node_modules/@tauri-apps/cli-linux-arm64-gnu": {
"version": "1.0.0-rc.8",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-1.0.0-rc.8.tgz",
"integrity": "sha512-jykbrTJyx0uJhhL/3PPYGx5ETqEzacJ3YChnHzVClSzPkrdoGC61/xY9dMD9ZFJsLMJkV4VJj8sGRd1OPKCa/w==",
"version": "1.0.0-rc.9",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-1.0.0-rc.9.tgz",
"integrity": "sha512-Rr4S902dYjRnDCu141f5Cz3JxwKxX/ax7LiMhSifQu5o2wSiezmZ20VRHBwW1UuZxvGV+hxTuZVnfD6NKQdWdA==",
"cpu": [
"arm64"
],
@ -702,9 +702,9 @@
}
},
"node_modules/@tauri-apps/cli-linux-arm64-musl": {
"version": "1.0.0-rc.8",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.0.0-rc.8.tgz",
"integrity": "sha512-HAIm8BKpLIWkvYgxoRzDIaqWIW3UtH2HO1qDd0aov5FTx/9dtCTtylpvd/6mWs5LGaEmsLoSokfJloI2sMZ/WQ==",
"version": "1.0.0-rc.9",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.0.0-rc.9.tgz",
"integrity": "sha512-MxqjspY2aS/nxtvBMT8TExZfDWDEsUvQRHHY/2KoBYpqpzucW6WXRGmeOvS1GeA3vnub2/Kq5i32jGRDT1tvrA==",
"cpu": [
"arm64"
],
@ -718,9 +718,9 @@
}
},
"node_modules/@tauri-apps/cli-linux-x64-gnu": {
"version": "1.0.0-rc.8",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-1.0.0-rc.8.tgz",
"integrity": "sha512-fnPrkX6Uy9Qz2vqnT3D3sgbJzXTR4arNUIQl8HIYi2YCZZVmDWczz4x4++ilZWwk0I3a7d612/WzTeBzQjn3kg==",
"version": "1.0.0-rc.9",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-1.0.0-rc.9.tgz",
"integrity": "sha512-LD7KnJuH1mYFwQfcALPttBnaSG6pgO87Z6nY3xXJjo+A4ttPHcmIBaNdXCTjAmib/umD0nD8k95Hw9iJFYTuiA==",
"cpu": [
"x64"
],
@ -734,9 +734,9 @@
}
},
"node_modules/@tauri-apps/cli-linux-x64-musl": {
"version": "1.0.0-rc.8",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-1.0.0-rc.8.tgz",
"integrity": "sha512-kHrpBsJFRAwqFL7xnsrKdNxnYjzI/J9/Dr7T3rl+IIPbi1sIojh6DydxFOYepnuoINA6zWYQJpo0FQeASJsXrw==",
"version": "1.0.0-rc.9",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-1.0.0-rc.9.tgz",
"integrity": "sha512-ifocAxBYhk7qrO5x1mizxx/yABvkmyia0kw9eXUn7d5a30HoBcl/A9t+w+7c4B/n/D+gxEMSr6CPaIZv7KnTog==",
"cpu": [
"x64"
],
@ -750,9 +750,9 @@
}
},
"node_modules/@tauri-apps/cli-win32-ia32-msvc": {
"version": "1.0.0-rc.8",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-1.0.0-rc.8.tgz",
"integrity": "sha512-y8uT7AaIZVdLAWL4pxj/GXitwWn828er23yniOvTo1mJMCZsSFdwiOGiRSXI6OZsVCOPiJmvqq7eWaskQKYA0A==",
"version": "1.0.0-rc.9",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-1.0.0-rc.9.tgz",
"integrity": "sha512-ClDYF4CstoccPMVkIHyvy1jzlWXIYZX2mjKB6z18MdJ0O7Je8TC115K30lqXtSdPuKX35xWDcWU2b/gllcUUzA==",
"cpu": [
"ia32"
],
@ -766,9 +766,9 @@
}
},
"node_modules/@tauri-apps/cli-win32-x64-msvc": {
"version": "1.0.0-rc.8",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-1.0.0-rc.8.tgz",
"integrity": "sha512-PiDr/iAKoL9nQSiWHkUSjRVHbvCJaa7Xj3P9UnGkjJQ9LGTr7AYZdLk4zISegF+/fZnOmaqUdZW9yWPPyJAzPw==",
"version": "1.0.0-rc.9",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-1.0.0-rc.9.tgz",
"integrity": "sha512-hJjnpl864OhpIp2lTMTW4ad2Aia5/Tbf7k8GJILzUY/XkBhZjNIgZORa8bDcnZRCTU+RDgMFc+AoKtDIircjnA==",
"cpu": [
"x64"
],
@ -7137,6 +7137,34 @@
"tslib": "2.3.1"
}
},
"node_modules/tauri-plugin-store-api/node_modules/@tauri-apps/api": {
"version": "1.0.0-rc.3",
"resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-1.0.0-rc.3.tgz",
"integrity": "sha512-/ZbyBjuUoU6mYm8RzibIUvVuJ31ZwYA2+fTRl7FF4LVFhzCVJ1YI1BS5ohGb2GsLNmLpfeo7kDHaIhV2uaOchQ==",
"dependencies": {
"type-fest": "2.12.1"
},
"engines": {
"node": ">= 12.13.0",
"npm": ">= 6.6.0",
"yarn": ">= 1.19.1"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/tauri"
}
},
"node_modules/tauri-plugin-store-api/node_modules/type-fest": {
"version": "2.12.1",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.12.1.tgz",
"integrity": "sha512-AiknQSEqKVGDDjtZqeKrUoTlcj7FKhupmnVUgz6KoOKtvMwRGE6hUNJ/nVear+h7fnUPO1q/htSkYKb1pyntkQ==",
"engines": {
"node": ">=12.20"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/temp-dir": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz",
@ -7284,9 +7312,9 @@
}
},
"node_modules/type-fest": {
"version": "2.12.1",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.12.1.tgz",
"integrity": "sha512-AiknQSEqKVGDDjtZqeKrUoTlcj7FKhupmnVUgz6KoOKtvMwRGE6hUNJ/nVear+h7fnUPO1q/htSkYKb1pyntkQ==",
"version": "2.12.2",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.12.2.tgz",
"integrity": "sha512-qt6ylCGpLjZ7AaODxbpyBZSs9fCI9SkL3Z9q2oxMBQhs/uyY+VD8jHA8ULCGmWQJlBgqvO3EJeAngOHD8zQCrQ==",
"engines": {
"node": ">=12.20"
},
@ -8114,90 +8142,90 @@
}
},
"@tauri-apps/api": {
"version": "1.0.0-rc.3",
"resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-1.0.0-rc.3.tgz",
"integrity": "sha512-/ZbyBjuUoU6mYm8RzibIUvVuJ31ZwYA2+fTRl7FF4LVFhzCVJ1YI1BS5ohGb2GsLNmLpfeo7kDHaIhV2uaOchQ==",
"version": "1.0.0-rc.4",
"resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-1.0.0-rc.4.tgz",
"integrity": "sha512-1HaUsx8+TzFHDoQ+Mmd6RWaMsPyZlurQHgACDt+il5e/ui6pDkumVXaS92SnY5XOcS4gBC0BkgjVfkWgcm/Oww==",
"requires": {
"type-fest": "2.12.1"
"type-fest": "2.12.2"
}
},
"@tauri-apps/cli": {
"version": "1.0.0-rc.8",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli/-/cli-1.0.0-rc.8.tgz",
"integrity": "sha512-FWpNwbgGMPgDb41oO7wdBhBsBE6FMG9yHKbtbrkJ/8d/hWcT6e3UUTfFL9cR2VGdp1pdWlul5+BKH0PTf8rB9w==",
"version": "1.0.0-rc.9",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli/-/cli-1.0.0-rc.9.tgz",
"integrity": "sha512-j+HZ65wdfFrMwisYeQpdZnldONevBPHjAo9v9Impf0irUU2UR5nwyvyArHTaWCvNeqEs+YV4XXHsfm2xVpnaug==",
"dev": true,
"requires": {
"@tauri-apps/cli-darwin-arm64": "1.0.0-rc.8",
"@tauri-apps/cli-darwin-x64": "1.0.0-rc.8",
"@tauri-apps/cli-linux-arm-gnueabihf": "1.0.0-rc.8",
"@tauri-apps/cli-linux-arm64-gnu": "1.0.0-rc.8",
"@tauri-apps/cli-linux-arm64-musl": "1.0.0-rc.8",
"@tauri-apps/cli-linux-x64-gnu": "1.0.0-rc.8",
"@tauri-apps/cli-linux-x64-musl": "1.0.0-rc.8",
"@tauri-apps/cli-win32-ia32-msvc": "1.0.0-rc.8",
"@tauri-apps/cli-win32-x64-msvc": "1.0.0-rc.8"
"@tauri-apps/cli-darwin-arm64": "1.0.0-rc.9",
"@tauri-apps/cli-darwin-x64": "1.0.0-rc.9",
"@tauri-apps/cli-linux-arm-gnueabihf": "1.0.0-rc.9",
"@tauri-apps/cli-linux-arm64-gnu": "1.0.0-rc.9",
"@tauri-apps/cli-linux-arm64-musl": "1.0.0-rc.9",
"@tauri-apps/cli-linux-x64-gnu": "1.0.0-rc.9",
"@tauri-apps/cli-linux-x64-musl": "1.0.0-rc.9",
"@tauri-apps/cli-win32-ia32-msvc": "1.0.0-rc.9",
"@tauri-apps/cli-win32-x64-msvc": "1.0.0-rc.9"
}
},
"@tauri-apps/cli-darwin-arm64": {
"version": "1.0.0-rc.8",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-1.0.0-rc.8.tgz",
"integrity": "sha512-sbV4fkd3YBlX0gEBldEVmN/NbBdHzrn8wCRRiFaNBocDWC6Ji6DNvpp1Vy1xgY0RgtGOisGD+3+HelmKP4Mh/A==",
"version": "1.0.0-rc.9",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-1.0.0-rc.9.tgz",
"integrity": "sha512-cpcSRyVOh3n5GsCdKtVQpLJ36yx7h+KY868l7KhPnM5EL1cQbFwYzD/VHlzFvfrpS19YvPBB/AHln4rll5iWvw==",
"dev": true,
"optional": true
},
"@tauri-apps/cli-darwin-x64": {
"version": "1.0.0-rc.8",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-1.0.0-rc.8.tgz",
"integrity": "sha512-VmuYbBZKKal/YxSTbzHTaM04C9zUlTXq7ePoXc1PRAa/Xafo16N37OGzhzBlsKHrvh6BtPp9ZWk5UhHIDiJBsw==",
"version": "1.0.0-rc.9",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-1.0.0-rc.9.tgz",
"integrity": "sha512-ku8QpMNrfqyCk2adLdVB+zzaCb7T0/RgVvaqEZqK54WW4blUxkeKHbKqZ/SKRdxTkghHbgJIoBtlk1A5GUbAwg==",
"dev": true,
"optional": true
},
"@tauri-apps/cli-linux-arm-gnueabihf": {
"version": "1.0.0-rc.8",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-1.0.0-rc.8.tgz",
"integrity": "sha512-2VKkS1c2pK56sgtGxtsm9nKKWefG7dgPnynTuCoEngkgQfNIlZ1ns/eAIZpBmwhvOMOw2OesKvK9ZQo0/lE/IA==",
"version": "1.0.0-rc.9",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-1.0.0-rc.9.tgz",
"integrity": "sha512-Qlwm4eWo0uCeL3kmowfaLghPehYTYvnM4fH6cRZndzs6/abqsFdghmEmhP5mn34/RAnHXAUANItqlgk6L7C4iw==",
"dev": true,
"optional": true
},
"@tauri-apps/cli-linux-arm64-gnu": {
"version": "1.0.0-rc.8",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-1.0.0-rc.8.tgz",
"integrity": "sha512-jykbrTJyx0uJhhL/3PPYGx5ETqEzacJ3YChnHzVClSzPkrdoGC61/xY9dMD9ZFJsLMJkV4VJj8sGRd1OPKCa/w==",
"version": "1.0.0-rc.9",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-1.0.0-rc.9.tgz",
"integrity": "sha512-Rr4S902dYjRnDCu141f5Cz3JxwKxX/ax7LiMhSifQu5o2wSiezmZ20VRHBwW1UuZxvGV+hxTuZVnfD6NKQdWdA==",
"dev": true,
"optional": true
},
"@tauri-apps/cli-linux-arm64-musl": {
"version": "1.0.0-rc.8",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.0.0-rc.8.tgz",
"integrity": "sha512-HAIm8BKpLIWkvYgxoRzDIaqWIW3UtH2HO1qDd0aov5FTx/9dtCTtylpvd/6mWs5LGaEmsLoSokfJloI2sMZ/WQ==",
"version": "1.0.0-rc.9",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.0.0-rc.9.tgz",
"integrity": "sha512-MxqjspY2aS/nxtvBMT8TExZfDWDEsUvQRHHY/2KoBYpqpzucW6WXRGmeOvS1GeA3vnub2/Kq5i32jGRDT1tvrA==",
"dev": true,
"optional": true
},
"@tauri-apps/cli-linux-x64-gnu": {
"version": "1.0.0-rc.8",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-1.0.0-rc.8.tgz",
"integrity": "sha512-fnPrkX6Uy9Qz2vqnT3D3sgbJzXTR4arNUIQl8HIYi2YCZZVmDWczz4x4++ilZWwk0I3a7d612/WzTeBzQjn3kg==",
"version": "1.0.0-rc.9",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-1.0.0-rc.9.tgz",
"integrity": "sha512-LD7KnJuH1mYFwQfcALPttBnaSG6pgO87Z6nY3xXJjo+A4ttPHcmIBaNdXCTjAmib/umD0nD8k95Hw9iJFYTuiA==",
"dev": true,
"optional": true
},
"@tauri-apps/cli-linux-x64-musl": {
"version": "1.0.0-rc.8",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-1.0.0-rc.8.tgz",
"integrity": "sha512-kHrpBsJFRAwqFL7xnsrKdNxnYjzI/J9/Dr7T3rl+IIPbi1sIojh6DydxFOYepnuoINA6zWYQJpo0FQeASJsXrw==",
"version": "1.0.0-rc.9",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-1.0.0-rc.9.tgz",
"integrity": "sha512-ifocAxBYhk7qrO5x1mizxx/yABvkmyia0kw9eXUn7d5a30HoBcl/A9t+w+7c4B/n/D+gxEMSr6CPaIZv7KnTog==",
"dev": true,
"optional": true
},
"@tauri-apps/cli-win32-ia32-msvc": {
"version": "1.0.0-rc.8",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-1.0.0-rc.8.tgz",
"integrity": "sha512-y8uT7AaIZVdLAWL4pxj/GXitwWn828er23yniOvTo1mJMCZsSFdwiOGiRSXI6OZsVCOPiJmvqq7eWaskQKYA0A==",
"version": "1.0.0-rc.9",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-1.0.0-rc.9.tgz",
"integrity": "sha512-ClDYF4CstoccPMVkIHyvy1jzlWXIYZX2mjKB6z18MdJ0O7Je8TC115K30lqXtSdPuKX35xWDcWU2b/gllcUUzA==",
"dev": true,
"optional": true
},
"@tauri-apps/cli-win32-x64-msvc": {
"version": "1.0.0-rc.8",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-1.0.0-rc.8.tgz",
"integrity": "sha512-PiDr/iAKoL9nQSiWHkUSjRVHbvCJaa7Xj3P9UnGkjJQ9LGTr7AYZdLk4zISegF+/fZnOmaqUdZW9yWPPyJAzPw==",
"version": "1.0.0-rc.9",
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-1.0.0-rc.9.tgz",
"integrity": "sha512-hJjnpl864OhpIp2lTMTW4ad2Aia5/Tbf7k8GJILzUY/XkBhZjNIgZORa8bDcnZRCTU+RDgMFc+AoKtDIircjnA==",
"dev": true,
"optional": true
},
@ -12961,6 +12989,21 @@
"requires": {
"@tauri-apps/api": "1.0.0-rc.3",
"tslib": "2.3.1"
},
"dependencies": {
"@tauri-apps/api": {
"version": "1.0.0-rc.3",
"resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-1.0.0-rc.3.tgz",
"integrity": "sha512-/ZbyBjuUoU6mYm8RzibIUvVuJ31ZwYA2+fTRl7FF4LVFhzCVJ1YI1BS5ohGb2GsLNmLpfeo7kDHaIhV2uaOchQ==",
"requires": {
"type-fest": "2.12.1"
}
},
"type-fest": {
"version": "2.12.1",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.12.1.tgz",
"integrity": "sha512-AiknQSEqKVGDDjtZqeKrUoTlcj7FKhupmnVUgz6KoOKtvMwRGE6hUNJ/nVear+h7fnUPO1q/htSkYKb1pyntkQ=="
}
}
},
"temp-dir": {
@ -13073,9 +13116,9 @@
}
},
"type-fest": {
"version": "2.12.1",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.12.1.tgz",
"integrity": "sha512-AiknQSEqKVGDDjtZqeKrUoTlcj7FKhupmnVUgz6KoOKtvMwRGE6hUNJ/nVear+h7fnUPO1q/htSkYKb1pyntkQ=="
"version": "2.12.2",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.12.2.tgz",
"integrity": "sha512-qt6ylCGpLjZ7AaODxbpyBZSs9fCI9SkL3Z9q2oxMBQhs/uyY+VD8jHA8ULCGmWQJlBgqvO3EJeAngOHD8zQCrQ=="
},
"typedarray-to-buffer": {
"version": "3.1.5",

View file

@ -13,11 +13,13 @@
"update-bin": "node ./scripts/update-binaries.js && npm run package",
"lint": "npx prettier --check .",
"format": "npx prettier --write .",
"mock-bin": "node ./scripts/dummy-binaries.js"
"mock-bin": "node ./scripts/dummy-binaries.js",
"prepare-release-config": "node ./scripts/merge-config.js",
"release": "npm run prepare-release-config && npm run tauri build -- --config ./.tauri/release-config.combined.json"
},
"devDependencies": {
"@sveltejs/vite-plugin-svelte": "^1.0.0-next.30",
"@tauri-apps/cli": "^1.0.0-rc.8",
"@tauri-apps/cli": "^1.0.0-rc.9",
"@tauri-apps/tauricon": "github:tauri-apps/tauricon",
"execa": "^6.1.0",
"prettier": "2.6.2",
@ -26,7 +28,7 @@
"svelte-routing": "^1.6.0"
},
"dependencies": {
"@tauri-apps/api": "^1.0.0-rc.3",
"@tauri-apps/api": "^1.0.0-rc.4",
"tauri-plugin-store-api": "github:tauri-apps/tauri-plugin-store"
}
}

18
scripts/merge-config.js Normal file
View file

@ -0,0 +1,18 @@
// The tauri-action for Github Actions doesn't let you merge configs
// like can be done with --config on the `tauri` command
// instead it replaces the file
//
// So for now, do the merge ourselves, why? because we don't want to maintain two configs
// that will just end up drifting and breaking on release time.
import { readFileSync, writeFileSync } from "fs";
let releaseOptions = JSON.parse(readFileSync("./.tauri/release-config.json"));
let existingConfig = JSON.parse(readFileSync("./src-tauri/tauri.conf.json"));
existingConfig.tauri.updater = releaseOptions.tauri.updater;
writeFileSync(
"./.tauri/release-config.combined.json",
JSON.stringify(existingConfig, null, 2)
);

88
src-tauri/Cargo.lock generated
View file

@ -182,9 +182,9 @@ dependencies = [
[[package]]
name = "attohttpc"
version = "0.18.0"
version = "0.19.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e69e13a99a7e6e070bb114f7ff381e58c7ccc188630121fc4c2fe4bcf24cd072"
checksum = "262c3f7f5d61249d8c00e5546e2685cd15ebeeb1bc0f3cc5449350a1cb07319e"
dependencies = [
"flate2",
"http",
@ -348,7 +348,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "74f89d248799e3f15f91b70917f65381062a01bb8e222700ea0e5a7ff9785f9c"
dependencies = [
"byteorder",
"uuid",
"uuid 0.8.2",
]
[[package]]
@ -384,12 +384,6 @@ version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "cfg_aliases"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e"
[[package]]
name = "cocoa"
version = "0.24.0"
@ -1643,12 +1637,6 @@ dependencies = [
"autocfg",
]
[[package]]
name = "minisign-verify"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "933dca44d65cdd53b355d0b73d380a2ff5da71f87f036053188bf1eab6a19881"
[[package]]
name = "miniz_oxide"
version = "0.4.4"
@ -2947,9 +2935,9 @@ dependencies = [
[[package]]
name = "tao"
version = "0.7.0"
version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b6a3359088d4c4735a13f933202f4ecd91f5991b41a8eb757f2449c044ce925"
checksum = "3765f329d831aa461cd3f0f94b065a9fe37560fd7f8099d5bcf3e95c923071f0"
dependencies = [
"bitflags",
"cairo-rs",
@ -3011,17 +2999,14 @@ dependencies = [
[[package]]
name = "tauri"
version = "1.0.0-rc.6"
version = "1.0.0-rc.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f6d514a34b3f9a07e2002d95e1371b42a446636e3d571a59e974b21d6acf3007"
checksum = "537978045ca229b9c1bb51ea85bc807b9d109a119721134fc5da24f94fd3074a"
dependencies = [
"anyhow",
"attohttpc",
"base64",
"bincode",
"cfg_aliases",
"dirs-next",
"either",
"embed_plist",
"flate2",
"futures",
@ -3029,10 +3014,9 @@ dependencies = [
"glib",
"glob",
"gtk",
"heck 0.4.0",
"http",
"ignore",
"memchr",
"minisign-verify",
"notify-rust",
"once_cell",
"open",
@ -3059,16 +3043,15 @@ dependencies = [
"thiserror",
"tokio",
"url",
"uuid",
"uuid 1.0.0",
"windows 0.30.0",
"zip",
]
[[package]]
name = "tauri-build"
version = "1.0.0-rc.5"
version = "1.0.0-rc.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ede6462a4692e2fd5030497ad576264dc90eea5fa337182492e77291d45fc78b"
checksum = "7e6448e80778032b4f9dd86b5efc8214d5bfc81a11efa502bb5211b05d422b14"
dependencies = [
"anyhow",
"cargo_toml",
@ -3079,9 +3062,9 @@ dependencies = [
[[package]]
name = "tauri-codegen"
version = "1.0.0-rc.4"
version = "1.0.0-rc.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "54193ebdb010e85824301ce5f0940742b680d66376203f6425d549d2f32ad499"
checksum = "e4c2e553c2ceaf30f1feabc76abebbd5f9eddb99b643de0078e38037e43e3c2f"
dependencies = [
"base64",
"brotli",
@ -3095,15 +3078,15 @@ dependencies = [
"sha2",
"tauri-utils",
"thiserror",
"uuid",
"uuid 1.0.0",
"walkdir",
]
[[package]]
name = "tauri-macros"
version = "1.0.0-rc.4"
version = "1.0.0-rc.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c8b867ef4703cb8e50f128ee3c941895d94c01e0ebd9007a7b45ecca52516dbf"
checksum = "d3e8af1367b1e1224edfa4117c88fe19717970fabfbc2555e957e077f0469248"
dependencies = [
"heck 0.4.0",
"proc-macro2",
@ -3127,9 +3110,9 @@ dependencies = [
[[package]]
name = "tauri-runtime"
version = "0.3.4"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5b289ac8eafc52a36425fcaf3de23febd0b2606d3cce2b39ac412a1817fae537"
checksum = "27653d24a0d7e2c8e04838e975acbf7a5628746d8d60a916d33a9ccf8a06c4ea"
dependencies = [
"gtk",
"http",
@ -3139,22 +3122,22 @@ dependencies = [
"serde_json",
"tauri-utils",
"thiserror",
"uuid",
"uuid 1.0.0",
"webview2-com",
"windows 0.30.0",
]
[[package]]
name = "tauri-runtime-wry"
version = "0.3.5"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a8bf16e0476a8249aa2c75e7b49ec4c059be5fb27d9f6514e30ed327e8e9fa2"
checksum = "53d9b0922c27ea8a1430a2bbf666fe7789645dffb9d317f8d2dfca1a5dff2271"
dependencies = [
"gtk",
"rand 0.8.5",
"tauri-runtime",
"tauri-utils",
"uuid",
"uuid 1.0.0",
"webview2-com",
"windows 0.30.0",
"wry",
@ -3162,9 +3145,9 @@ dependencies = [
[[package]]
name = "tauri-utils"
version = "1.0.0-rc.4"
version = "1.0.0-rc.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a67fcf8fdd1340de4e75c01966fceab03057a8b0e97864eb39a21e420deed503"
checksum = "a485f9fc0f381d3da0818c4260b3a04be86dc1844a12edaff68afb07bc55d735"
dependencies = [
"brotli",
"ctor",
@ -3173,13 +3156,13 @@ dependencies = [
"html5ever",
"json-patch",
"kuchiki",
"memchr",
"phf 0.10.1",
"proc-macro2",
"quote",
"serde",
"serde_json",
"serde_with",
"serialize-to-javascript",
"thiserror",
"url",
"walkdir",
@ -3425,6 +3408,12 @@ name = "uuid"
version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7"
[[package]]
name = "uuid"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8cfcd319456c4d6ea10087ed423473267e1a071f3bc0aa89f80d60997843c6f0"
dependencies = [
"getrandom 0.2.6",
]
@ -3924,9 +3913,9 @@ dependencies = [
[[package]]
name = "wry"
version = "0.14.0"
version = "0.15.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6fd09ffc86ecea0a0d5f50cc8e4a8121a1bfc0b0825a160f86ac39e86979344c"
checksum = "20b69cff9f50bab10b42e51bac9c2cf695484059f1b19e911754477ae703ef42"
dependencies = [
"block",
"cocoa",
@ -4051,17 +4040,6 @@ dependencies = [
"zvariant",
]
[[package]]
name = "zip"
version = "0.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bf225bcf73bb52cbb496e70475c7bd7a3f769df699c0020f6c7bd9a96dcf0b8d"
dependencies = [
"byteorder",
"crc32fast",
"crossbeam-utils",
]
[[package]]
name = "zvariant"
version = "3.1.2"

View file

@ -12,12 +12,12 @@ rust-version = "1.57"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[build-dependencies]
tauri-build = { version = "1.0.0-rc.5", features = [] }
tauri-build = { version = "1.0.0-rc.7", features = [] }
[dependencies]
serde_json = "1.0"
serde = { version = "1.0", features = ["derive"] }
tauri = { version = "1.0.0-rc.5", features = ["api-all", "devtools", "updater"] }
tauri = { version = "1.0.0-rc.8", features = ["api-all", "devtools"] }
[dependencies.tauri-plugin-store]
git = "https://github.com/tauri-apps/tauri-plugin-store"

View file

@ -12,7 +12,7 @@
"tauri": {
"bundle": {
"active": true,
"targets": "all",
"targets": ["msi", "appimage"],
"identifier": "opengoal-launcher",
"icon": [
"icons/32x32.png",
@ -34,32 +34,12 @@
"category": "DeveloperTool",
"shortDescription": "",
"longDescription": "",
"deb": {
"depends": [],
"useBootstrapper": false
},
"macOS": {
"frameworks": [],
"useBootstrapper": false,
"exceptionDomain": "",
"signingIdentity": null,
"providerShortName": null,
"entitlements": null
},
"windows": {
"certificateThumbprint": null,
"digestAlgorithm": "sha256",
"timestampUrl": ""
}
},
"updater": {
"active": true,
"endpoints": [
"https://raw.githubusercontent.com/open-goal/launcher/main/.tauri/latest-release.json"
],
"dialog": true,
"pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IEJGQjRCQzI1N0I4REZBMzIKUldReStvMTdKYnkwditmb2IvK3hJUm9xdjJMMlN2N2tRejlON0djdE03YnhGOHlaTzVwUy9IY2YK"
},
"allowlist": {
"all": true,
"fs": {

View file

@ -47,9 +47,11 @@
async function installProcess() {
await clearInstallLogs(SUPPORTED_GAME.Jak1);
currentStatus = SETUP_SUCCESS.awaitingISO;
const res = await Promise.resolve()
.then(async () => (isoPath = await filePrompt()))
.then(async () => {
setStatus(SETUP_SUCCESS.awaitingISO);
isoPath = await filePrompt();
})
.then(async () => {
setStatus(SETUP_SUCCESS.extractingISO);
await extractAndValidateISO(isoPath);

View file

@ -16,7 +16,7 @@ export async function filePrompt() {
const path = await open({
multiple: false,
directory: false,
filters: [{ extensions: ["ISO"], name: "Jak ISO File" }],
filters: [{ extensions: ["ISO", "iso"], name: "Jak ISO File" }],
});
if (path) {

0
third-party/glew_2.1.0/linux/glewinfo vendored Normal file → Executable file
View file