mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-04-29 04:07:00 +02:00
Compare commits
4 Commits
yaak-cli-0
...
yaak-cli-0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
50c7992b42 | ||
|
|
5e9aebda6f | ||
|
|
a1e84c7785 | ||
|
|
fea4411afa |
37
.github/workflows/release-cli-npm.yml
vendored
37
.github/workflows/release-cli-npm.yml
vendored
@@ -14,8 +14,39 @@ permissions:
|
|||||||
contents: read
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
prepare-vendored-assets:
|
||||||
|
name: Prepare vendored plugin assets
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup Node
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: lts/*
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm ci
|
||||||
|
|
||||||
|
- name: Build plugin assets
|
||||||
|
run: |
|
||||||
|
npm run build-plugins
|
||||||
|
npm run vendor:vendor-plugins
|
||||||
|
|
||||||
|
- name: Upload vendored assets
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: vendored-assets
|
||||||
|
path: |
|
||||||
|
crates-tauri/yaak-app/vendored/plugin-runtime/index.cjs
|
||||||
|
crates-tauri/yaak-app/vendored/plugins
|
||||||
|
if-no-files-found: error
|
||||||
|
|
||||||
build-binaries:
|
build-binaries:
|
||||||
name: Build ${{ matrix.pkg }}
|
name: Build ${{ matrix.pkg }}
|
||||||
|
needs: prepare-vendored-assets
|
||||||
runs-on: ${{ matrix.runner }}
|
runs-on: ${{ matrix.runner }}
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
@@ -67,6 +98,12 @@ jobs:
|
|||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install -y pkg-config libdbus-1-dev
|
sudo apt-get install -y pkg-config libdbus-1-dev
|
||||||
|
|
||||||
|
- name: Download vendored assets
|
||||||
|
uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
name: vendored-assets
|
||||||
|
path: crates-tauri/yaak-app/vendored
|
||||||
|
|
||||||
- name: Build yaak
|
- name: Build yaak
|
||||||
run: cargo build --locked --release -p yaak-cli --bin yaak --target ${{ matrix.target }}
|
run: cargo build --locked --release -p yaak-cli --bin yaak --target ${{ matrix.target }}
|
||||||
|
|
||||||
|
|||||||
1
Cargo.lock
generated
1
Cargo.lock
generated
@@ -10149,6 +10149,7 @@ dependencies = [
|
|||||||
"env_logger",
|
"env_logger",
|
||||||
"futures",
|
"futures",
|
||||||
"hex",
|
"hex",
|
||||||
|
"include_dir",
|
||||||
"keyring",
|
"keyring",
|
||||||
"log 0.4.29",
|
"log 0.4.29",
|
||||||
"oxc_resolver",
|
"oxc_resolver",
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ dirs = "6"
|
|||||||
env_logger = "0.11"
|
env_logger = "0.11"
|
||||||
futures = "0.3"
|
futures = "0.3"
|
||||||
hex = { workspace = true }
|
hex = { workspace = true }
|
||||||
|
include_dir = "0.7"
|
||||||
keyring = { workspace = true, features = ["apple-native", "windows-native", "sync-secret-service"] }
|
keyring = { workspace = true, features = ["apple-native", "windows-native", "sync-secret-service"] }
|
||||||
log = { workspace = true }
|
log = { workspace = true }
|
||||||
rand = "0.8"
|
rand = "0.8"
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
use crate::plugin_events::CliPluginEventBridge;
|
use crate::plugin_events::CliPluginEventBridge;
|
||||||
|
use include_dir::{Dir, include_dir};
|
||||||
|
use std::fs;
|
||||||
use std::path::{Path, PathBuf};
|
use std::path::{Path, PathBuf};
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use tokio::sync::Mutex;
|
use tokio::sync::Mutex;
|
||||||
@@ -6,9 +8,17 @@ use yaak_crypto::manager::EncryptionManager;
|
|||||||
use yaak_models::blob_manager::BlobManager;
|
use yaak_models::blob_manager::BlobManager;
|
||||||
use yaak_models::db_context::DbContext;
|
use yaak_models::db_context::DbContext;
|
||||||
use yaak_models::query_manager::QueryManager;
|
use yaak_models::query_manager::QueryManager;
|
||||||
|
use yaak_plugins::bootstrap;
|
||||||
use yaak_plugins::events::PluginContext;
|
use yaak_plugins::events::PluginContext;
|
||||||
use yaak_plugins::manager::PluginManager;
|
use yaak_plugins::manager::PluginManager;
|
||||||
|
|
||||||
|
const EMBEDDED_PLUGIN_RUNTIME: &str = include_str!(concat!(
|
||||||
|
env!("CARGO_MANIFEST_DIR"),
|
||||||
|
"/../../crates-tauri/yaak-app/vendored/plugin-runtime/index.cjs"
|
||||||
|
));
|
||||||
|
static EMBEDDED_VENDORED_PLUGINS: Dir<'_> =
|
||||||
|
include_dir!("$CARGO_MANIFEST_DIR/../../crates-tauri/yaak-app/vendored/plugins");
|
||||||
|
|
||||||
pub struct CliContext {
|
pub struct CliContext {
|
||||||
data_dir: PathBuf,
|
data_dir: PathBuf,
|
||||||
query_manager: QueryManager,
|
query_manager: QueryManager,
|
||||||
@@ -33,37 +43,32 @@ impl CliContext {
|
|||||||
let installed_plugin_dir = data_dir.join("installed-plugins");
|
let installed_plugin_dir = data_dir.join("installed-plugins");
|
||||||
let node_bin_path = PathBuf::from("node");
|
let node_bin_path = PathBuf::from("node");
|
||||||
|
|
||||||
|
prepare_embedded_vendored_plugins(&vendored_plugin_dir)
|
||||||
|
.expect("Failed to prepare bundled plugins");
|
||||||
|
|
||||||
let plugin_runtime_main =
|
let plugin_runtime_main =
|
||||||
std::env::var("YAAK_PLUGIN_RUNTIME").map(PathBuf::from).unwrap_or_else(|_| {
|
std::env::var("YAAK_PLUGIN_RUNTIME").map(PathBuf::from).unwrap_or_else(|_| {
|
||||||
PathBuf::from(env!("CARGO_MANIFEST_DIR"))
|
prepare_embedded_plugin_runtime(&data_dir)
|
||||||
.join("../../crates-tauri/yaak-app/vendored/plugin-runtime/index.cjs")
|
.expect("Failed to prepare embedded plugin runtime")
|
||||||
});
|
});
|
||||||
|
|
||||||
let plugin_manager = Arc::new(
|
match bootstrap::create_and_initialize_manager(
|
||||||
PluginManager::new(
|
|
||||||
vendored_plugin_dir,
|
vendored_plugin_dir,
|
||||||
installed_plugin_dir,
|
installed_plugin_dir,
|
||||||
node_bin_path,
|
node_bin_path,
|
||||||
plugin_runtime_main,
|
plugin_runtime_main,
|
||||||
|
&query_manager,
|
||||||
|
&PluginContext::new_empty(),
|
||||||
false,
|
false,
|
||||||
)
|
)
|
||||||
.await,
|
.await
|
||||||
);
|
{
|
||||||
|
Ok(plugin_manager) => Some(plugin_manager),
|
||||||
let plugins = query_manager.connect().list_plugins().unwrap_or_default();
|
Err(err) => {
|
||||||
if !plugins.is_empty() {
|
eprintln!("Warning: Failed to initialize plugins: {err}");
|
||||||
let errors = plugin_manager
|
None
|
||||||
.initialize_all_plugins(plugins, &PluginContext::new_empty())
|
|
||||||
.await;
|
|
||||||
for (plugin_dir, error_msg) in errors {
|
|
||||||
eprintln!(
|
|
||||||
"Warning: Failed to initialize plugin '{}': {}",
|
|
||||||
plugin_dir, error_msg
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Some(plugin_manager)
|
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
};
|
};
|
||||||
@@ -113,3 +118,17 @@ impl CliContext {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn prepare_embedded_plugin_runtime(data_dir: &Path) -> std::io::Result<PathBuf> {
|
||||||
|
let runtime_dir = data_dir.join("vendored").join("plugin-runtime");
|
||||||
|
fs::create_dir_all(&runtime_dir)?;
|
||||||
|
let runtime_main = runtime_dir.join("index.cjs");
|
||||||
|
fs::write(&runtime_main, EMBEDDED_PLUGIN_RUNTIME)?;
|
||||||
|
Ok(runtime_main)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn prepare_embedded_vendored_plugins(vendored_plugin_dir: &Path) -> std::io::Result<()> {
|
||||||
|
fs::create_dir_all(vendored_plugin_dir)?;
|
||||||
|
EMBEDDED_VENDORED_PLUGINS.extract(vendored_plugin_dir)?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|||||||
@@ -23,12 +23,12 @@ use tokio::sync::Mutex;
|
|||||||
use ts_rs::TS;
|
use ts_rs::TS;
|
||||||
use yaak_api::yaak_api_client;
|
use yaak_api::yaak_api_client;
|
||||||
use yaak_models::models::Plugin;
|
use yaak_models::models::Plugin;
|
||||||
use yaak_models::util::UpdateSource;
|
|
||||||
use yaak_plugins::api::{
|
use yaak_plugins::api::{
|
||||||
PluginNameVersion, PluginSearchResponse, PluginUpdatesResponse, check_plugin_updates,
|
PluginNameVersion, PluginSearchResponse, PluginUpdatesResponse, check_plugin_updates,
|
||||||
search_plugins,
|
search_plugins,
|
||||||
};
|
};
|
||||||
use yaak_plugins::events::{Color, Icon, PluginContext, ShowToastRequest};
|
use yaak_plugins::bootstrap;
|
||||||
|
use yaak_plugins::events::PluginContext;
|
||||||
use yaak_plugins::install::{delete_and_uninstall, download_and_install};
|
use yaak_plugins::install::{delete_and_uninstall, download_and_install};
|
||||||
use yaak_plugins::manager::PluginManager;
|
use yaak_plugins::manager::PluginManager;
|
||||||
use yaak_plugins::plugin_meta::get_plugin_meta;
|
use yaak_plugins::plugin_meta::get_plugin_meta;
|
||||||
@@ -268,62 +268,23 @@ pub fn init<R: Runtime>() -> TauriPlugin<R> {
|
|||||||
.join("index.cjs");
|
.join("index.cjs");
|
||||||
|
|
||||||
let dev_mode = is_dev();
|
let dev_mode = is_dev();
|
||||||
|
let query_manager =
|
||||||
|
app_handle.state::<yaak_models::query_manager::QueryManager>().inner().clone();
|
||||||
|
|
||||||
// Create plugin manager asynchronously
|
// Create plugin manager asynchronously
|
||||||
let app_handle_clone = app_handle.clone();
|
let app_handle_clone = app_handle.clone();
|
||||||
tauri::async_runtime::block_on(async move {
|
tauri::async_runtime::block_on(async move {
|
||||||
let manager = PluginManager::new(
|
let manager = bootstrap::create_and_initialize_manager(
|
||||||
vendored_plugin_dir,
|
vendored_plugin_dir,
|
||||||
installed_plugin_dir,
|
installed_plugin_dir,
|
||||||
node_bin_path,
|
node_bin_path,
|
||||||
plugin_runtime_main,
|
plugin_runtime_main,
|
||||||
|
&query_manager,
|
||||||
|
&PluginContext::new_empty(),
|
||||||
dev_mode,
|
dev_mode,
|
||||||
)
|
)
|
||||||
.await;
|
|
||||||
|
|
||||||
// Initialize all plugins after manager is created
|
|
||||||
let bundled_dirs = manager
|
|
||||||
.list_bundled_plugin_dirs()
|
|
||||||
.await
|
.await
|
||||||
.expect("Failed to list bundled plugins");
|
.expect("Failed to initialize plugins");
|
||||||
|
|
||||||
// Ensure all bundled plugins make it into the database
|
|
||||||
let db = app_handle_clone.db();
|
|
||||||
for dir in &bundled_dirs {
|
|
||||||
if db.get_plugin_by_directory(dir).is_none() {
|
|
||||||
db.upsert_plugin(
|
|
||||||
&Plugin {
|
|
||||||
directory: dir.clone(),
|
|
||||||
enabled: true,
|
|
||||||
url: None,
|
|
||||||
..Default::default()
|
|
||||||
},
|
|
||||||
&UpdateSource::Background,
|
|
||||||
)
|
|
||||||
.expect("Failed to upsert bundled plugin");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get all plugins from database and initialize
|
|
||||||
let plugins = db.list_plugins().expect("Failed to list plugins from database");
|
|
||||||
drop(db); // Explicitly drop the connection before await
|
|
||||||
|
|
||||||
let errors =
|
|
||||||
manager.initialize_all_plugins(plugins, &PluginContext::new_empty()).await;
|
|
||||||
|
|
||||||
// Show toast for any failed plugins
|
|
||||||
for (plugin_dir, error_msg) in errors {
|
|
||||||
let plugin_name = plugin_dir.split('/').last().unwrap_or(&plugin_dir);
|
|
||||||
let toast = ShowToastRequest {
|
|
||||||
message: format!("Failed to start plugin '{}': {}", plugin_name, error_msg),
|
|
||||||
color: Some(Color::Danger),
|
|
||||||
icon: Some(Icon::AlertTriangle),
|
|
||||||
timeout: Some(10000),
|
|
||||||
};
|
|
||||||
if let Err(emit_err) = app_handle_clone.emit("show_toast", toast) {
|
|
||||||
error!("Failed to emit toast for plugin error: {emit_err:?}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
app_handle_clone.manage(manager);
|
app_handle_clone.manage(manager);
|
||||||
});
|
});
|
||||||
|
|||||||
66
crates/yaak-plugins/src/bootstrap.rs
Normal file
66
crates/yaak-plugins/src/bootstrap.rs
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
use crate::error::{Error, Result};
|
||||||
|
use crate::events::PluginContext;
|
||||||
|
use crate::manager::PluginManager;
|
||||||
|
use std::path::PathBuf;
|
||||||
|
use std::sync::Arc;
|
||||||
|
use yaak_models::models::Plugin;
|
||||||
|
use yaak_models::query_manager::QueryManager;
|
||||||
|
use yaak_models::util::UpdateSource;
|
||||||
|
|
||||||
|
/// Create a plugin manager and initialize all registered plugins.
|
||||||
|
///
|
||||||
|
/// This performs:
|
||||||
|
/// 1. Plugin runtime startup (`PluginManager::new`)
|
||||||
|
/// 2. Bundled plugin registration in DB (if missing)
|
||||||
|
/// 3. Plugin initialization from DB
|
||||||
|
pub async fn create_and_initialize_manager(
|
||||||
|
vendored_plugin_dir: PathBuf,
|
||||||
|
installed_plugin_dir: PathBuf,
|
||||||
|
node_bin_path: PathBuf,
|
||||||
|
plugin_runtime_main: PathBuf,
|
||||||
|
query_manager: &QueryManager,
|
||||||
|
plugin_context: &PluginContext,
|
||||||
|
dev_mode: bool,
|
||||||
|
) -> Result<Arc<PluginManager>> {
|
||||||
|
let plugin_manager = Arc::new(
|
||||||
|
PluginManager::new(
|
||||||
|
vendored_plugin_dir,
|
||||||
|
installed_plugin_dir,
|
||||||
|
node_bin_path,
|
||||||
|
plugin_runtime_main,
|
||||||
|
dev_mode,
|
||||||
|
)
|
||||||
|
.await,
|
||||||
|
);
|
||||||
|
|
||||||
|
let bundled_dirs = plugin_manager.list_bundled_plugin_dirs().await?;
|
||||||
|
let db = query_manager.connect();
|
||||||
|
for dir in bundled_dirs {
|
||||||
|
if db.get_plugin_by_directory(&dir).is_none() {
|
||||||
|
db.upsert_plugin(
|
||||||
|
&Plugin {
|
||||||
|
directory: dir,
|
||||||
|
enabled: true,
|
||||||
|
url: None,
|
||||||
|
..Default::default()
|
||||||
|
},
|
||||||
|
&UpdateSource::Background,
|
||||||
|
)?;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let plugins = db.list_plugins()?;
|
||||||
|
drop(db);
|
||||||
|
|
||||||
|
let init_errors = plugin_manager.initialize_all_plugins(plugins, plugin_context).await;
|
||||||
|
if !init_errors.is_empty() {
|
||||||
|
let joined = init_errors
|
||||||
|
.into_iter()
|
||||||
|
.map(|(dir, err)| format!("{dir}: {err}"))
|
||||||
|
.collect::<Vec<_>>()
|
||||||
|
.join("; ");
|
||||||
|
return Err(Error::PluginErr(format!("Failed to initialize plugin(s): {joined}")));
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(plugin_manager)
|
||||||
|
}
|
||||||
@@ -7,6 +7,7 @@
|
|||||||
//! by yaak-app's plugins_ext module.
|
//! by yaak-app's plugins_ext module.
|
||||||
|
|
||||||
pub mod api;
|
pub mod api;
|
||||||
|
pub mod bootstrap;
|
||||||
mod checksum;
|
mod checksum;
|
||||||
pub mod error;
|
pub mod error;
|
||||||
pub mod events;
|
pub mod events;
|
||||||
|
|||||||
56
package-lock.json
generated
56
package-lock.json
generated
@@ -73,7 +73,7 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@biomejs/biome": "^2.3.13",
|
"@biomejs/biome": "^2.3.13",
|
||||||
"@tauri-apps/cli": "^2.9.6",
|
"@tauri-apps/cli": "^2.9.6",
|
||||||
"@yaakapp/cli": "^0.4.0-beta.1",
|
"@yaakapp/cli": "^0.4.0-beta.2",
|
||||||
"dotenv-cli": "^11.0.0",
|
"dotenv-cli": "^11.0.0",
|
||||||
"husky": "^9.1.7",
|
"husky": "^9.1.7",
|
||||||
"nodejs-file-downloader": "^4.13.0",
|
"nodejs-file-downloader": "^4.13.0",
|
||||||
@@ -4326,9 +4326,9 @@
|
|||||||
"link": true
|
"link": true
|
||||||
},
|
},
|
||||||
"node_modules/@yaakapp/cli": {
|
"node_modules/@yaakapp/cli": {
|
||||||
"version": "0.4.0-beta.1",
|
"version": "0.4.0-beta.2",
|
||||||
"resolved": "https://registry.npmjs.org/@yaakapp/cli/-/cli-0.4.0-beta.1.tgz",
|
"resolved": "https://registry.npmjs.org/@yaakapp/cli/-/cli-0.4.0-beta.2.tgz",
|
||||||
"integrity": "sha512-Q/nRjS9nSNZy8PSBJ8VfczwSmfK4k/s9Co5YnsCiomyFppDiIR4hGjwwXAZDjcjnVZYrzAboRM2BXMjJ9PfZCA==",
|
"integrity": "sha512-UXPxTS9oWVCIr4rShC7HjcAX+gSmw/BQ5F1Xp3Rub3vY/G7+513JJsc1HhLGVZqFfOVRSMEKRxtF9/9okSyiHg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
@@ -4336,18 +4336,18 @@
|
|||||||
"yaakcli": "bin/cli.js"
|
"yaakcli": "bin/cli.js"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"@yaakapp/cli-darwin-arm64": "0.4.0-beta.1",
|
"@yaakapp/cli-darwin-arm64": "0.4.0-beta.2",
|
||||||
"@yaakapp/cli-darwin-x64": "0.4.0-beta.1",
|
"@yaakapp/cli-darwin-x64": "0.4.0-beta.2",
|
||||||
"@yaakapp/cli-linux-arm64": "0.4.0-beta.1",
|
"@yaakapp/cli-linux-arm64": "0.4.0-beta.2",
|
||||||
"@yaakapp/cli-linux-x64": "0.4.0-beta.1",
|
"@yaakapp/cli-linux-x64": "0.4.0-beta.2",
|
||||||
"@yaakapp/cli-win32-arm64": "0.4.0-beta.1",
|
"@yaakapp/cli-win32-arm64": "0.4.0-beta.2",
|
||||||
"@yaakapp/cli-win32-x64": "0.4.0-beta.1"
|
"@yaakapp/cli-win32-x64": "0.4.0-beta.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@yaakapp/cli-darwin-arm64": {
|
"node_modules/@yaakapp/cli-darwin-arm64": {
|
||||||
"version": "0.4.0-beta.1",
|
"version": "0.4.0-beta.2",
|
||||||
"resolved": "https://registry.npmjs.org/@yaakapp/cli-darwin-arm64/-/cli-darwin-arm64-0.4.0-beta.1.tgz",
|
"resolved": "https://registry.npmjs.org/@yaakapp/cli-darwin-arm64/-/cli-darwin-arm64-0.4.0-beta.2.tgz",
|
||||||
"integrity": "sha512-afvIQeT35bI6d6fRyJ6hnfr0FnzajL4wiVPniezXXEFsVjG74/FPB7jYHRTnIVwG+tPziOND1RG1ff3Hle/Duw==",
|
"integrity": "sha512-mqkyH5tIPRLs9JumP9ZmzjB5gIwmOL1yCDoJ1qVU8DIJ7mwlcQaPGYTK98pVdBcKOjofVakBTcpol9P8rBv4qw==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -4358,9 +4358,9 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@yaakapp/cli-darwin-x64": {
|
"node_modules/@yaakapp/cli-darwin-x64": {
|
||||||
"version": "0.4.0-beta.1",
|
"version": "0.4.0-beta.2",
|
||||||
"resolved": "https://registry.npmjs.org/@yaakapp/cli-darwin-x64/-/cli-darwin-x64-0.4.0-beta.1.tgz",
|
"resolved": "https://registry.npmjs.org/@yaakapp/cli-darwin-x64/-/cli-darwin-x64-0.4.0-beta.2.tgz",
|
||||||
"integrity": "sha512-4j2AwBnbmVgbzkqLDEZtSQ+/PvJ/eo6GecJcBW92YWnwR4+/R5vPT87Pd0Dy2L4X7Hy2VVmNbwNAEOVvef+u6g==",
|
"integrity": "sha512-QI/H2yUF8CkJq+cnRthoUWWTEJPH4QPA78FYcGjFRhvBaj1m2G/GlCA5NkTXm/fvIjNkQEODSihXrhU+zoSSCw==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -4371,9 +4371,9 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@yaakapp/cli-linux-arm64": {
|
"node_modules/@yaakapp/cli-linux-arm64": {
|
||||||
"version": "0.4.0-beta.1",
|
"version": "0.4.0-beta.2",
|
||||||
"resolved": "https://registry.npmjs.org/@yaakapp/cli-linux-arm64/-/cli-linux-arm64-0.4.0-beta.1.tgz",
|
"resolved": "https://registry.npmjs.org/@yaakapp/cli-linux-arm64/-/cli-linux-arm64-0.4.0-beta.2.tgz",
|
||||||
"integrity": "sha512-WgqeTcj7BIgCF1chunX/XcxmpArftYATO1q61aNPxNxIVDKVqbbOh/rLByvwFM8q9A49OjgcLI4QQT1CWdBLig==",
|
"integrity": "sha512-nvAp97LkgRpqVHyMwDdpkzlKOWG2kJXezCLRZaRWaEpbnNuviSF+0yzCuFGZRHEEspj7B0TiM+sKGkpvjNlweA==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -4384,9 +4384,9 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@yaakapp/cli-linux-x64": {
|
"node_modules/@yaakapp/cli-linux-x64": {
|
||||||
"version": "0.4.0-beta.1",
|
"version": "0.4.0-beta.2",
|
||||||
"resolved": "https://registry.npmjs.org/@yaakapp/cli-linux-x64/-/cli-linux-x64-0.4.0-beta.1.tgz",
|
"resolved": "https://registry.npmjs.org/@yaakapp/cli-linux-x64/-/cli-linux-x64-0.4.0-beta.2.tgz",
|
||||||
"integrity": "sha512-eMN7CiTbB4pH5NIHTGqNiv56PXb+V7cGg/yU+FopRk69ETH1n+cwGlx1UxSUlcLnaxx0s6pPoo3e+C4cq+i0BQ==",
|
"integrity": "sha512-9/qAMNrtE9glxih3XWGfFssIJpQ4mHNUTuWYKroc0aZZUrunnCw3tX1tQtFDxy0QRIZcGlBeBRtgxuuBd2fYbg==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
@@ -4397,9 +4397,9 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@yaakapp/cli-win32-arm64": {
|
"node_modules/@yaakapp/cli-win32-arm64": {
|
||||||
"version": "0.4.0-beta.1",
|
"version": "0.4.0-beta.2",
|
||||||
"resolved": "https://registry.npmjs.org/@yaakapp/cli-win32-arm64/-/cli-win32-arm64-0.4.0-beta.1.tgz",
|
"resolved": "https://registry.npmjs.org/@yaakapp/cli-win32-arm64/-/cli-win32-arm64-0.4.0-beta.2.tgz",
|
||||||
"integrity": "sha512-4ygqyEeHLNlTAWYpg83SuLK9dx1af6HqSfHnWFBigflENdZejD/oSGNr1XZeB61QQnjlvaJaqENs4BS9UI9piA==",
|
"integrity": "sha512-eM1zL+hl0y3NBLxWO90y9VyaFsAf0HAsECBWvhKhvEdd6KG4K1XzpXrC30cHQBGePIrCa/az8eSuvTde0Z2C/g==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
@@ -4410,9 +4410,9 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"node_modules/@yaakapp/cli-win32-x64": {
|
"node_modules/@yaakapp/cli-win32-x64": {
|
||||||
"version": "0.4.0-beta.1",
|
"version": "0.4.0-beta.2",
|
||||||
"resolved": "https://registry.npmjs.org/@yaakapp/cli-win32-x64/-/cli-win32-x64-0.4.0-beta.1.tgz",
|
"resolved": "https://registry.npmjs.org/@yaakapp/cli-win32-x64/-/cli-win32-x64-0.4.0-beta.2.tgz",
|
||||||
"integrity": "sha512-Xpxk+e9RWKOzY9siMDlgZPa0HU61GsTn5CTHOpPxUJHmUu+7urJ+sEgaoZx4fRjPBH+FVD9Y4s+zRCawd7O75w==",
|
"integrity": "sha512-ySdiK0h216EqURkM5KZoqbPTgbIX4eNK/IgrKwSazxRb369HOZYQ8X68as+VRxEL4NCMmWlQNdbBDuf+apg/mg==",
|
||||||
"cpu": [
|
"cpu": [
|
||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -98,7 +98,7 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@biomejs/biome": "^2.3.13",
|
"@biomejs/biome": "^2.3.13",
|
||||||
"@tauri-apps/cli": "^2.9.6",
|
"@tauri-apps/cli": "^2.9.6",
|
||||||
"@yaakapp/cli": "^0.4.0-beta.1",
|
"@yaakapp/cli": "^0.4.0-beta.2",
|
||||||
"dotenv-cli": "^11.0.0",
|
"dotenv-cli": "^11.0.0",
|
||||||
"husky": "^9.1.7",
|
"husky": "^9.1.7",
|
||||||
"nodejs-file-downloader": "^4.13.0",
|
"nodejs-file-downloader": "^4.13.0",
|
||||||
|
|||||||
@@ -27,7 +27,6 @@
|
|||||||
"build:copy-types": "run-p build:copy-types:*",
|
"build:copy-types": "run-p build:copy-types:*",
|
||||||
"build:copy-types:root": "cpy --flat ../../crates/yaak-plugins/bindings/*.ts ./src/bindings",
|
"build:copy-types:root": "cpy --flat ../../crates/yaak-plugins/bindings/*.ts ./src/bindings",
|
||||||
"build:copy-types:next": "cpy --flat ../../crates/yaak-plugins/bindings/serde_json/*.ts ./src/bindings/serde_json",
|
"build:copy-types:next": "cpy --flat ../../crates/yaak-plugins/bindings/serde_json/*.ts ./src/bindings/serde_json",
|
||||||
"publish": "npm publish",
|
|
||||||
"prepublishOnly": "npm run build"
|
"prepublishOnly": "npm run build"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
const { readdirSync, cpSync, existsSync } = require('node:fs');
|
const { readdirSync, cpSync, existsSync, mkdirSync } = require('node:fs');
|
||||||
const path = require('node:path');
|
const path = require('node:path');
|
||||||
|
|
||||||
const pluginsDir = path.join(__dirname, '..', 'plugins');
|
const pluginsDir = path.join(__dirname, '..', 'plugins');
|
||||||
@@ -24,6 +24,7 @@ for (const name of readdirSync(pluginsDir)) {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
const destDir = path.join(__dirname, '../crates-tauri/yaak-app/vendored/plugins/', name);
|
const destDir = path.join(__dirname, '../crates-tauri/yaak-app/vendored/plugins/', name);
|
||||||
|
mkdirSync(destDir, { recursive: true });
|
||||||
console.log(`Copying ${name} to ${destDir}`);
|
console.log(`Copying ${name} to ${destDir}`);
|
||||||
cpSync(path.join(dir, 'package.json'), path.join(destDir, 'package.json'));
|
cpSync(path.join(dir, 'package.json'), path.join(destDir, 'package.json'));
|
||||||
cpSync(path.join(dir, 'build'), path.join(destDir, 'build'), { recursive: true });
|
cpSync(path.join(dir, 'build'), path.join(destDir, 'build'), { recursive: true });
|
||||||
|
|||||||
Reference in New Issue
Block a user