Compare commits

..

8 Commits

Author SHA1 Message Date
sawka 1e433b1766 fix default font 2024-02-24 12:10:15 -08:00
sawka f2790d0472 codeedit fixes for layout / colors 2024-02-23 16:16:22 -08:00
sawka 7129234ce4 bring back selected line 2024-02-23 15:51:41 -08:00
sawka 82496389ed sidebar styles 2024-02-23 15:39:16 -08:00
sawka c7774f3261 remove nth-child special case, fix sidebar margins 2024-02-23 15:21:28 -08:00
sawka 59c6f2da83 updates for cmdinput spacing, input-sep fonts 2024-02-23 15:15:16 -08:00
sawka 9c97882adf block UI and cmdinput UI overhaul 2024-02-23 13:30:06 -08:00
sawka b7926ccb1c undo awkward backgrounds, transparencies, etc. hope to sharpen up the active blocks and the grey/transparent backgrounds were getting in the way 2024-02-23 12:10:48 -08:00
210 changed files with 9019 additions and 9280 deletions
+27 -29
View File
@@ -1,7 +1,8 @@
name: "Build Helper"
on: workflow_dispatch
env:
GO_VERSION: "1.22.0"
WAVETERM_VERSION: 0.6.1
GO_VERSION: "1.21.5"
NODE_VERSION: "21.5.0"
jobs:
runbuild:
@@ -9,11 +10,15 @@ jobs:
matrix:
include:
- platform: "darwin"
arch: "universal"
arch: "x64"
runner: "macos-latest"
scripthaus: "build-package"
- platform: "darwin"
arch: "arm64"
runner: "macos-latest-xlarge"
scripthaus: "build-package"
- platform: "linux"
arch: "amd64"
arch: "x64"
runner: "ubuntu-latest"
scripthaus: "build-package-linux"
runs-on: ${{ matrix.runner }}
@@ -23,11 +28,6 @@ jobs:
with:
repository: scripthaus-dev/scripthaus
path: scripthaus
- name: Install Linux Build Dependencies (Linux only)
if: matrix.platform == 'linux'
run: |
sudo apt-get update
sudo apt-get install --no-install-recommends -y libarchive-tools libopenjp2-tools rpm
- uses: actions/setup-go@v5
with:
go-version: ${{env.GO_VERSION}}
@@ -35,35 +35,33 @@ jobs:
wavesrv/go.sum
waveshell/go.sum
scripthaus/go.sum
- name: Install Scripthaus
run: |
- run: |
go work use ./scripthaus;
cd scripthaus;
go get ./...;
CGO_ENABLED=1 go build -o scripthaus cmd/main.go
echo $PWD >> $GITHUB_PATH
- uses: actions/setup-node@v4
with:
node-version: ${{env.NODE_VERSION}}
cache: "yarn"
- name: Set Version
id: set-version
run: |
VERSION=$(node -e 'console.log(require("./version.js"))')
echo "WAVETERM_VERSION=${VERSION}" >> "$GITHUB_OUTPUT"
- name: Install Yarn Dependencies
run: yarn --frozen-lockfile
- name: Build ${{ matrix.platform }}/${{ matrix.arch }}
run: scripthaus run ${{ matrix.scripthaus }}
env:
GOARCH: ${{ matrix.arch }}
CSC_LINK: ${{ matrix.platform == 'darwin' && secrets.PROD_MACOS_CERTIFICATE}}
CSC_KEY_PASSWORD: ${{ matrix.platform == 'darwin' && secrets.PROD_MACOS_CERTIFICATE_PWD }}
APPLE_ID: ${{ matrix.platform == 'darwin' && secrets.PROD_MACOS_NOTARIZATION_APPLE_ID }}
APPLE_APP_SPECIFIC_PASSWORD: ${{ matrix.platform == 'darwin' && secrets.PROD_MACOS_NOTARIZATION_PWD }}
APPLE_TEAM_ID: ${{ matrix.platform == 'darwin' && secrets.PROD_MACOS_NOTARIZATION_TEAM_ID }}
- name: Upload to S3 staging
run: aws s3 cp make/ s3://waveterm-github-artifacts/staging/${{ steps.set-version.outputs.WAVETERM_VERSION }}/ --recursive --exclude "*/*" --exclude "builder-*.yml"
- run: yarn --frozen-lockfile
- run: ./scripthaus/scripthaus run ${{ matrix.scripthaus }}
- uses: actions/upload-artifact@v4
with:
name: waveterm-build-${{ matrix.platform }}-${{ matrix.arch }}
path: out/make/zip/${{ matrix.platform }}/${{ matrix.arch }}/*.zip
retention-days: 2
upload:
name: "Upload Builds"
runs-on: ubuntu-latest
needs: [runbuild]
steps:
- uses: actions/download-artifact@v4
with:
merge-multiple: true
path: buildtemp
- run: (cd buildtemp; zip ../waveterm-builds.zip *)
- run: aws s3 cp waveterm-builds.zip s3://waveterm-github-artifacts/
env:
AWS_ACCESS_KEY_ID: "${{ secrets.S3_USERID }}"
AWS_SECRET_ACCESS_KEY: "${{ secrets.S3_SECRETKEY }}"
+2 -33
View File
@@ -45,33 +45,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Checkout Scripthaus (Go only)
if: matrix.language == 'go'
uses: actions/checkout@v4
with:
repository: scripthaus-dev/scripthaus
path: scripthaus
- name: Setup Go (Go only)
uses: actions/setup-go@v5
if: matrix.language == 'go'
with:
go-version: stable
cache-dependency-path: |
wavesrv/go.sum
waveshell/go.sum
scripthaus/go.sum
- name: Install Scripthaus (Go only)
if: matrix.language == 'go'
run: |
go work use ./scripthaus;
cd scripthaus;
go get ./...;
CGO_ENABLED=1 go build -o scripthaus cmd/main.go
echo $PWD >> $GITHUB_PATH
uses: actions/checkout@v3
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
@@ -87,14 +61,9 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild (not Go)
if: matrix.language != 'go'
- name: Autobuild
uses: github/codeql-action/autobuild@v3
- name: Build (Go only)
if: matrix.language == 'go'
run: scripthaus run build-backend
# ℹ️ Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
-26
View File
@@ -1,26 +0,0 @@
name: TestDriver.ai Regression Testing
on:
push:
branches: ["main"]
pull_request:
branches: ["main"]
schedule:
- cron: "0 21 * * *" # every day at 9pm
workflow_dispatch:
jobs:
test:
name: "TestDriver"
runs-on: ubuntu-latest
steps:
- uses: dashcamio/testdriver@main
id: testdriver
# note that .testdriver/prerun.sh runs before this, so the app has launched already
with:
prompt: |
2. click "Continue"
2. focus the Wave input with the keyboard shorcut Command + I
3. type 'ls' into the input
4. press return
5. validate Wave shows the result of 'ls'
-2
View File
@@ -20,5 +20,3 @@ temp.sql
.idea/
test/
.vscode/
make/
waveterm-builds.zip
-17
View File
@@ -1,17 +0,0 @@
rm ~/Desktop/WITH-LOVE-FROM-AMERICA.txt
cd ~/actions-runner/_work/testdriver/testdriver/
brew install go
brew tap scripthaus-dev/scripthaus
brew install scripthaus
npm install -g yarn
scripthaus run build-backend
echo "Yarn"
yarn
echo "Rebuild"
scripthaus run electron-rebuild
echo "Webpack"
scripthaus run webpack-build
echo "Starting Electron"
scripthaus run electron 1>/dev/null 2>&1 &
echo "Electron Done"
exit
+6
View File
@@ -53,6 +53,12 @@ Install modules (we use yarn):
yarn
```
Electron also requires specific builds of node_modules to work (because Electron embeds a specific node.js version that might not match your development node.js version). We use a special electron command to cross-compile those modules:
```
scripthaus run electron-rebuild
```
## Running WebPack
We use webpack to build both the React and Electron App Wrapper code. They are both run together using:
+4 -5
View File
@@ -9,7 +9,7 @@
# Wave Terminal
Wave is an open-source AI-native terminal built for seamless workflows.
A open-source, cross-platform, AI-integrated, modern terminal for seamless workflows.
Wave isn't just another terminal emulator; it's a rethink on how terminals are built. Wave combines command line with the power of the open web to help veteran CLI users and new developers alike.
@@ -17,14 +17,13 @@ Wave isn't just another terminal emulator; it's a rethink on how terminals are b
- Persistent sessions that can restore state across network disconnections and reboots
- Searchable contextual command history across all remote sessions (saved locally)
- Workspaces, tabs, and command blocks to keep you organized
- CodeEdit, to edit local and remote files with a VSCode-like inline editor
- AI Integration with ChatGPT (or ChatGPT compatible APIs) to help write commands and get answers inline
![WaveTerm Screenshot](./assets/wave-screenshot.png)
![WaveTerm Screenshot](./assets/wave-screenshot.jpeg)
## Installation
Wave Terminal works with MacOS and Linux.
Wave Terminal works with MacOS and Linux (preliminary).
Install Wave Terminal from: [www.waveterm.dev/download](https://www.waveterm.dev/download)
@@ -50,7 +49,7 @@ brew install --cask wave
## Contributing
Wave uses Github Issues for issue tracking.
Wave uses Github Project for tracking issues.
Find more information in our [Contributions Guide](CONTRIBUTING.md), which includes:
+2 -2
View File
@@ -11,9 +11,9 @@ The license disclaimers for the backend are generated using the [go-licenses](ht
The license disclaimers for the frontend are generated using the [`yarn licenses` tool](https://classic.yarnpkg.com/lang/en/docs/cli/licenses/). This outputs to the file [`frontend.md`](./disclaimers/frontend.md).
These disclaimer files linked above will be periodically regenerated to reflect new dependencies.
These three disclaimer files linked above will be periodically regenerated to reflect new dependencies.
The [`scripthaus.md` file](../scripthaus.md) contains scripts to generate the disclaimers and package them. To manually generate the disclaimers, run the following from the repository root directory:
The [`scripthaus.md` file](../scripthaus.md) contains scripts to genrate the disclaimers and package them. To manually generate the disclaimers, run the following from the repository root directory:
```bash
scripthaus run generate-license-disclaimers
+6 -6
View File
@@ -179,11 +179,11 @@ THE SOFTWARE.
-----
## github.com/google/go-github/v60/github
## github.com/google/go-github/v57/github
* Name: github.com/google/go-github/v60/github
* Version: v60.0.0
* License: [BSD-3-Clause](https://github.com/google/go-github/blob/v60.0.0/LICENSE)
* Name: github.com/google/go-github/v57/github
* Version: v57.0.0
* License: [BSD-3-Clause](https://github.com/google/go-github/blob/v57.0.0/LICENSE)
```txt
Copyright (c) 2013 The go-github AUTHORS. All rights reserved.
@@ -1138,8 +1138,8 @@ Exhibit B - “Incompatible With Secondary Licenses” Notice
## github.com/kevinburke/ssh_config
* Name: github.com/kevinburke/ssh_config
* Version: v0.0.0-20240306041034-17e2087ebde2
* License: [MIT](https://github.com/wavetermdev/ssh_config/blob/17e2087ebde2/LICENSE)
* Version: v0.0.0-20240109090616-36c8da3d7376
* License: [MIT](https://github.com/wavetermdev/ssh_config/blob/36c8da3d7376/LICENSE)
```txt
Copyright (c) 2017 Kevin Burke.
File diff suppressed because one or more lines are too long
-283
View File
@@ -1,283 +0,0 @@
[
{
"command": "system:toggleDeveloperTools",
"keys": ["Cmd:Option:i"]
},
{
"command": "system:hideWindow",
"keys": ["Cmd:m"]
},
{
"command": "generic:cancel",
"keys": ["Escape"]
},
{
"command": "generic:confirm",
"keys": ["Enter"]
},
{
"command": "generic:deleteItem",
"keys": ["Backspace", "Delete"]
},
{
"command": "generic:selectAbove",
"keys": ["ArrowUp"]
},
{
"command": "generic:selectBelow",
"keys": ["ArrowDown"]
},
{
"command": "generic:selectPageAbove",
"keys": ["PageUp"]
},
{
"command": "generic:selectPageBelow",
"keys": ["PageDown"]
},
{
"command": "app:openHistoryView",
"keys": ["Cmd:h"]
},
{
"command": "app:openTabSearchModal",
"keys": ["Cmd:p"]
},
{
"command": "app:openConnectionsView",
"keys": [],
"commandStr": "/mainview connections"
},
{
"command": "app:openSettingsView",
"keys": [],
"commandStr": "/mainview clientsettings"
},
{
"command": "app:newTab",
"keys": ["Cmd:t"]
},
{
"command": "app:focusCmdInput",
"keys": ["Cmd:i"]
},
{
"command": "app:focusSelectedLine",
"keys": ["Cmd:l"]
},
{
"command": "app:restartCommand",
"keys": ["Cmd:r"]
},
{
"command": "app:restartLastCommand",
"keys": ["Cmd:Shift:r"]
},
{
"command": "app:closeCurrentTab",
"keys": ["Cmd:w"]
},
{
"command": "app:selectLineAbove",
"keys": ["Cmd:ArrowUp", "Cmd:PageUp"]
},
{
"command": "app:selectLineBelow",
"keys": ["Cmd:ArrowDown", "Cmd:PageDown"]
},
{
"command": "app:selectTab-1",
"keys": ["Cmd:1"]
},
{
"command": "app:selectTab-2",
"keys": ["Cmd:2"]
},
{
"command": "app:selectTab-3",
"keys": ["Cmd:3"]
},
{
"command": "app:selectTab-4",
"keys": ["Cmd:4"]
},
{
"command": "app:selectTab-5",
"keys": ["Cmd:5"]
},
{
"command": "app:selectTab-6",
"keys": ["Cmd:6"]
},
{
"command": "app:selectTab-7",
"keys": ["Cmd:7"]
},
{
"command": "app:selectTab-8",
"keys": ["Cmd:8"]
},
{
"command": "app:selectTab-9",
"keys": ["Cmd:9"]
},
{
"command": "app:selectTabLeft",
"keys": ["Cmd:["]
},
{
"command": "app:selectTabRight",
"keys": ["Cmd:]"]
},
{
"command": "app:selectWorkspace-1",
"keys": ["Cmd:Ctrl:1"],
"commandStr": "/session 1"
},
{
"command": "app:selectWorkspace-2",
"keys": ["Cmd:Ctrl:2"],
"commandStr": "/session 2"
},
{
"command": "app:selectWorkspace-3",
"keys": ["Cmd:Ctrl:3"],
"commandStr": "/session 3"
},
{
"command": "app:selectWorkspace-4",
"keys": ["Cmd:Ctrl:4"],
"commandStr": "/session 4"
},
{
"command": "app:selectWorkspace-5",
"keys": ["Cmd:Ctrl:5"],
"commandStr": "/session 5"
},
{
"command": "app:selectWorkspace-6",
"keys": ["Cmd:Ctrl:6"],
"commandStr": "/session 6"
},
{
"command": "app:selectWorkspace-7",
"keys": ["Cmd:Ctrl:7"],
"commandStr": "/session 7"
},
{
"command": "app:selectWorkspace-8",
"keys": ["Cmd:Ctrl:8"],
"commandStr": "/session 8"
},
{
"command": "app:selectWorkspace-9",
"keys": ["Cmd:Ctrl:9"],
"commandStr": "/session 9"
},
{
"command": "app:toggleSidebar",
"keys": ["Cmd:Ctrl:s"]
},
{
"command": "app:deleteActiveLine",
"keys": ["Cmd:d"]
},
{
"command": "app:openBookmarksView",
"keys": ["Cmd:b"],
"commandStr": "/bookmarks:show"
},
{
"command": "bookmarks:edit",
"keys": ["e"]
},
{
"command": "bookmarks:copy",
"keys": ["c"]
},
{
"command": "cmdinput:autocomplete",
"keys": ["Tab"]
},
{
"command": "cmdinput:expandInput",
"keys": ["Cmd:e"]
},
{
"command": "cmdinput:clearInput",
"keys": ["Ctrl:c"]
},
{
"command": "cmdinput:cutLineLeftOfCursor",
"keys": ["Ctrl:u"]
},
{
"command": "cmdinput:previousHistoryItem",
"keys": ["Ctrl:p"]
},
{
"command": "cmdinput:nextHistoryItem",
"keys": ["Ctrl:n"]
},
{
"command": "cmdinput:cutWordLeftOfCursor",
"keys": ["Ctrl:w"]
},
{
"command": "cmdinput:paste",
"keys": ["Ctrl:y"]
},
{
"command": "cmdinput:openHistory",
"keys": ["Ctrl:r"],
"commandStr": "/history"
},
{
"command": "cmdinput:openAIChat",
"keys": ["Ctrl:Space"]
},
{
"command": "history:closeHistory",
"keys": ["Ctrl:g", "Ctrl:c"]
},
{
"command": "history:toggleShowRemotes",
"keys": ["Cmd:r", "Ctrl:r"]
},
{
"command": "history:changeScope",
"keys": ["Ctrl:s", "Cmd:s"]
},
{
"command": "history:selectNextItem",
"keys": ["Ctrl:n"]
},
{
"command": "history:selectPreviousItem",
"keys": ["Ctrl:p"]
},
{
"command": "aichat:clearHistory",
"keys": ["Ctrl:l"]
},
{
"command": "terminal:copy",
"keys": ["Ctrl:Shift:c"]
},
{
"command": "terminal:paste",
"keys": ["Ctrl:Shift:v"]
},
{
"command": "codeedit:save",
"keys": ["Cmd:s"]
},
{
"command": "codeedit:close",
"keys": ["Cmd:d"]
},
{
"command": "codeedit:togglePreview",
"keys": ["Cmd:p"]
}
]
Binary file not shown.

After

Width:  |  Height:  |  Size: 306 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 217 KiB

+2 -3
View File
@@ -1,4 +1,3 @@
*builds/
*-staged/
temp/
*.zip
*.dmg
*.dmg
-71
View File
@@ -1,71 +0,0 @@
# Building for release
## Build Helper workflow
Our release builds are managed by the "Build Helper" GitHub Action, which is defined
in [`build-helper.yml`](../.github/workflows/build-helper.yml).
Under the hood, this will call the `build-package` and `build-package-linux` scripts in
[`scripthaus.md`](../scripthaus.md), which will build the Electron codebase using
WebPack and then the `wavesrv` and `mshell` binaries, then it will call `electron-builder`
to generate the distributable app packages. The configuration for `electron-builder`
is [`electron-builder.config.js`](../electron-builder.config.js).
This will also sign and notarize the macOS app package.
Once a build is complete, it will be placed in `s3://waveterm-github-artifacts/staging/<version>`.
It can be downloaded for testing using the [`download-staged-artifact.sh`](./download-staged-artifact.sh)
script. When you are ready to publish the artifacts to the public release feed, use the
[`publish-from-staging.sh`](./publish-from-staging.sh) script to directly copy the artifacts from
the staging bucket to the releases bucket.
## Automatic updates
Thanks to `electron-updater`, we are able to provide automatic app updates for macOS and Linux,
as long as the app was distributed as a DMG, AppImage, RPM, or DEB file.
With each release, `latest-mac.yml` and `latest-linux.yml` files will be produced that point to the
newest release. These also include file sizes and checksums to aid in validating the packages. The app
will check these files in our S3 bucket every hour to see if a new version is available.
## Local signing and notarizing for macOS (Deprecated)
The [`prepare-macos.sh`](./deprecated/prepare-macos.sh) script will download the latest build
artifacts from S3 and sign and notarize the macOS binaries within it. It will then
generate a DMG and a new ZIP archive with the new signed app.
This will call a few different JS scripts to perform more complicated operations.
[`osx-sign.js`](./deprecated/osx-sign.js) and [`osx-notarize.js`](./deprecated/osx-notarize.js) call
underlying Electron APIs to sign and notarize the package.
[`update-latest-mac.js`](./deprecated/update-latest-mac.js) will then update the `latest-mac.yml`
file with the SHA512 checksum and file size of the new signed and notarized installer. This
is important for the `electron-updater` auto-update mechanism to then find and validate new releases.
## Uploading release artifacts for distribution (Deprecated)
### Upload script
Once the build has been fully validated and is ready to be released, the
[`upload-release.sh`](./deprecated/upload-release.sh) script is then used to grab the completed
artifacts and upload them to the `dl.waveterm.dev` S3 bucket for distribution.
### Homebrew
Homebrew currently requires a manual bump of the version, but now that we have auto-updates,
we should add our cask to the list of apps that can be automatically bumped.
### Linux
We do not currently submit the Linux packages to any of the package repositories. We
are working on addressing this in the near future.
## `electron-build` configuration
Most of our configuration is fairly standard. The main exception to this is that we exclude
our Go binaries from the ASAR archive that Electron generates. ASAR files cannot be executed
by NodeJS because they are not seen as files and therefore cannot be executed via a Shell
command. More information can be found
[here](https://www.electronjs.org/docs/latest/tutorial/asar-archives#executing-binaries-inside-asar-archive).
We also exclude most of our `node_modules` from packaging, as WebPack handles packaging
of any dependencies for us. The one exception is `monaco-editor`.
+20
View File
@@ -0,0 +1,20 @@
const eu = require("@electron/universal");
const path = require("path");
let x64Path = path.resolve(__dirname, "temp", "x64", "Wave.app")
let arm64Path = path.resolve(__dirname, "temp", "arm64", "Wave.app")
let outPath = path.resolve(__dirname, "temp", "Wave.app")
console.log("building universal package");
console.log("x64 path", x64Path);
console.log("arm64 path", arm64Path);
console.log("output path", outPath);
(async () => {
await eu.makeUniversalApp({
x64AppPath: x64Path,
arm64AppPath: arm64Path,
outAppPath: outPath,
});
console.log("created macos universal app");
})();
+62
View File
@@ -0,0 +1,62 @@
#!/bin/bash
# assumes we have Wave-darwin-x64-[version].zip and Wave-darwin-arm64-[version].zip in current directory
VERSION=0.6.1
rm -rf temp
rm -rf builds
mkdir temp
mkdir temp/x64
aws s3 cp s3://waveterm-github-artifacts/waveterm-builds.zip .
BUILDS_ZIP=waveterm-builds.zip
if ! [ -f $BUILDS_ZIP ]; then
echo "no $BUILDS_ZIP found";
exit 1;
fi
echo "unzipping $BUILDS_ZIP"
unzip -q $BUILDS_ZIP -d builds
X64_ZIP="builds/Wave-darwin-x64-$VERSION.zip"
ARM64_ZIP="builds/Wave-darwin-arm64-$VERSION.zip"
if ! [ -f $X64_ZIP ]; then
echo "no $X64_ZIP found";
exit 1;
fi
if ! [ -f $ARM64_ZIP ]; then
echo "no $ARM64_ZIP found"
exit 1;
fi
set -e
echo "unzipping version v$VERSION zip files"
ls -l "$X64_ZIP" "$ARM64_ZIP"
unzip -q $X64_ZIP -d temp/x64
mkdir temp/arm64
unzip -q $ARM64_ZIP -d temp/arm64
lipo -create -output temp/wavesrv temp/x64/Wave.app/Contents/Resources/app/bin/wavesrv temp/arm64/Wave.app/Contents/Resources/app/bin/wavesrv
rm -rf temp/arm64/Wave.app/Contents/Resources/app
mv temp/x64/Wave.app/Contents/Resources/app temp/
cp temp/wavesrv temp/app/bin/wavesrv
mkdir temp/x64/Wave.app/Contents/Resources/app
mkdir temp/arm64/Wave.app/Contents/Resources/app
node build-universal.js
rm -rf temp/Wave.app/Contents/Resources/app
mv temp/app temp/Wave.app/Contents/Resources/app
node osx-sign.js
DEBUG=electron-notarize node osx-notarize.js
echo "universal app creation success (build/sign/notarize)"
echo "creating universal dmg"
rm -f *.dmg
DMG_VERSION=$(node -e 'console.log(require("../version.js"))')
DMG_NAME="waveterm-macos-universal-${DMG_VERSION}.dmg"
../../create-dmg/create-dmg \
--volname "WaveTerm" \
--window-pos 200 120 \
--window-size 600 300 \
--icon-size 100 \
--icon "Wave.app" 200 130 \
--hide-extension "Wave.app" \
--app-drop-link 400 125 \
$DMG_NAME \
"temp/Wave.app"
echo "success, created $DMG_NAME"
mv $DMG_NAME builds/
rm builds/Wave-darwin-*.zip
spctl -a -vvv -t install temp/Wave.app/
-46
View File
@@ -1,46 +0,0 @@
// Usage: node generate-hash.js <path-to-installer>
// Example: node generate-hash.js ./make/Wave-0.0.1.dmg
// This script will generate a hash of the installer file, as defined by electron-builder.
// Courtesy of https://github.com/electron-userland/electron-builder/issues/3913#issuecomment-504698845
const path = require("path");
const fs = require("fs");
const crypto = require("crypto");
/**
* Generate a hash of a file, as defined by electron-builder
* @param {string} file - Path to the file
* @param {string} algorithm - Hash algorithm to use
* @param {string} encoding - Encoding to use
* @returns {Promise<string>} - The hash of the file
*/
async function hashFile(file, algorithm = "sha512", encoding = "base64") {
return new Promise((resolve, reject) => {
const hash = crypto.createHash(algorithm);
hash.on("error", reject).setEncoding(encoding);
fs.createReadStream(file, {
highWaterMark: 1024 * 1024,
/* better to use more memory but hash faster */
})
.on("error", reject)
.on("end", () => {
hash.end();
resolve(hash.read());
})
.pipe(hash, {
end: false,
});
});
}
if (require.main === module) {
const installerPath = path.resolve(process.cwd(), process.argv[2]);
(async () => {
const hash = await hashFile(installerPath);
console.log(`hash of ${installerPath}: ${hash}`);
})();
}
module.exports = {
hashFile,
};
-37
View File
@@ -1,37 +0,0 @@
// Notarize the Wave.app for macOS
const { notarize } = require("@electron/notarize");
const path = require("path");
/**
* Notarize the Wave.app for macOS
* @param {string} waveAppPath - Path to the Wave.app
* @returns {Promise<void>}
*/
async function notarizeApp(waveAppPath) {
return notarize({
appPath: waveAppPath,
tool: "notarytool",
keychainProfile: "notarytool-creds",
})
.then(() => {
console.log("notarize success");
})
.catch((e) => {
console.log("notarize error", e);
process.exit(1);
});
}
if (require.main === module) {
console.log("running osx-notarize");
const waveAppPath = path.resolve(__dirname, "temp", "Wave.app");
(async () => {
await notarizeApp(waveAppPath);
console.log("notarization complete");
})();
}
module.exports = {
notarizeApp,
};
-45
View File
@@ -1,45 +0,0 @@
// Sign the app and binaries for macOS
const { signAsync } = require("@electron/osx-sign");
const path = require("path");
const fs = require("fs");
/**
* Sign the app and binaries for macOS
* @param {string} waveAppPath - Path to the Wave.app
* @returns {Promise<void>}
*/
async function signApp(waveAppPath) {
const binDirPath = path.resolve(waveAppPath, "Contents", "Resources", "app.asar.unpacked", "bin");
const binFilePaths = fs
.readdirSync(binDirPath, { recursive: true, withFileTypes: true })
.filter((f) => f.isFile())
.map((f) => path.resolve(binDirPath, f.path, f.name));
console.log("waveAppPath", waveAppPath);
console.log("binDirPath", binDirPath);
console.log("binFilePaths", binFilePaths);
return signAsync({
app: waveAppPath,
binaries: binFilePaths,
})
.then(() => {
console.log("signing success");
})
.catch((e) => {
console.log("signing error", e);
process.exit(1);
});
}
if (require.main === module) {
console.log("running osx-sign");
const waveAppPath = path.resolve(__dirname, "temp", "Wave.app");
(async () => {
await signApp(waveAppPath);
console.log("signing complete");
})();
}
module.exports = {
signApp,
};

Some files were not shown because too many files have changed in this diff Show More