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

(ci/cd): ci test7

This commit is contained in:
2024-11-01 14:43:47 +05:30
Unverified
parent ddfe7b2db7
commit 2e464674cb
15 changed files with 150 additions and 106 deletions

4
.gitignore vendored
View File

@@ -23,9 +23,11 @@ dist-ssr
*.sln
*.sw?
# Executables
# Executables and manifests
pytubepp-helper-msghost.exe
pytubepp-helper-autostart.exe
pytubepp-helper-msghost.json
pytubepp-helper-msghost-moz.json
# Certificate files
certificate.pfx

View File

@@ -5,11 +5,17 @@ import { fileURLToPath } from 'url';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const msghostsrc = path.join(__dirname, 'src-tauri', 'target', 'release', 'pytubepp-helper-msghost.exe');
const msghostdest = path.join(__dirname, 'src-tauri', 'pytubepp-helper-msghost.exe');
const autostartsrc = path.join(__dirname, 'src-tauri', 'target', 'release', 'pytubepp-helper-autostart.exe');
const autostartdest = path.join(__dirname, 'src-tauri', 'pytubepp-helper-autostart.exe');
const msghostSrc = path.join(__dirname, 'src-tauri', 'target', 'release', 'pytubepp-helper-msghost.exe');
const msghostDest = path.join(__dirname, 'src-tauri', 'pytubepp-helper-msghost.exe');
const autostartSrc = path.join(__dirname, 'src-tauri', 'target', 'release', 'pytubepp-helper-autostart.exe');
const autostartDest = path.join(__dirname, 'src-tauri', 'pytubepp-helper-autostart.exe');
const msghostManifestWinChromeSrc = path.join(__dirname, 'src-tauri', 'msghost-manifest', 'windows', 'chrome', 'com.neosubhamoy.pytubepp.helper.json');
const msghostManifestWinChromeDest = path.join(__dirname, 'src-tauri', 'pytubepp-helper-msghost.json');
const msghostManifestWinFirefoxSrc = path.join(__dirname, 'src-tauri', 'msghost-manifest', 'windows', 'firefox', 'com.neosubhamoy.pytubepp.helper.json');
const msghostManifestWinFirefoxDest = path.join(__dirname, 'src-tauri', 'pytubepp-helper-msghost-moz.json');
fs.copyFileSync(msghostsrc, msghostdest);
fs.copyFileSync(autostartsrc, autostartdest);
fs.copyFileSync(msghostSrc, msghostDest);
fs.copyFileSync(autostartSrc, autostartDest);
fs.copyFileSync(msghostManifestWinChromeSrc, msghostManifestWinChromeDest);
fs.copyFileSync(msghostManifestWinFirefoxSrc, msghostManifestWinFirefoxDest);
console.log('Files copied successfully');

View File

@@ -1,59 +0,0 @@
import { exec } from 'child_process';
import { promisify } from 'util';
import dotenv from 'dotenv';
import path from 'path';
dotenv.config();
const execPromise = promisify(exec);
// Common configuration
const config = {
pfxPath: 'certificate.pfx',
pfxPassword: process.env.PFX_PASS,
companyName: 'Subhamoy Biswas',
companyUrl: 'https://neosubhamoy.com',
timestampServer: 'http://timestamp.sectigo.com',
};
// Array of files to sign with their individual configurations
const filesToSign = [
{
path: 'src-tauri/target/release/pytubepp-helper-msghost.exe',
programName: 'PytubePP Helper Native Messaging Host',
},
{
path: 'src-tauri/target/release/pytubepp-helper-autostart.exe',
programName: 'PytubePP Helper (Autostart)',
},
// Add more files as needed
];
const signFile = async (fileConfig) => {
const { path: filePath, programName } = fileConfig;
const command = `signtool sign /f "${config.pfxPath}" /p ${config.pfxPassword} /d "${programName}" /du "${config.companyUrl}" /n "${config.companyName}" /t ${config.timestampServer} /fd sha256 "${filePath}"`;
try {
const { stdout, stderr } = await execPromise(command);
console.log(`Successfully signed ${path.basename(filePath)}`);
console.log(stdout);
} catch (error) {
console.error(`Failed to sign ${path.basename(filePath)}`);
console.error(error.message);
}
};
const signAllFiles = async () => {
if (!config.pfxPassword) {
console.error('PFX password not found in environment variables.');
return;
}
for (const file of filesToSign) {
await signFile(file);
}
console.log('All files processed.');
};
signAllFiles();

60
src-tauri/Cargo.lock generated
View File

