|
@@ -8,7 +8,7 @@ use super::{
|
|
};
|
|
};
|
|
|
|
|
|
use anyhow::Context;
|
|
use anyhow::Context;
|
|
-use toml_edit::{Array, Document, InlineTable, Item, Value};
|
|
|
|
|
|
+use toml_edit::{Array, Document, InlineTable, Item, Table, Value};
|
|
|
|
|
|
use std::{
|
|
use std::{
|
|
collections::HashSet,
|
|
collections::HashSet,
|
|
@@ -41,7 +41,7 @@ fn toml_array(features: &HashSet<String>) -> Array {
|
|
let mut features: Vec<String> = features.iter().map(|f| f.to_string()).collect();
|
|
let mut features: Vec<String> = features.iter().map(|f| f.to_string()).collect();
|
|
features.sort();
|
|
features.sort();
|
|
for feature in features {
|
|
for feature in features {
|
|
- f.push(feature.as_str()).unwrap();
|
|
|
|
|
|
+ f.push(feature.as_str());
|
|
}
|
|
}
|
|
f
|
|
f
|
|
}
|
|
}
|
|
@@ -52,10 +52,11 @@ pub fn rewrite_manifest(config: ConfigHandle) -> crate::Result<Manifest> {
|
|
let dependencies = manifest
|
|
let dependencies = manifest
|
|
.as_table_mut()
|
|
.as_table_mut()
|
|
.entry("dependencies")
|
|
.entry("dependencies")
|
|
|
|
+ .or_insert(Item::Table(Table::new()))
|
|
.as_table_mut()
|
|
.as_table_mut()
|
|
.expect("manifest dependencies isn't a table");
|
|
.expect("manifest dependencies isn't a table");
|
|
|
|
|
|
- let tauri_entry = dependencies.entry("tauri");
|
|
|
|
|
|
+ let tauri_item = dependencies.entry("tauri").or_insert(Item::None);
|
|
|
|
|
|
let config_guard = config.lock().unwrap();
|
|
let config_guard = config.lock().unwrap();
|
|
let config = config_guard.as_ref().unwrap();
|
|
let config = config_guard.as_ref().unwrap();
|
|
@@ -78,8 +79,8 @@ pub fn rewrite_manifest(config: ConfigHandle) -> crate::Result<Manifest> {
|
|
let mut cli_managed_features = all_allowlist_features();
|
|
let mut cli_managed_features = all_allowlist_features();
|
|
cli_managed_features.extend(vec!["cli", "updater", "system-tray"]);
|
|
cli_managed_features.extend(vec!["cli", "updater", "system-tray"]);
|
|
|
|
|
|
- if let Some(tauri) = tauri_entry.as_table_mut() {
|
|
|
|
- let manifest_features = tauri.entry("features");
|
|
|
|
|
|
+ if let Some(tauri) = tauri_item.as_table_mut() {
|
|
|
|
+ let manifest_features = tauri.entry("features").or_insert(Item::None);
|
|
if let Item::Value(Value::Array(f)) = &manifest_features {
|
|
if let Item::Value(Value::Array(f)) = &manifest_features {
|
|
for feat in f.iter() {
|
|
for feat in f.iter() {
|
|
if let Value::String(feature) = feat {
|
|
if let Value::String(feature) = feat {
|
|
@@ -90,7 +91,7 @@ pub fn rewrite_manifest(config: ConfigHandle) -> crate::Result<Manifest> {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
*manifest_features = Item::Value(Value::Array(toml_array(&features)));
|
|
*manifest_features = Item::Value(Value::Array(toml_array(&features)));
|
|
- } else if let Some(tauri) = tauri_entry.as_value_mut() {
|
|
|
|
|
|
+ } else if let Some(tauri) = tauri_item.as_value_mut() {
|
|
match tauri {
|
|
match tauri {
|
|
Value::InlineTable(table) => {
|
|
Value::InlineTable(table) => {
|
|
let manifest_features = table.get_or_insert("features", Value::Array(Default::default()));
|
|
let manifest_features = table.get_or_insert("features", Value::Array(Default::default()));
|
|
@@ -128,7 +129,7 @@ pub fn rewrite_manifest(config: ConfigHandle) -> crate::Result<Manifest> {
|
|
File::create(&manifest_path).with_context(|| "failed to open Cargo.toml for rewrite")?;
|
|
File::create(&manifest_path).with_context(|| "failed to open Cargo.toml for rewrite")?;
|
|
manifest_file.write_all(
|
|
manifest_file.write_all(
|
|
manifest
|
|
manifest
|
|
- .to_string_in_original_order()
|
|
|
|
|
|
+ .to_string()
|
|
// apply some formatting fixes
|
|
// apply some formatting fixes
|
|
.replace(r#"" ,features =["#, r#"", features = ["#)
|
|
.replace(r#"" ,features =["#, r#"", features = ["#)
|
|
.replace("]}", "] }")
|
|
.replace("]}", "] }")
|
|
@@ -143,12 +144,17 @@ pub fn rewrite_manifest(config: ConfigHandle) -> crate::Result<Manifest> {
|
|
|
|
|
|
pub fn get_workspace_members() -> crate::Result<Vec<String>> {
|
|
pub fn get_workspace_members() -> crate::Result<Vec<String>> {
|
|
let mut manifest = read_manifest(&tauri_dir().join("Cargo.toml"))?;
|
|
let mut manifest = read_manifest(&tauri_dir().join("Cargo.toml"))?;
|
|
- let workspace = manifest.as_table_mut().entry("workspace").as_table_mut();
|
|
|
|
|
|
+ let workspace = manifest
|
|
|
|
+ .as_table_mut()
|
|
|
|
+ .entry("workspace")
|
|
|
|
+ .or_insert(Item::None)
|
|
|
|
+ .as_table_mut();
|
|
|
|
|
|
match workspace {
|
|
match workspace {
|
|
Some(workspace) => {
|
|
Some(workspace) => {
|
|
let members = workspace
|
|
let members = workspace
|
|
.entry("members")
|
|
.entry("members")
|
|
|
|
+ .or_insert(Item::None)
|
|
.as_array()
|
|
.as_array()
|
|
.expect("workspace members aren't an array");
|
|
.expect("workspace members aren't an array");
|
|
Ok(
|
|
Ok(
|