1
1
mirror of https://github.com/neosubhamoy/pytubepp-helper.git synced 2026-02-04 11:22:22 +05:30

(feat): added initial tauri updater and minor ci/cd changes

This commit is contained in:
2025-02-11 19:41:14 +05:30
Verified
parent ff5ed47bf6
commit 94ad04f780
14 changed files with 389 additions and 114 deletions

206
src-tauri/Cargo.lock generated
View File

@@ -62,6 +62,15 @@ version = "1.0.86"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da"
[[package]]
name = "arbitrary"
version = "1.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223"
dependencies = [
"derive_arbitrary",
]
[[package]]
name = "async-broadcast"
version = "0.7.2"
@@ -346,6 +355,25 @@ dependencies = [
"byte-tools",
]
[[package]]
name = "block-sys"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ae85a0696e7ea3b835a453750bf002770776609115e6d25c6d2ff28a8200f7e7"
dependencies = [
"objc-sys",
]
[[package]]
name = "block2"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e58aa60e59d8dbfcc36138f5f18be5f24394d33b38b24f7fd0b1caa33095f22f"
dependencies = [
"block-sys",
"objc2",
]
[[package]]
name = "block2"
version = "0.5.1"
@@ -829,6 +857,17 @@ dependencies = [
"serde",
]
[[package]]
name = "derive_arbitrary"
version = "1.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.98",
]
[[package]]
name = "derive_more"
version = "0.99.18"
@@ -918,6 +957,17 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b"
[[package]]
name = "displaydoc"
version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.98",
]
[[package]]
name = "dlopen2"
version = "0.7.0"
@@ -1111,6 +1161,18 @@ dependencies = [
"rustc_version 0.4.0",
]
[[package]]
name = "filetime"
version = "0.2.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586"
dependencies = [
"cfg-if 1.0.0",
"libc",
"libredox",
"windows-sys 0.59.0",
]
[[package]]
name = "fix-path-env"
version = "0.0.0"
@@ -1839,6 +1901,16 @@ dependencies = [
"png",
]
[[package]]
name = "icrate"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3fb69199826926eb864697bddd27f73d9fddcffc004f5733131e15b465e30642"
dependencies = [
"block2 0.4.0",
"objc2",
]
[[package]]
name = "ident_case"
version = "1.0.1"
@@ -2113,6 +2185,7 @@ checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
dependencies = [
"bitflags 2.6.0",
"libc",
"redox_syscall 0.5.3",
]
[[package]]
@@ -2226,6 +2299,12 @@ version = "0.3.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
[[package]]
name = "minisign-verify"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6367d84fb54d4242af283086402907277715b8fe46976963af5ebf173f8efba3"
[[package]]
name = "miniz_oxide"
version = "0.7.4"
@@ -2422,7 +2501,7 @@ version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56"
dependencies = [
"proc-macro-crate 2.0.0",
"proc-macro-crate 3.2.0",
"proc-macro2",
"quote",
"syn 2.0.98",
@@ -2463,7 +2542,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff"
dependencies = [
"bitflags 2.6.0",
"block2",
"block2 0.5.1",
"libc",
"objc2",
"objc2-core-data",
@@ -2479,7 +2558,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009"
dependencies = [
"bitflags 2.6.0",
"block2",
"block2 0.5.1",
"objc2",
"objc2-core-location",
"objc2-foundation",
@@ -2491,7 +2570,7 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889"
dependencies = [
"block2",
"block2 0.5.1",
"objc2",
"objc2-foundation",
]
@@ -2503,7 +2582,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef"
dependencies = [
"bitflags 2.6.0",
"block2",
"block2 0.5.1",
"objc2",
"objc2-foundation",
]
@@ -2514,7 +2593,7 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80"
dependencies = [
"block2",
"block2 0.5.1",
"objc2",
"objc2-foundation",
"objc2-metal",
@@ -2526,7 +2605,7 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781"
dependencies = [
"block2",
"block2 0.5.1",
"objc2",
"objc2-contacts",
"objc2-foundation",
@@ -2545,7 +2624,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8"
dependencies = [
"bitflags 2.6.0",
"block2",
"block2 0.5.1",
"libc",
"objc2",
]
@@ -2556,7 +2635,7 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398"
dependencies = [
"block2",
"block2 0.5.1",
"objc2",
"objc2-app-kit",
"objc2-foundation",
@@ -2569,11 +2648,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6"
dependencies = [
"bitflags 2.6.0",
"block2",
"block2 0.5.1",
"objc2",
"objc2-foundation",
]
[[package]]
name = "objc2-osa-kit"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6788b04a18ea31e3dc3ab256b8546639e5bbae07c1a0dc4ea8615252bc6aee9a"
dependencies = [
"bitflags 2.6.0",
"objc2",
"objc2-app-kit",
"objc2-foundation",
]
[[package]]
name = "objc2-quartz-core"
version = "0.2.2"
@@ -2581,7 +2672,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a"
dependencies = [
"bitflags 2.6.0",
"block2",
"block2 0.5.1",
"objc2",
"objc2-foundation",
"objc2-metal",
@@ -2604,7 +2695,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f"
dependencies = [
"bitflags 2.6.0",
"block2",
"block2 0.5.1",
"objc2",
"objc2-cloud-kit",
"objc2-core-data",
@@ -2624,7 +2715,7 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe"
dependencies = [
"block2",
"block2 0.5.1",
"objc2",
"objc2-foundation",
]
@@ -2636,7 +2727,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3"
dependencies = [
"bitflags 2.6.0",
"block2",
"block2 0.5.1",
"objc2",
"objc2-core-location",
"objc2-foundation",
@@ -2649,7 +2740,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "68bc69301064cebefc6c4c90ce9cba69225239e4b8ff99d445a2b5563797da65"
dependencies = [
"bitflags 2.6.0",
"block2",
"block2 0.5.1",
"objc2",
"objc2-app-kit",
"objc2-foundation",
@@ -2769,6 +2860,20 @@ dependencies = [
"windows-sys 0.59.0",
]
[[package]]
name = "osakit"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "35366a452fce3f8947eb2f33226a133aaf0cacedef2af67ade348d58be7f85d0"
dependencies = [
"icrate",
"objc2-foundation",
"objc2-osa-kit",
"serde",
"serde_json",
"thiserror 1.0.63",
]
[[package]]
name = "pango"
version = "0.18.3"
@@ -3174,6 +3279,7 @@ dependencies = [
"tauri-plugin-os",
"tauri-plugin-shell",
"tauri-plugin-single-instance",
"tauri-plugin-updater",
"tokio",
"tokio-tungstenite",
]
@@ -4275,6 +4381,17 @@ dependencies = [
"syn 1.0.109",
]
[[package]]
name = "tar"
version = "0.4.43"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c65998313f8e17d0d553d28f91a0df93e4dbbbf770279c7bc21ca0f09ea1a1f6"
dependencies = [
"filetime",
"libc",
"xattr",
]
[[package]]
name = "target-lexicon"
version = "0.12.16"
@@ -4488,6 +4605,37 @@ dependencies = [
"zbus",
]
[[package]]
name = "tauri-plugin-updater"
version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ebf3da08c36fb03c98c76e5563d4e74d9a590df0f40978cbe07f39cb52833f7c"
dependencies = [
"base64 0.22.1",
"dirs 6.0.0",
"flate2",
"futures-util",
"http",
"infer",
"minisign-verify",
"osakit",
"percent-encoding 2.3.1",
"reqwest",
"semver 1.0.23",
"serde",
"serde_json",
"tar",
"tauri",
"tauri-plugin",
"tempfile",
"thiserror 2.0.11",
"time 0.3.36",
"tokio",
"url 2.5.2",
"windows-sys 0.59.0",
"zip",
]
[[package]]
name = "tauri-runtime"
version = "2.3.0"
@@ -5944,7 +6092,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a2e33c08b174442ff80d5c791020696f9f8b4e4a87b8cfc7494aad6167ec44e1"
dependencies = [
"base64 0.22.1",
"block2",
"block2 0.5.1",
"cookie",
"crossbeam-channel",
"dpi",
@@ -6011,6 +6159,17 @@ dependencies = [
"pkg-config",
]
[[package]]
name = "xattr"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e105d177a3871454f754b33bb0ee637ecaaac997446375fd3e5d43a2ed00c909"
dependencies = [
"libc",
"linux-raw-sys",
"rustix",
]
[[package]]
name = "xdg-home"
version = "1.3.0"
@@ -6111,6 +6270,21 @@ version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
[[package]]
name = "zip"
version = "2.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ae9c1ea7b3a5e1f4b922ff856a129881167511563dc219869afe3787fc0c1a45"
dependencies = [
"arbitrary",
"crc32fast",
"crossbeam-utils 0.8.20",
"displaydoc",
"indexmap 2.4.0",
"memchr",
"thiserror 2.0.11",
]
[[package]]
name = "zvariant"
version = "5.4.0"

View File

@@ -26,6 +26,7 @@ tauri-plugin-os = "2"
[target.'cfg(not(any(target_os = "android", target_os = "ios")))'.dependencies]
tauri-plugin-single-instance = "2"
tauri-plugin-updater = "2"
[features]
# This feature is used for production builds or when a dev server is not specified, DO NOT REMOVE!!

View File

@@ -11,6 +11,7 @@
"shell:default",
"os:default",
"fs:default",
"updater:default",
"core:window:allow-hide",
"fs:allow-app-write",
"fs:allow-app-write-recursive"

View File

@@ -1,98 +1,133 @@
{
"$schema": "../gen/schemas/desktop-schema.json",
"identifier": "shell-scope",
"description": "allowed shell scopes",
"windows": ["main"],
"permissions": [
"$schema": "../gen/schemas/desktop-schema.json",
"identifier": "shell-scope",
"description": "allowed shell scopes",
"windows": [
"main"
],
"permissions": [
{
"identifier": "shell:allow-execute",
"allow": [
{
"identifier": "shell:allow-execute",
"allow": [
"name": "detect-windows",
"cmd": "systeminfo",
"args": []
},
{
"name": "detect-macos",
"cmd": "sw_vers",
"args": []
},
{
"name": "detect-distro",
"cmd": "grep",
"args": [
"^ID=",
"/etc/os-release"
]
},
{
"name": "detect-pkgmngr",
"cmd": "sh",
"args": [
"-c",
"command -v apt || command -v dnf || command -v pacman"
]
},
{
"name": "is-apt-installed",
"cmd": "apt",
"args": [
"--version"
]
},
{
"name": "is-dnf-installed",
"cmd": "dnf",
"args": [
"--version"
]
},
{
"name": "is-python3-installed",
"cmd": "python3",
"args": [
"--version"
]
},
{
"name": "is-pip3-installed",
"cmd": "pip3",
"args": [
"--version"
]
},
{
"name": "is-winget-installed",
"cmd": "winget",
"args": [
"--version"
]
},
{
"name": "is-homebrew-installed",
"cmd": "brew",
"args": [
"--version"
]
},
{
"name": "is-python-installed",
"cmd": "python",
"args": [
"--version"
]
},
{
"name": "is-pip-installed",
"cmd": "pip",
"args": [
"--version"
]
},
{
"name": "is-ffmpeg-installed",
"cmd": "ffmpeg",
"args": [
"-version"
]
},
{
"name": "is-nodejs-installed",
"cmd": "node",
"args": [
"--version"
]
},
{
"name": "is-pytubepp-installed",
"cmd": "pytubepp",
"args": [
"--version"
]
},
{
"name": "fetch-video-info",
"cmd": "pytubepp",
"args": [
{
"name": "detect-windows",
"cmd": "systeminfo",
"args": []
"validator": "\\S+"
},
{
"name": "detect-macos",
"cmd": "sw_vers",
"args": []
},
{
"name": "detect-distro",
"cmd": "grep",
"args": ["^ID=", "/etc/os-release"]
},
{
"name": "detect-pkgmngr",
"cmd": "sh",
"args": ["-c", "command -v apt || command -v dnf || command -v pacman"]
},
{
"name": "is-apt-installed",
"cmd": "apt",
"args": ["--version"]
},
{
"name": "is-dnf-installed",
"cmd": "dnf",
"args": ["--version"]
},
{
"name": "is-python3-installed",
"cmd": "python3",
"args": ["--version"]
},
{
"name": "is-pip3-installed",
"cmd": "pip3",
"args": ["--version"]
},
{
"name": "is-winget-installed",
"cmd": "winget",
"args": ["--version"]
},
{
"name": "is-homebrew-installed",
"cmd": "brew",
"args": ["--version"]
},
{
"name": "is-python-installed",
"cmd": "python",
"args": ["--version"]
},
{
"name": "is-pip-installed",
"cmd": "pip",
"args": ["--version"]
},
{
"name": "is-ffmpeg-installed",
"cmd": "ffmpeg",
"args": ["-version"]
},
{
"name": "is-nodejs-installed",
"cmd": "node",
"args": ["--version"]
},
{
"name": "is-pytubepp-installed",
"cmd": "pytubepp",
"args": ["--version"]
},
{
"name": "fetch-video-info",
"cmd": "pytubepp",
"args": [{ "validator": "\\S+" }, "--raw-info"]
}
]
"--raw-info"
]
}
],
"platforms": [
"windows",
"macOS",
"linux"
]
]
}
],
"platforms": [
"windows",
"macOS",
"linux"
]
}

View File

@@ -318,6 +318,7 @@ pub async fn run() {
let start_hidden = args.contains(&"--hidden".to_string());
tauri::Builder::default()
.plugin(tauri_plugin_updater::Builder::new().build())
.plugin(tauri_plugin_single_instance::init(|app, _args, _cwd| {
// Focus the main window when attempting to launch another instance
if let Some(window) = app.get_webview_window("main") {

View File

@@ -3,4 +3,4 @@
#[tokio::main]
async fn main() {
pytubepp_helper_lib::run().await;
}
}

View File

@@ -9,6 +9,7 @@
"bundle": {
"active": true,
"targets": "all",
"createUpdaterArtifacts": true,
"icon": [
"icons/32x32.png",
"icons/128x128.png",
@@ -21,7 +22,17 @@
"mainBinaryName": "pytubepp-helper",
"version": "0.6.0",
"identifier": "com.neosubhamoy.pytubepp.helper",
"plugins": {},
"plugins": {
"updater": {
"pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IEMwNjIwMjQ1OTk4NjJDRUMKUldUc0xJYVpSUUppd0Y5NGhyTUg0VDhDNFd3SFMzNnBYUlhZSlE1WGNjamcxS0tOMDE5M1dycWYK",
"endpoints": [
"https://releases.neosubhamoy.com/tauri-update/pytubepp-helper/{{target}}/{{arch}}/{{current_version}}"
],
"windows": {
"installMode": "passive"
}
}
},
"app": {
"security": {
"csp": null

View File

@@ -6,7 +6,6 @@
"frontendDist": "../dist"
},
"identifier": "com.neosubhamoy.pytubepp.helper",
"plugins": {},
"app": {
"windows": [
{
@@ -27,6 +26,7 @@
"bundle": {
"active": true,
"targets": ["deb", "rpm"],
"createUpdaterArtifacts": true,
"licenseFile": "../LICENSE",
"icon": [
"icons/32x32.png",

View File

@@ -6,7 +6,6 @@
"frontendDist": "../dist"
},
"identifier": "com.neosubhamoy.pytubepp.helper",
"plugins": {},
"app": {
"windows": [
{
@@ -50,6 +49,7 @@
"bundle": {
"active": true,
"targets": ["app", "dmg"],
"createUpdaterArtifacts": true,
"licenseFile": "../LICENSE",
"icon": [
"icons/32x32.png",

View File

@@ -6,7 +6,6 @@
"frontendDist": "../dist"
},
"identifier": "com.neosubhamoy.pytubepp.helper",
"plugins": {},
"app": {
"windows": [
{
@@ -41,6 +40,7 @@
"bundle": {
"active": true,
"targets": ["msi", "nsis"],
"createUpdaterArtifacts": true,
"licenseFile": "../LICENSE",
"icon": [
"icons/32x32.png",