mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-09-01 06:16:58 +00:00
fix: merge PythonFileUtils into PluginFsUtils
This commit is contained in:
@@ -13,6 +13,15 @@ namespace Slic3r {
|
||||
|
||||
extern const char* const INSTALL_STATE_FILE;
|
||||
|
||||
struct PluginInstallState {
|
||||
std::string installed_from; // "local" | "cloud"
|
||||
std::string installed_version;
|
||||
std::string plugin_name;
|
||||
std::string cloud_uuid; // empty for local
|
||||
bool enabled = true;
|
||||
std::vector<std::pair<std::string, bool>> capabilities; // name -> enabled, ordered
|
||||
};
|
||||
|
||||
// Returns the cloud plugin install/scan directory for a given user_id.
|
||||
// Path: {data_dir}/orca_plugins/_subscribed/{user_id}/
|
||||
std::string get_cloud_plugin_dir(const std::string& user_id);
|
||||
@@ -48,4 +57,38 @@ std::vector<std::string> get_plugin_directories(const std::string& cloud_user_id
|
||||
// descriptor.enabled. Capabilities are NOT discovered here — a package has none until it is loaded.
|
||||
std::vector<PluginDescriptor> discover_plugin_packages(const std::vector<std::string>& dirs, std::string& error);
|
||||
|
||||
bool is_ignored_plugin_directory(const boost::filesystem::path& path);
|
||||
bool is_safe_relative_path(const boost::filesystem::path& path);
|
||||
bool is_valid_plugin_id(const std::string& id);
|
||||
bool extract_zip_to_directory(const boost::filesystem::path& zip_path, const boost::filesystem::path& destination, std::string& error);
|
||||
|
||||
// Read PEP 723 inline script metadata from a .py plugin file.
|
||||
// Populates metadata.dependencies and local identity fallbacks.
|
||||
// Returns true on success (including when no PEP 723 block is found — deps will be empty).
|
||||
bool read_python_plugin_metadata(const boost::filesystem::path& py_path, PluginDescriptor& descriptor, std::string& error);
|
||||
|
||||
// Read wheel metadata from a .whl plugin file (zip archive).
|
||||
// Reads METADATA, WHEEL, RECORD, and top_level.txt from the .dist-info directory.
|
||||
// Populates metadata.entry_package, metadata.dependencies, and local identity fallbacks.
|
||||
// Returns true on success.
|
||||
bool read_wheel_plugin_metadata(const boost::filesystem::path& whl_path, PluginDescriptor& descriptor, std::string& error);
|
||||
|
||||
// Find the single plugin entry file (.py or .whl) in a directory.
|
||||
// Ignores __whl_extracted__ and hidden files/dirs.
|
||||
// Returns the path to the entry file, or an empty path with error set if zero or multiple candidates.
|
||||
boost::filesystem::path find_installed_plugin_entry(const boost::filesystem::path& plugin_dir, std::string& error);
|
||||
|
||||
// Canonical writer: emits the .install_state.json schema for the given state.
|
||||
bool write_install_state(const boost::filesystem::path& plugin_dir, const PluginInstallState& state);
|
||||
// Builds a PluginInstallState from the descriptor and delegates to the canonical writer.
|
||||
bool write_install_state(const boost::filesystem::path& plugin_dir, const PluginDescriptor& entry, bool enabled,
|
||||
const std::vector<std::pair<std::string, bool>>& capabilities);
|
||||
// Convenience overload: write(dir, entry, /*enabled=*/true, /*capabilities=*/{}).
|
||||
bool write_install_state(const boost::filesystem::path& plugin_dir, const PluginDescriptor& entry);
|
||||
|
||||
// Reads only the cloud identity (uuid) back into the descriptor; plugin_key is always derived.
|
||||
void read_install_state(const boost::filesystem::path& plugin_dir, PluginDescriptor& entry);
|
||||
// Full read of the sidecar; returns false if there is no/invalid sidecar.
|
||||
bool read_install_state(const boost::filesystem::path& plugin_dir, PluginInstallState& out);
|
||||
|
||||
} // namespace Slic3r
|
||||
|
||||
Reference in New Issue
Block a user