Skip to content

Commit 765078f

Browse files
authored
Convert crate to library; rename binary to webview (#104)
* Conert rust to library; rename binary to webview * Drop redundant import * Use mutexes instead of Arc<RefCell> This was a clippy warning. Evidently RefCells aren't sync / don't provide thread safety. I added `parking_lot` because it has an implementation of mutex that's harder to poison. * Wrangle mise / CI * Only set default features when not CI
1 parent 342cb9d commit 765078f

File tree

10 files changed

+653
-643
lines changed

10 files changed

+653
-643
lines changed

.github/workflows/release-binary.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ jobs:
2626
- name: Check for artifacts
2727
id: check_artifacts
2828
run: |
29-
if [ -z "$(find . -name 'deno-webview*')" ]; then
29+
if [ -z "$(find . -name 'webview*')" ]; then
3030
echo "No artifacts found. Exiting successfully."
3131
echo "artifacts_found=false" >> $GITHUB_OUTPUT
3232
else
@@ -50,5 +50,5 @@ jobs:
5050
token: ${{ secrets.GITHUB_TOKEN }}
5151
prerelease: true
5252
skipIfReleaseExists: true
53-
artifacts: "release-binary-*/deno-webview*"
53+
artifacts: "release-binary-*/webview*"
5454
artifactErrorsFailBuild: true

.github/workflows/rust-binary.yml

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,19 @@ jobs:
1313
include:
1414
- os: ubuntu-latest
1515
target: x86_64-unknown-linux-gnu
16-
binary_name: deno-webview-linux
16+
binary_name: webview-linux
1717
platform: linux
1818
- os: ubuntu-latest
1919
target: x86_64-pc-windows-msvc
20-
binary_name: deno-webview-windows
20+
binary_name: webview-windows
2121
platform: windows
2222
- os: macos-latest
2323
target: x86_64-apple-darwin
24-
binary_name: deno-webview-mac
24+
binary_name: webview-mac
2525
platform: macos
2626
- os: macos-latest
2727
target: aarch64-apple-darwin
28-
binary_name: deno-webview-mac-arm64
28+
binary_name: webview-mac-arm64
2929
platform: macos
3030
steps:
3131
- uses: actions/checkout@v4
@@ -56,46 +56,46 @@ jobs:
5656
- name: Build Linux
5757
if: matrix.target == 'x86_64-unknown-linux-gnu'
5858
run: |
59-
cargo build ${{ steps.build_flags.outputs.flags }} --target ${{ matrix.target }} -F transparent
60-
mv target/${{ matrix.target }}/${{ steps.build_flags.outputs.build_type }}/deno-webview ${{ matrix.binary_name }}
59+
mise run build:rust -F transparent ${{ steps.build_flags.outputs.flags }} --target ${{ matrix.target }}
60+
mv target/${{ matrix.target }}/${{ steps.build_flags.outputs.build_type }}/webview ${{ matrix.binary_name }}
6161
62-
cargo build ${{ steps.build_flags.outputs.flags }} --target ${{ matrix.target }} -F transparent -F devtools
63-
mv target/${{ matrix.target }}/${{ steps.build_flags.outputs.build_type }}/deno-webview ${{ matrix.binary_name }}-devtools
62+
mise run build:rust -F 'transparent devtools' ${{ steps.build_flags.outputs.flags }} --target ${{ matrix.target }}
63+
mv target/${{ matrix.target }}/${{ steps.build_flags.outputs.build_type }}/webview ${{ matrix.binary_name }}-devtools
6464
6565
- name: Build macOS x86_64
6666
if: matrix.target == 'x86_64-apple-darwin'
6767
run: |
68-
cargo build ${{ steps.build_flags.outputs.flags }} --target ${{ matrix.target }}
69-
mv target/${{ matrix.target }}/${{ steps.build_flags.outputs.build_type }}/deno-webview ${{ matrix.binary_name }}
68+
mise run build:rust ${{ steps.build_flags.outputs.flags }} --target ${{ matrix.target }}
69+
mv target/${{ matrix.target }}/${{ steps.build_flags.outputs.build_type }}/webview ${{ matrix.binary_name }}
7070
71-
cargo build ${{ steps.build_flags.outputs.flags }} --target ${{ matrix.target }} -F transparent
72-
mv target/${{ matrix.target }}/${{ steps.build_flags.outputs.build_type }}/deno-webview ${{ matrix.binary_name }}-transparent
71+
mise run build:rust -F transparent ${{ steps.build_flags.outputs.flags }} --target ${{ matrix.target }}
72+
mv target/${{ matrix.target }}/${{ steps.build_flags.outputs.build_type }}/webview ${{ matrix.binary_name }}-transparent
7373
74-
cargo build ${{ steps.build_flags.outputs.flags }} --target ${{ matrix.target }} -F transparent -F devtools
75-
mv target/${{ matrix.target }}/${{ steps.build_flags.outputs.build_type }}/deno-webview ${{ matrix.binary_name }}-devtools
74+
mise run build:rust -F 'transparent devtools' ${{ steps.build_flags.outputs.flags }} --target ${{ matrix.target }}
75+
mv target/${{ matrix.target }}/${{ steps.build_flags.outputs.build_type }}/webview ${{ matrix.binary_name }}-devtools
7676
7777
- name: Build (aarch64-apple-darwin)
7878
if: matrix.target == 'aarch64-apple-darwin'
7979
run: |
80-
SDKROOT=$(xcrun -sdk macosx --show-sdk-path) MACOSX_DEPLOYMENT_TARGET=$(xcrun -sdk macosx --show-sdk-platform-version) cargo build ${{ steps.build_flags.outputs.flags }} --target ${{ matrix.target }}
81-
mv target/${{ matrix.target }}/${{ steps.build_flags.outputs.build_type }}/deno-webview ${{ matrix.binary_name }}
80+
SDKROOT=$(xcrun -sdk macosx --show-sdk-path) MACOSX_DEPLOYMENT_TARGET=$(xcrun -sdk macosx --show-sdk-platform-version) mise run build:rust ${{ steps.build_flags.outputs.flags }} --target ${{ matrix.target }}
81+
mv target/${{ matrix.target }}/${{ steps.build_flags.outputs.build_type }}/webview ${{ matrix.binary_name }}
8282
83-
SDKROOT=$(xcrun -sdk macosx --show-sdk-path) MACOSX_DEPLOYMENT_TARGET=$(xcrun -sdk macosx --show-sdk-platform-version) cargo build ${{ steps.build_flags.outputs.flags }} --target ${{ matrix.target }} -F transparent
84-
mv target/${{ matrix.target }}/${{ steps.build_flags.outputs.build_type }}/deno-webview ${{ matrix.binary_name }}-transparent
83+
SDKROOT=$(xcrun -sdk macosx --show-sdk-path) MACOSX_DEPLOYMENT_TARGET=$(xcrun -sdk macosx --show-sdk-platform-version) mise run build:rust -F transparent ${{ steps.build_flags.outputs.flags }} --target ${{ matrix.target }}
84+
mv target/${{ matrix.target }}/${{ steps.build_flags.outputs.build_type }}/webview ${{ matrix.binary_name }}-transparent
8585
86-
SDKROOT=$(xcrun -sdk macosx --show-sdk-path) MACOSX_DEPLOYMENT_TARGET=$(xcrun -sdk macosx --show-sdk-platform-version) cargo build ${{ steps.build_flags.outputs.flags }} --target ${{ matrix.target }} -F transparent -F devtools
87-
mv target/${{ matrix.target }}/${{ steps.build_flags.outputs.build_type }}/deno-webview ${{ matrix.binary_name }}-devtools
86+
SDKROOT=$(xcrun -sdk macosx --show-sdk-path) MACOSX_DEPLOYMENT_TARGET=$(xcrun -sdk macosx --show-sdk-platform-version) mise run build:rust -F 'transparent devtools' ${{ steps.build_flags.outputs.flags }} --target ${{ matrix.target }}
87+
mv target/${{ matrix.target }}/${{ steps.build_flags.outputs.build_type }}/webview ${{ matrix.binary_name }}-devtools
8888
8989
- name: Build (Windows)
9090
if: matrix.target == 'x86_64-pc-windows-msvc'
9191
env:
9292
MISE_ENV: windows
9393
run: |
94-
mise x -- cargo xwin build ${{ steps.build_flags.outputs.flags }} --target ${{ matrix.target }} -F transparent
95-
mv target/${{ matrix.target }}/${{ steps.build_flags.outputs.build_type }}/deno-webview.exe ${{ matrix.binary_name }}.exe
94+
mise run build:rust -F transparent ${{ steps.build_flags.outputs.flags }} --target ${{ matrix.target }}
95+
mv target/${{ matrix.target }}/${{ steps.build_flags.outputs.build_type }}/webview.exe ${{ matrix.binary_name }}.exe
9696
97-
mise x -- cargo xwin build ${{ steps.build_flags.outputs.flags }} --target ${{ matrix.target }} -F transparent -F devtools
98-
mv target/${{ matrix.target }}/${{ steps.build_flags.outputs.build_type }}/deno-webview.exe ${{ matrix.binary_name }}-devtools.exe
97+
mise run build:rust -F 'transparent devtools' ${{ steps.build_flags.outputs.flags }} --target ${{ matrix.target }}
98+
mv target/${{ matrix.target }}/${{ steps.build_flags.outputs.build_type }}/webview.exe ${{ matrix.binary_name }}-devtools.exe
9999
100100
- name: Upload artifact
101101
uses: actions/upload-artifact@v4

Cargo.lock

Lines changed: 12 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[package]
2-
name = "deno-webview"
2+
name = "webview"
33
version = "0.1.14"
44
edition = "2021"
55

@@ -15,6 +15,7 @@ serde_json = "1"
1515
tao = "0.31.0"
1616
wry = "0.48.0"
1717
schemars = "0.8.21"
18+
parking_lot = "0.12"
1819

1920
[features]
2021
transparent = ["wry/transparent"]

mise.toml

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,19 @@ depends = ["gen:*"]
5858

5959
[tasks."build:rust"]
6060
description = "Build the webview binary"
61-
run = "cargo build -F transparent -F devtools"
61+
run = """
62+
{% set xwin = '' %}
63+
{% set features = '' %}
64+
{% if get_env(name='MISE_ENV', default='') == 'windows' %}
65+
{% set xwin = ' xwin' %}
66+
{% endif %}
67+
{% if get_env(name='CI', default='') != 'true' %}
68+
{% set features = ' --features transparent,devtools' %}
69+
{% endif %}
70+
cargo{{xwin}} build --bin webview{{features}}
71+
"""
6272
sources = ["src/**/*.rs", "Cargo.toml", "Cargo.lock"]
63-
outputs = ["target/debug/deno-webview"]
73+
outputs = ["target/debug/webview"]
6474
depends = ["gen:rust"]
6575

6676
[tasks."build:deno"]
@@ -92,6 +102,6 @@ depends = ["lint:*"]
92102
[tasks."example:deno"]
93103
description = "Run a deno example"
94104
depends = ["build:deno"]
95-
env = { WEBVIEW_BIN = "../../../target/debug/deno-webview" }
105+
env = { WEBVIEW_BIN = "../../../target/debug/webview" }
96106
run = "deno run -E -R -N --allow-run examples/{{arg(name=\"example\")}}.ts"
97107
dir = "src/clients/deno"

src/bin/generate_schemas.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
use deno_webview::{Message, Request, Response, WebViewOptions};
21
use schemars::schema_for;
32
use std::fs::File;
43
use std::io::Write;
4+
use webview::{Message, Request, Response, WebViewOptions};
55

66
fn main() {
77
let schemas = [

src/bin/webview.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
use std::env;
2+
use webview::{run, WebViewOptions};
3+
fn main() {
4+
let args: Vec<String> = env::args().collect();
5+
let webview_options: WebViewOptions = serde_json::from_str(&args[1]).unwrap();
6+
run(webview_options).unwrap();
7+
}

src/clients/deno/main.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ async function getWebViewBin(options: WebViewOptions) {
100100
: "";
101101

102102
const cacheDir = getCacheDir();
103-
const fileName = `deno-webview-${BIN_VERSION}${flags}${
103+
const fileName = `webview-${BIN_VERSION}${flags}${
104104
Deno.build.os === "windows" ? ".exe" : ""
105105
}`;
106106
const filePath = join(cacheDir, fileName);
@@ -112,7 +112,7 @@ async function getWebViewBin(options: WebViewOptions) {
112112

113113
// If not in cache, download it
114114
let url =
115-
`https://github.com/zephraph/webview/releases/download/webview-v${BIN_VERSION}/deno-webview`;
115+
`https://github.com/zephraph/webview/releases/download/webview-v${BIN_VERSION}/webview`;
116116
switch (Deno.build.os) {
117117
case "darwin": {
118118
url += "-mac" + (Deno.build.arch === "aarch64" ? "-arm64" : "") + flags;
@@ -147,11 +147,11 @@ async function getWebViewBin(options: WebViewOptions) {
147147
function getCacheDir(): string {
148148
switch (Deno.build.os) {
149149
case "darwin":
150-
return join(Deno.env.get("HOME")!, "Library", "Caches", "deno-webview");
150+
return join(Deno.env.get("HOME")!, "Library", "Caches", "webview");
151151
case "linux":
152-
return join(Deno.env.get("HOME")!, ".cache", "deno-webview");
152+
return join(Deno.env.get("HOME")!, ".cache", "webview");
153153
case "windows":
154-
return join(Deno.env.get("LOCALAPPDATA")!, "deno-webview", "Cache");
154+
return join(Deno.env.get("LOCALAPPDATA")!, "webview", "Cache");
155155
default:
156156
throw new Error("Unsupported OS");
157157
}

0 commit comments

Comments
 (0)