Skip to main content

rez_next_package/package/
types.rs

1//! Package type definition.
2
3use rez_next_version::Version;
4use std::collections::HashMap;
5
6/// High-performance package representation compatible with rez
7#[derive(Debug, Clone, Default)]
8pub struct Package {
9    /// Package name
10    pub name: String,
11    /// Package version
12    pub version: Option<Version>,
13    /// Package description
14    pub description: Option<String>,
15    /// Package authors
16    pub authors: Vec<String>,
17    /// Package requirements
18    pub requires: Vec<String>,
19    /// Build requirements
20    pub build_requires: Vec<String>,
21    /// Private build requirements
22    pub private_build_requires: Vec<String>,
23    /// Package variants
24    pub variants: Vec<Vec<String>>,
25    /// Package tools
26    pub tools: Vec<String>,
27    /// Package commands (rex script string, set from `def commands():` body)
28    pub commands: Option<String>,
29    /// Package commands function body (alias for commands; used by validation layer)
30    pub commands_function: Option<String>,
31    /// Build command for custom builds
32    pub build_command: Option<String>,
33    /// Build system type
34    pub build_system: Option<String>,
35    /// Pre commands (executed before main commands)
36    pub pre_commands: Option<String>,
37    /// Post commands (executed after main commands)
38    pub post_commands: Option<String>,
39    /// Pre test commands (executed before tests)
40    pub pre_test_commands: Option<String>,
41    /// Pre build commands (executed before build)
42    pub pre_build_commands: Option<String>,
43    /// Package tests
44    pub tests: HashMap<String, String>,
45    /// Required rez version
46    pub requires_rez_version: Option<String>,
47    /// Package UUID
48    pub uuid: Option<String>,
49    /// Package config
50    pub config: HashMap<String, String>,
51    /// Package help
52    pub help: Option<String>,
53    /// Package relocatable flag
54    pub relocatable: Option<bool>,
55    /// Package cachable flag
56    pub cachable: Option<bool>,
57    /// Package timestamp
58    pub timestamp: Option<i64>,
59    /// Package revision
60    pub revision: Option<String>,
61    /// Package changelog
62    pub changelog: Option<String>,
63    /// Package release message
64    pub release_message: Option<String>,
65    /// Previous version
66    pub previous_version: Option<Version>,
67    /// Previous revision
68    pub previous_revision: Option<String>,
69    /// VCS type
70    pub vcs: Option<String>,
71    /// Package format version
72    pub format_version: Option<i32>,
73    /// Package base
74    pub base: Option<String>,
75    /// Package has plugins
76    pub has_plugins: Option<bool>,
77    /// Plugin for packages
78    pub plugin_for: Vec<String>,
79    /// Package hashed variants
80    pub hashed_variants: Option<bool>,
81    /// Package preprocess function
82    pub preprocess: Option<String>,
83    /// Whether this is a developer package (loaded from a working directory)
84    pub is_dev_package: Option<bool>,
85    /// File path to the package definition file (package.py or package.yaml)
86    pub filepath: Option<String>,
87    /// Set of included Python modules (from @include decorators)
88    pub includes: Option<std::collections::HashSet<String>>,
89}