Skip to content

Commit

Permalink
ci: auto generate typescript bindings (#56)
Browse files Browse the repository at this point in the history
This PR 
 - removes `tauriModel.ts` from git and instead
 - generates `tauriModel.ts` everytime `vite` starts or `vite` detects a change in `swap/src/`
 
To do that I have introduced the `gen-bindings` and `check-bindings` commands as well as improved documentation. Following this PR, the Typescript bindings to our Tauri commands will be automatically re-generated upon the instant a source file is changed! 

This closes #49
  • Loading branch information
Einliterflasche authored Aug 31, 2024
1 parent bcd2d95 commit 1fe6391
Show file tree
Hide file tree
Showing 6 changed files with 76 additions and 292 deletions.
3 changes: 3 additions & 0 deletions src-gui/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,6 @@ dist-ssr
*.njsproj
*.sln
*.sw?

# Autogenerated bindings
src/models/tauriModel.ts
37 changes: 32 additions & 5 deletions src-gui/README.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,40 @@
# Tauri + React + Typescript

This template should help get you started developing with Tauri, React and Typescript in Vite.

## Recommended IDE Setup

- [VS Code](https://code.visualstudio.com/) + [Tauri](https://marketplace.visualstudio.com/items?itemName=tauri-apps.tauri-vscode) + [rust-analyzer](https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer)

## Requirements

- For compiling the Rust code: `cargo` and `cargo tauri` ([installation](https://v2.tauri.app/reference/cli/))
- For running the Typescript code: `node` and `yarn`
- For formatting and bindings: `dprint` (`cargo install dprint@0.39.1`) and `typeshare` (`cargo install typeshare-cli`)
- If you are on Windows and you want to use the `check-bindings` command you'll need to manually install the GNU DiffUtils ([installation](https://gnuwin32.sourceforge.net/packages/diffutils.htm)) and GNU CoreUtils ([installtion](https://gnuwin32.sourceforge.net/packages/coreutils.htm)). Remember to add the installation path (probably `C:\Program Files (x86)\GnuWin32\bin`) to the `PATH` in your enviroment variables.

## Start development servers

For development, we need to run both `vite` and `tauri` servers:

```bash
cd src-gui
yarn install && yarn run dev
# let this run
```

```bash
cd src-tauri
cargo tauri dev
# let this run as well
```

## Generate bindings for Tauri API

Running `yarn run dev` or `yarn build` should automatically re-build the Typescript bindings whenever something changes. You can also manually trigger this using the `gen-bindings` command:

```bash
yarn run gen-bindings
```

You can also check whether the current bindings are up to date:

```bash
typeshare --lang=typescript --output-file ./src/models/tauriModel.ts ../swap/src
yarn run check-bindings
```
4 changes: 4 additions & 0 deletions src-gui/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@
"version": "0.0.0",
"type": "module",
"scripts": {
"check-bindings": "typeshare --lang=typescript --output-file __temp_bindings.ts ../swap/src && dprint fmt __temp_bindings.ts && diff -wbB __temp_bindings.ts ./src/models/tauriModel.ts && rm __temp_bindings.ts",
"gen-bindings": "typeshare --lang=typescript --output-file ./src/models/tauriModel.ts ../swap/src && dprint fmt ./src/models/tauriModel.ts",
"dev": "vite",
"prebuild": "yarn run gen-bindings",
"build": "tsc && vite build",
"preview": "vite preview",
"tauri": "tauri"
Expand Down Expand Up @@ -48,6 +51,7 @@
"typescript": "^5.2.2",
"typescript-eslint": "^8.1.0",
"vite": "^5.3.1",
"vite-plugin-watch": "^0.3.1",
"vite-tsconfig-paths": "^4.3.2"
}
}
284 changes: 0 additions & 284 deletions src-gui/src/models/tauriModel.ts

This file was deleted.

Loading

0 comments on commit 1fe6391

Please sign in to comment.