Skip to content

Commit eae0014

Browse files
committed
Split internal packages into default ones too
1 parent a7fae20 commit eae0014

File tree

5 files changed

+153
-122
lines changed

5 files changed

+153
-122
lines changed

src-tauri/src/editor.rs

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,25 @@ impl Default for UnityEditorModule {
5050
}
5151
}
5252

53+
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
54+
#[serde(rename_all = "camelCase")]
55+
pub struct EditorPackageManagerManifestPackage {
56+
pub is_discoverable: Option<bool>,
57+
pub must_be_bundled: Option<bool>,
58+
pub version: Option<String>,
59+
pub minimum_version: Option<String>,
60+
pub deprecated: Option<String>,
61+
pub remove_on_project_upgrade: Option<bool>,
62+
pub is_default: Option<bool>,
63+
}
64+
65+
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
66+
#[serde(rename_all = "camelCase")]
67+
pub struct EditorPackageManagerManifest {
68+
schema_version: u32,
69+
pub packages: HashMap<String, EditorPackageManagerManifestPackage>,
70+
}
71+
5372
pub fn get_root_folder(editor_path: impl Into<PathBuf>) -> Option<std::path::PathBuf> {
5473
let path: PathBuf = editor_path.into();
5574
// path is to exe, so go up two folders
@@ -301,6 +320,26 @@ pub fn estimate_size(
301320
Ok(disk_size)
302321
}
303322

323+
pub fn read_package_manager_manifest(editor_version: String, app_state: &tauri::State<AppState>) -> Result<EditorPackageManagerManifest, errors::AnyError> {
324+
let editor = app_state.editors.lock()
325+
.map_err(|_| errors::str_error("Failed to get editors. Is it locked?"))?
326+
.iter()
327+
.find(|x| x.version == editor_version)
328+
.ok_or(errors::str_error("Invalid editor version"))?
329+
.clone();
330+
let root_dir = crate::editor::get_package_manager_folder(&editor)?;
331+
let manifest_path = root_dir
332+
.join("Editor")
333+
.join("manifest")
334+
.with_extension("json");
335+
336+
let json = std::fs::read_to_string(&manifest_path)
337+
.map_err(|_| errors::io_not_found("Invalid package manager manifest"))?;
338+
let manifest: EditorPackageManagerManifest = serde_json::from_str(&json)
339+
.map_err(|_| errors::str_error("Invalid package manager manifest"))?;
340+
Ok(manifest)
341+
}
342+
304343
// commands
305344

306345
#[tauri::command]

src-tauri/src/package.rs

Lines changed: 69 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use std::collections::HashMap;
22

3-
use crate::{app::AppState, errors};
3+
use crate::{app::AppState, errors, template};
44

55
pub struct Package {
66
pub name: String,
@@ -13,30 +13,31 @@ pub struct Package {
1313
pub authors: Vec<String>,
1414
}
1515

16-
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
17-
#[serde(rename_all = "camelCase")]
18-
pub struct PackageManagerEditorManifest {
19-
pub schema_version: u64,
20-
pub packages: HashMap<String, PackageManagerEditorManifestPackage>,
21-
pub metadata_package_name: String
22-
}
23-
24-
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
25-
#[serde(rename_all = "camelCase")]
26-
pub struct PackageManagerEditorManifestPackage {
27-
pub is_discoverable: Option<bool>,
28-
pub must_be_bundled: Option<bool>,
29-
pub version: Option<String>,
30-
pub minimum_version: Option<String>,
31-
pub deprecated: Option<String>,
32-
pub remove_on_project_upgrade: Option<bool>,
33-
pub is_file: Option<bool>
34-
}
16+
// #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
17+
// #[serde(rename_all = "camelCase")]
18+
// pub struct PackageManagerEditorManifest {
19+
// pub schema_version: u64,
20+
// pub packages: HashMap<String, PackageManagerEditorManifestPackage>,
21+
// pub metadata_package_name: String
22+
// }
23+
24+
// #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
25+
// #[serde(rename_all = "camelCase")]
26+
// pub struct PackageManagerEditorManifestPackage {
27+
// pub is_discoverable: Option<bool>,
28+
// pub must_be_bundled: Option<bool>,
29+
// pub version: Option<String>,
30+
// pub minimum_version: Option<String>,
31+
// pub deprecated: Option<String>,
32+
// pub remove_on_project_upgrade: Option<bool>,
33+
// pub is_file: Option<bool>
34+
// }
3535

3636
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize, PartialEq, Eq)]
3737
#[serde(rename_all = "camelCase")]
3838
pub enum PackageType {
3939
Internal,
40+
Default,
4041
Git,
4142
Local
4243
}
@@ -46,71 +47,71 @@ pub enum PackageType {
4647
pub struct MinimalPackage {
4748
pub name: String,
4849
pub version: String,
49-
pub is_file: bool,
50+
// pub is_file: bool,
5051
pub is_discoverable: bool,
5152
pub _type: PackageType
5253
}
5354

54-
pub fn get_editor_package_manager_manifest(editor_version: String, app_state: &tauri::State<AppState>) -> Result<PackageManagerEditorManifest, errors::AnyError> {
55-
let editor = app_state.editors.lock()
56-
.map_err(|_| errors::str_error("Failed to get editors. Is it locked?"))?
57-
.iter()
58-
.find(|x| x.version == editor_version)
59-
.ok_or(errors::str_error("Invalid editor version"))?
60-
.clone();
61-
62-
let root_path = crate::editor::get_root_folder(editor.exe_path.clone());
63-
let manifest_folder_path = crate::editor::get_package_manager_folder(&editor)?;
64-
let manifest_folder_path = manifest_folder_path
65-
.join("Editor");
66-
67-
let manifest_path = manifest_folder_path
68-
.join("manifest")
69-
.with_extension("json");
70-
71-
if !manifest_path.exists() {
72-
return Err(errors::io_not_found("Invalid manifest path"));
73-
}
74-
75-
let manifest_contents = std::fs::read_to_string(&manifest_path)
76-
.map_err(|_| errors::io_not_found("Invalid manifest file"))?;
77-
78-
let mut manifest: PackageManagerEditorManifest = serde_json::from_str(&manifest_contents)
79-
.map_err(|_| errors::io_not_found("Invalid manifest file"))?;
80-
81-
let files = std::fs::read_dir(&manifest_folder_path)
82-
.map_err(|_| errors::io_not_found("Invalid manifest file"))?
83-
.filter_map(|x| x.ok())
84-
.filter_map(|x| x.file_name().to_str().map(|x| x.to_string()))
85-
.collect::<Vec<_>>();
86-
87-
for (key, package) in manifest.packages.iter_mut() {
88-
let version = package.version.clone();
89-
if let Some(version) = version {
90-
package.is_file = Some(files.contains(&format!("{}-{}.tgz", &key, version)));
91-
} else {
92-
package.is_file = None;
93-
}
94-
}
95-
96-
Ok(manifest)
97-
}
55+
// pub fn get_editor_package_manager_manifest(editor_version: String, app_state: &tauri::State<AppState>) -> Result<PackageManagerEditorManifest, errors::AnyError> {
56+
// let editor = app_state.editors.lock()
57+
// .map_err(|_| errors::str_error("Failed to get editors. Is it locked?"))?
58+
// .iter()
59+
// .find(|x| x.version == editor_version)
60+
// .ok_or(errors::str_error("Invalid editor version"))?
61+
// .clone();
62+
63+
// let root_path = crate::editor::get_root_folder(editor.exe_path.clone());
64+
// let manifest_folder_path = crate::editor::get_package_manager_folder(&editor)?;
65+
// let manifest_folder_path = manifest_folder_path
66+
// .join("Editor");
67+
68+
// let manifest_path = manifest_folder_path
69+
// .join("manifest")
70+
// .with_extension("json");
71+
72+
// if !manifest_path.exists() {
73+
// return Err(errors::io_not_found("Invalid manifest path"));
74+
// }
75+
76+
// let manifest_contents = std::fs::read_to_string(&manifest_path)
77+
// .map_err(|_| errors::io_not_found("Invalid manifest file"))?;
78+
79+
// let mut manifest: PackageManagerEditorManifest = serde_json::from_str(&manifest_contents)
80+
// .map_err(|_| errors::io_not_found("Invalid manifest file"))?;
81+
82+
// let files = std::fs::read_dir(&manifest_folder_path)
83+
// .map_err(|_| errors::io_not_found("Invalid manifest file"))?
84+
// .filter_map(|x| x.ok())
85+
// .filter_map(|x| x.file_name().to_str().map(|x| x.to_string()))
86+
// .collect::<Vec<_>>();
87+
88+
// for (key, package) in manifest.packages.iter_mut() {
89+
// let version = package.version.clone();
90+
// if let Some(version) = version {
91+
// package.is_file = Some(files.contains(&format!("{}-{}.tgz", &key, version)));
92+
// } else {
93+
// package.is_file = None;
94+
// }
95+
// }
96+
97+
// Ok(manifest)
98+
// }
9899

99100
// commands
100101

101102
// need to override versions with current template versions
102103
#[tauri::command]
103104
pub fn cmd_get_default_editor_packages(editor_version: String, app_state: tauri::State<AppState>) -> Result<Vec<MinimalPackage>, errors::AnyError> {
104-
let manifest = get_editor_package_manager_manifest(editor_version, &app_state)?;
105+
let manifest = crate::editor::read_package_manager_manifest(editor_version, &app_state)?;
105106
let mut manifest_packages = manifest.packages
106107
.iter()
107108
// .filter(|x| x.1.is_discoverable == Some(true))
108109
.map(|x| MinimalPackage {
109110
name: x.0.clone(),
110111
version: x.1.version.clone().unwrap_or_default(),
111-
is_file: x.1.is_file.unwrap_or(false),
112+
// is_file: x.1.is_file.unwrap_or(false),
112113
is_discoverable: x.1.is_discoverable.unwrap_or(false),
113-
_type: PackageType::Internal
114+
_type: x.1.is_default.unwrap_or(false).then(|| PackageType::Default).unwrap_or(PackageType::Internal)
114115
})
115116
.collect::<Vec<_>>();
116117

src-tauri/src/template.rs

Lines changed: 1 addition & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -87,25 +87,6 @@ pub enum UnityPipeline {
8787
Custom,
8888
}
8989

90-
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
91-
#[serde(rename_all = "camelCase")]
92-
struct EditorPackageManagerManifestPackage {
93-
is_discoverable: Option<bool>,
94-
must_be_bundled: Option<bool>,
95-
version: Option<String>,
96-
minimum_version: Option<String>,
97-
deprecated: Option<String>,
98-
remove_on_project_upgrade: Option<bool>,
99-
is_default: Option<bool>,
100-
}
101-
102-
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
103-
#[serde(rename_all = "camelCase")]
104-
pub struct EditorPackageManagerManifest {
105-
schema_version: u32,
106-
packages: HashMap<String, EditorPackageManagerManifestPackage>,
107-
}
108-
10990
// pub struct SurfaceTemplateRecord {
11091
// pub template: SurfaceTemplate,
11192
// pub category: String,
@@ -221,26 +202,6 @@ pub fn get_user_templates(editor_version: String, app_state: &tauri::State<AppSt
221202
Ok(files.collect())
222203
}
223204

224-
pub fn read_package_manager_manifest(editor_version: String, app_state: &tauri::State<AppState>) -> Result<EditorPackageManagerManifest, errors::AnyError> {
225-
let editor = app_state.editors.lock()
226-
.map_err(|_| errors::str_error("Failed to get editors. Is it locked?"))?
227-
.iter()
228-
.find(|x| x.version == editor_version)
229-
.ok_or(errors::str_error("Invalid editor version"))?
230-
.clone();
231-
let root_dir = crate::editor::get_package_manager_folder(&editor)?;
232-
let manifest_path = root_dir
233-
.join("Editor")
234-
.join("manifest")
235-
.with_extension("json");
236-
237-
let json = std::fs::read_to_string(&manifest_path)
238-
.map_err(|_| errors::io_not_found("Invalid package manager manifest"))?;
239-
let manifest: EditorPackageManagerManifest = serde_json::from_str(&json)
240-
.map_err(|_| errors::str_error("Invalid package manager manifest"))?;
241-
Ok(manifest)
242-
}
243-
244205
pub fn extract_template_information(app: &tauri::AppHandle, app_state: &tauri::State<AppState>, surface_template: &SurfaceTemplate) -> Result<TgzPackageJsonRecord, errors::AnyError> {
245206
let file_name = surface_template.path.file_name()
246207
.ok_or(errors::str_error("Invalid template file name"))?;
@@ -343,7 +304,7 @@ pub fn extract_template_information(app: &tauri::AppHandle, app_state: &tauri::S
343304
}
344305
}
345306
} else {
346-
if let Ok(manifest) = read_package_manager_manifest(surface_template.editor_version.clone(), &app_state) {
307+
if let Ok(manifest) = crate::editor::read_package_manager_manifest(surface_template.editor_version.clone(), &app_state) {
347308
manifest
348309
.packages
349310
.iter()

src/utils/tauri-types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ export namespace TauriTypes {
122122

123123
export enum PackageType {
124124
Internal = "internal",
125+
Default = "default",
125126
Git = "git",
126127
Local = "local",
127128
}

0 commit comments

Comments
 (0)