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}