@@ -2085,6 +2085,17 @@ dependencies = [
"vcpkg",
]
[[package]]
name = "os_info"
version = "3.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ae99c7fa6dd38c7cafe1ec085e804f8f555a2f8659b0dbe03f1f9963a9b51092"
dependencies = [
"log 0.4.22",
"serde",
"windows-sys 0.52.0",
]
[[package]]
name = "os_pipe"
version = "1.2.1"
@@ -3232,6 +3243,19 @@ dependencies = [
"unicode-ident",
]
[[package]]
name = "sys-locale"
version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8a11bd9c338fdba09f7881ab41551932ad42e405f61d01e8406baea71c07aee"
dependencies = [
"js-sys",
"libc",
"wasm-bindgen",
"web-sys",
"windows-sys 0.45.0",
]
[[package]]
name = "system-deps"
version = "5.0.0"
@@ -3359,6 +3383,7 @@ dependencies = [
"objc",
"once_cell",
"open",
"os_info",
"os_pipe",
"percent-encoding 2.3.1",
"rand 0.8.5",
@@ -3371,6 +3396,7 @@ dependencies = [
"serialize-to-javascript",
"shared_child",
"state",
"sys-locale",
"tar",
"tauri-macros",
"tauri-runtime",
@@ -4148,6 +4174,16 @@ version = "0.2.93"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484"
[[package]]
name = "web-sys"
version = "0.3.70"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0"
dependencies = [
"js-sys",
"wasm-bindgen",
]
[[package]]
name = "webkit2gtk"
version = "0.18.2"
@@ -4390,6 +4426,15 @@ dependencies = [
"windows_x86_64_msvc 0.42.2",
]
[[package]]
name = "windows-sys"
version = "0.45.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
dependencies = [
"windows-targets 0.42.2",
]
[[package]]
name = "windows-sys"
version = "0.48.0"
@@ -4417,6 +4462,21 @@ dependencies = [
"windows-targets 0.52.6",
]
[[package]]
name = "windows-targets"
version = "0.42.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
dependencies = [
"windows_aarch64_gnullvm 0.42.2",
"windows_aarch64_msvc 0.42.2",
"windows_i686_gnu 0.42.2",
"windows_i686_msvc 0.42.2",
"windows_x86_64_gnu 0.42.2",
"windows_x86_64_gnullvm 0.42.2",
"windows_x86_64_msvc 0.42.2",
]
[[package]]
name = "windows-targets"
version = "0.48.5"

View File

@@ -11,7 +11,7 @@ edition = "2021"
tauri-build = { version = "1", features = [] }
[dependencies]
tauri = { version = "1", features = [ "process-relaunch", "window-start-dragging", "window-close", "window-unmaximize", "process-exit", "window-show", "window-unminimize", "window-hide", "window-minimize", "window-maximize", "system-tray", "shell-all"] }
tauri = { version = "1", features = [ "os-all", "process-relaunch", "window-start-dragging", "window-close", "window-unmaximize", "process-exit", "window-show", "window-unminimize", "window-hide", "window-minimize", "window-maximize", "system-tray", "shell-all"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
tokio = { version = "1.39.2", features = ["full"] }

View File

@@ -29,8 +29,6 @@ fn connect_with_retry(url: &str, max_attempts: u32) -> Result<websocket::sync::C
fn main() -> Result<(), Box<dyn std::error::Error>> {
// Launch the main application
let _ = Command::new("pytubepp-helper.exe")
.spawn();
let _ = Command::new("pytubepp-helper")
.spawn();

View File

@@ -0,0 +1,7 @@
{
"name": "com.neosubhamoy.pytubepp.helper",
"description": "A helper app for pytubepp-extension to communicate with pytubepp-cli",
"path": "/usr/bin/pytubepp-helper-msghost",
"type": "stdio",
"allowed_origins": ["chrome-extension://adebedkaedobamilbbobbajepnnkkfcg/", "chrome-extension://mmhhbpdhkogpcieblpdilflfoimajepp/", "chrome-extension://ebneapoekcjelholncnlpdohjbjabhbi/", "chrome-extension://cohjehldppmnbfogjdjpbjknhlhmfhjj/"]
}

View File

@@ -0,0 +1,7 @@
{
"name": "com.neosubhamoy.pytubepp.helper",
"description": "A helper app for pytubepp-extention to communicate with pytubepp-cli",
"path": "/usr/bin/pytubepp-helper-msghost",
"type": "stdio",
"allowed_extensions": ["pytubepp-addon@neosubhamoy.com"]
}

View File

@@ -8,6 +8,9 @@
"tauri": {
"allowlist": {
"all": false,
"os": {
"all": true
},
"shell": {
"all": true,
"execute": true,
@@ -127,9 +130,9 @@
"deb": {
"depends": ["python3-pip", "ffmpeg"],
"files": {
"/etc/opt/chrome/native-messaging-hosts/com.neosubhamoy.pytubepp.helper.json": "./pytubepp-helper-msghost.json",
"/etc/chromium/native-messaging-hosts/com.neosubhamoy.pytubepp.helper.json": "./pytubepp-helper-msghost.json",
"/usr/lib/mozilla/native-messaging-hosts/com.neosubhamoy.pytubepp.helper.json": "./pytubepp-helper-msghost-moz.json",
"/etc/opt/chrome/native-messaging-hosts/com.neosubhamoy.pytubepp.helper.json": "./msghost-manifest/linux/chrome/com.neosubhamoy.pytubepp.helper.json",
"/etc/chromium/native-messaging-hosts/com.neosubhamoy.pytubepp.helper.json": "./msghost-manifest/linux/chrome/com.neosubhamoy.pytubepp.helper.json",
"/usr/lib/mozilla/native-messaging-hosts/com.neosubhamoy.pytubepp.helper.json": "./msghost-manifest/linux/firefox/com.neosubhamoy.pytubepp.helper.json",
"/usr/bin/pytubepp-helper-msghost": "./target/release/pytubepp-helper-msghost",
"/usr/bin/pytubepp-helper-autostart": "./target/release/pytubepp-helper-autostart",
"/etc/xdg/autostart/pytubepp-helper-autostart.desktop": "./autostart/pytubepp-helper-autostart.desktop"
@@ -141,9 +144,9 @@
"license": "MIT",
"depends": ["python3-pip", "ffmpeg-free"],
"files": {
"/etc/opt/chrome/native-messaging-hosts/com.neosubhamoy.pytubepp.helper.json": "./pytubepp-helper-msghost.json",
"/etc/chromium/native-messaging-hosts/com.neosubhamoy.pytubepp.helper.json": "./pytubepp-helper-msghost.json",
"/usr/lib/mozilla/native-messaging-hosts/com.neosubhamoy.pytubepp.helper.json": "./pytubepp-helper-msghost-moz.json",
"/etc/opt/chrome/native-messaging-hosts/com.neosubhamoy.pytubepp.helper.json": "./msghost-manifest/linux/chrome/com.neosubhamoy.pytubepp.helper.json",
"/etc/chromium/native-messaging-hosts/com.neosubhamoy.pytubepp.helper.json": "./msghost-manifest/linux/chrome/com.neosubhamoy.pytubepp.helper.json",
"/usr/lib/mozilla/native-messaging-hosts/com.neosubhamoy.pytubepp.helper.json": "./msghost-manifest/linux/firefox/com.neosubhamoy.pytubepp.helper.json",
"/usr/bin/pytubepp-helper-msghost": "./target/release/pytubepp-helper-msghost",
"/usr/bin/pytubepp-helper-autostart": "./target/release/pytubepp-helper-autostart",
"/etc/xdg/autostart/pytubepp-helper-autostart.desktop": "./autostart/pytubepp-helper-autostart.desktop"

View File

@@ -8,6 +8,9 @@
"tauri": {
"allowlist": {
"all": false,
"os": {
"all": true
},
"shell": {
"all": true,
"execute": true,

View File

@@ -8,6 +8,9 @@
"tauri": {
"allowlist": {
"all": false,
"os": {
"all": true
},
"shell": {
"all": true,
"execute": true,

View File

@@ -4,6 +4,7 @@ import "./index.css";
import { invoke } from "@tauri-apps/api/tauri";
import { listen } from '@tauri-apps/api/event';
import { appWindow } from '@tauri-apps/api/window';
import { platform } from '@tauri-apps/api/os';
import { ThemeProvider } from "@/components/theme-provider";
import { Button } from "@/components/ui/button";
import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert"
@@ -193,26 +194,40 @@ function App() {
useEffect(() => {
checkAllPrograms();
detectWindows().then((result) => {
if(result) {
const runPlatformSpecificChecks = async () => {
const currentPlatform = await platform();
switch (currentPlatform) {
case 'win32':
const windowsResult = await detectWindows();
if (windowsResult) {
setIsWindows(true);
setWindowsVersion(extractVersion(result));
setWindowsVersion(extractVersion(windowsResult));
}
})
detectMacOs().then((result) => {
if(result) {
break;
case 'darwin':
const macResult = await detectMacOs();
if (macResult) {
setIsMacOs(true);
setMacOsVersion(extractVersion(result));
setMacOsVersion(extractVersion(macResult));
}
})
detectDistro().then((result) => {
if(result) {
setDistroId(extractDistroId(result))
setDistroBase(detectDistroBase(extractDistroId(result)))
break;
case 'linux':
const distroResult = await detectDistro();
if (distroResult) {
setDistroId(extractDistroId(distroResult));
setDistroBase(detectDistroBase(extractDistroId(distroResult)));
}
})
break;
default:
console.log('Unsupported platform');
}
, []);
};
runPlatformSpecificChecks().catch(console.error);
}, [])
return (
<ThemeProvider defaultTheme="dark" storageKey="vite-ui-theme">

View File

@@ -94,9 +94,8 @@ export function extractVersion(output: string): string | null {
/OS Version:.*Build (\d+)/, // Pattern for Windows build
/apt (\d+\.\d+\.\d+)/, // Pattern for apt
/(\d+\.\d+\.\d+)/, // Pattern for dnf
/ProductVersion:\s+(\d+\.\d+\.\d+)/, // Pattern for macOS version
/ProductVersion:\s+(\d+\.\d+(\.\d+)?)/, // Pattern for macOS version
/Homebrew (\d+\.\d+\.\d+)/, // Pattern for Homebrew
];
for (const pattern of versionPatterns) {
const match = output.match(pattern);