{"id":30158495,"url":"https://github.com/shayyz-code/tauri-latest-json","last_synced_at":"2026-05-18T00:02:06.811Z","repository":{"id":309246673,"uuid":"1035608860","full_name":"shayyz-code/tauri-latest-json","owner":"shayyz-code","description":"Simply generates the `latest.json` file for auto-updates with Updater from Tauri v2 Applications, supporting multi-platform builds (Windows, macOS Intel/ARM, Linux).","archived":false,"fork":false,"pushed_at":"2026-05-09T16:00:27.000Z","size":120,"stargazers_count":43,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-05-09T18:05:13.075Z","etag":null,"topics":["latest","tauri","updater"],"latest_commit_sha":null,"homepage":"https://crates.io/crates/tauri-latest-json","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shayyz-code.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-10T18:57:23.000Z","updated_at":"2026-05-09T16:00:33.000Z","dependencies_parsed_at":"2026-05-09T18:00:52.741Z","dependency_job_id":null,"html_url":"https://github.com/shayyz-code/tauri-latest-json","commit_stats":null,"previous_names":["shayyz-code/tauri-latest-json"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/shayyz-code/tauri-latest-json","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shayyz-code%2Ftauri-latest-json","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shayyz-code%2Ftauri-latest-json/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shayyz-code%2Ftauri-latest-json/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shayyz-code%2Ftauri-latest-json/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shayyz-code","download_url":"https://codeload.github.com/shayyz-code/tauri-latest-json/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shayyz-code%2Ftauri-latest-json/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33160167,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-17T22:39:12.733Z","status":"ssl_error","status_checked_at":"2026-05-17T22:39:10.741Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["latest","tauri","updater"],"created_at":"2025-08-11T14:02:00.781Z","updated_at":"2026-05-18T00:02:06.805Z","avatar_url":"https://github.com/shayyz-code.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003etauri-latest-json\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://crates.io/crates/tauri-latest-json\"\u003e\u003cimg src=\"https://img.shields.io/crates/v/tauri-latest-json.svg\" alt=\"Crates.io\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://docs.rs/tauri-latest-json\"\u003e\u003cimg src=\"https://docs.rs/tauri-latest-json/badge.svg\" alt=\"docs.rs\" /\u003e\u003c/a\u003e\n    \u003ca href=\"CONTRIBUTING.md\"\u003e\u003cimg src=\"https://img.shields.io/badge/PRs-welcome-brightgreen.svg\" alt=\"PRs Welcome\" /\u003e\u003c/a\u003e\n    \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-MIT-blue.svg\" alt=\"License\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://crates.io/crates/tauri-latest-json\"\u003e\u003cimg src=\"https://img.shields.io/crates/d/tauri-latest-json.svg\" alt=\"Crates.io\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\nGenerate a \u003ccode\u003elatest.json\u003c/code\u003e file for \u003ca href=\"https://v2.tauri.app/\"\u003eTauri\u003c/a\u003e auto-updates, supporting multi-platform builds (Windows, macOS Intel/ARM, Linux). This CLI scans your Tauri \u003ccode\u003ebundle\u003c/code\u003e directory for installers and outputs a valid \u003ccode\u003elatest.json\u003c/code\u003e for the \u003ca href=\"https://v2.tauri.app/plugin/updater/\"\u003eTauri Updater\u003c/a\u003e.\n\u003c/p\u003e\n\n## Features\n\n- **Multi-platform detection**: Automatically finds `.msi`, `.exe`, `.dmg` (Intel/ARM), `.AppImage`, `.deb`, `.rpm`, and `.tar.gz` artifacts.\n- **Interactive Mode**: Prompts for missing information (download URL, release notes) if arguments aren't provided.\n- **Smart platform mapping**: Maps artifacts to their respective Tauri platform keys (`windows-x86_64`, `darwin-aarch64`, etc.).\n- **Flexible Versioning**: Reads version from `package.json`, `Cargo.toml`, or `tauri.conf.json` (supports both Tauri 1.0 and 2.0 structures).\n- **Root-run friendly**: Can be run from your project root or `src-tauri` directory.\n- **Graceful Signature Handling**: Automatically skips artifacts without `.sig` files (like `.dmg` which Tauri doesn't sign for updates) with a helpful warning.\n- **Verification Support**: Optional built-in signature verification against your public key.\n\n## Installation\n\n```bash\ncargo install tauri-latest-json\n```\n\n## Usage\n\n### 1. Simple Interactive Mode (Recommended)\n\nJust run the command from your Tauri project root. It will prompt you for the download URL and release notes:\n\n```bash\ntauri-latest-json\n```\n\nYou can also run from `src-tauri` and the tool will still auto-detect config and bundle paths.\n\n### 2. Command Line Arguments\n\nProvide the download URL base and release notes directly:\n\n```bash\ntauri-latest-json \u003cdownload_url_base\u003e \u003cnotes...\u003e\n```\n\n**Example:**\n\n```bash\ntauri-latest-json https://github.com/user/repo/releases/download/v0.4.4 \"Fixed security vulnerabilities and improved performance.\"\n```\n\n### 3. CI-safe Non-interactive Usage\n\nUse fully non-interactive arguments in CI/CD so jobs fail fast instead of waiting for prompts:\n\n```bash\ntauri-latest-json \"https://github.com/user/repo/releases/download/v0.4.4\" \"Release notes from CI\"\n```\n\n### 4. Root vs src-tauri\n\nBoth run modes are supported:\n\n```bash\n# From project root\ntauri-latest-json \"https://example.com/downloads\" \"release notes\"\n\n# From src-tauri\ncd src-tauri\ntauri-latest-json \"https://example.com/downloads\" \"release notes\"\n```\n\n### 5. What happens next?\n\nThe tool will:\n\n1. **Detect Version**: Scans `package.json`, `Cargo.toml`, or `tauri.conf.json`.\n2. **Find Artifacts**: Searches `target/release/bundle` for installers.\n3. **Verify Signatures**: Matches installers with their `.sig` files (skipping `.dmg` as expected).\n4. **Generate Output**: Creates a `latest.json` file in your current directory, ready for upload.\n\n## CLI Commands\n\n```bash\ntauri-latest-json help       # Show usage help\ntauri-latest-json version    # Show version\n```\n\n## Platform Detection Logic\n\nThe tool prioritizes updater-compatible artifacts:\n\n| Platform          | Priority Artifact | Extension Fallbacks          |\n| ----------------- | ----------------- | ---------------------------- |\n| **Windows**       | `.msi`            | `.exe`                       |\n| **macOS (Intel)** | `.app.tar.gz`     | `.dmg` (skipped for updates) |\n| **macOS (ARM)**   | `.app.tar.gz`     | `.dmg` (skipped for updates) |\n| **Linux (x64)**   | `.AppImage`       | `.deb`, `.rpm`, `.tar.gz`    |\n| **Linux (ARM)**   | `.AppImage`       | `.deb`, `.rpm`, `.tar.gz`    |\n\n\u003e **Note**: Tauri doesn't generate `.sig` files for `.dmg`. This tool will warn you and skip them for the updater JSON, as they aren't used for auto-updates.\n\n## Requirements\n\n- A valid Tauri project with `tauri.conf.json`.\n- A configured `updater` plugin with a `pubkey`.\n- Built artifacts in `target/release/bundle` or `src-tauri/target/release/bundle`.\n\n## Development \u0026 Testing\n\n### Running Tests\n\n```bash\ncargo test\nmake verify\n```\n\n### Smoke Testing\n\nValidate against a local real Tauri app:\n\n```bash\nmake smoke-real-app\n# Or specify a custom directory\nREAL_APP_DIR=/path/to/your-app ./scripts/smoke-real-tauri-app.sh\n```\n\n## Troubleshooting\n\n- `Could not detect bundle dir`: Build your app first so `target/*/bundle` exists.\n- `No public key found in tauri.conf.json`: Ensure updater pubkey is set in `plugins.updater.pubkey` (Tauri 2) or `tauri.updater.pubkey` (Tauri 1).\n- `Signature not found for platform ...`: Ensure `.sig` exists for updater artifacts. `.dmg` is expected to be skipped.\n- `Argument '...' missing and not in a terminal`: Provide full CLI args in CI/non-TTY environments.\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshayyz-code%2Ftauri-latest-json","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshayyz-code%2Ftauri-latest-json","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshayyz-code%2Ftauri-latest-json/lists"}