-
Notifications
You must be signed in to change notification settings - Fork 182
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(sozo): add full workspace and accept non-dojo targets #2207
Changes from all commits
04b6e7f
87b754b
f6eef30
a31683b
86f6663
0754d11
74b1ac4
23e19f2
80a3e9d
4d5b52f
8280817
ed596b1
c1d0aa5
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -98,8 +98,15 @@ impl Compiler for DojoCompiler { | |||||||||||||||||||||||||||||||||||||||||||
let props: Props = unit.main_component().target_props()?; | ||||||||||||||||||||||||||||||||||||||||||||
let target_dir = unit.target_dir(ws); | ||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||
// TODO: if we want to output the manifests at the package level, | ||||||||||||||||||||||||||||||||||||||||||||
// we must iterate on the ws members, to find the location of the | ||||||||||||||||||||||||||||||||||||||||||||
// sole package with the `dojo` target. | ||||||||||||||||||||||||||||||||||||||||||||
// In this case, we can use this path to output the manifests. | ||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||
let compiler_config = build_compiler_config(&unit, ws); | ||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||
trace!(target: LOG_TARGET, unit = %unit.name(), ?props, "Compiling unit dojo compiler."); | ||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||
let mut main_crate_ids = collect_main_crate_ids(&unit, db); | ||||||||||||||||||||||||||||||||||||||||||||
let core_crate_ids: Vec<CrateId> = collect_core_crate_ids(db); | ||||||||||||||||||||||||||||||||||||||||||||
main_crate_ids.extend(core_crate_ids); | ||||||||||||||||||||||||||||||||||||||||||||
|
@@ -347,10 +354,21 @@ fn update_files( | |||||||||||||||||||||||||||||||||||||||||||
fs::create_dir_all(contracts_dir.path_unchecked())?; | ||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||
// Ensure `contracts` dir exist event if no contracts are compiled | ||||||||||||||||||||||||||||||||||||||||||||
// to avoid errors when loading manifests. | ||||||||||||||||||||||||||||||||||||||||||||
let base_contracts_dir = base_manifests_dir.join(CONTRACTS_DIR); | ||||||||||||||||||||||||||||||||||||||||||||
let base_contracts_abis_dir = base_abis_dir.join(CONTRACTS_DIR); | ||||||||||||||||||||||||||||||||||||||||||||
if !base_contracts_dir.exists() { | ||||||||||||||||||||||||||||||||||||||||||||
std::fs::create_dir_all(&base_contracts_dir)?; | ||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||
if !base_contracts_abis_dir.exists() { | ||||||||||||||||||||||||||||||||||||||||||||
std::fs::create_dir_all(&base_contracts_abis_dir)?; | ||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+357
to
+367
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ohayo, sensei! Nice addition of directory creation logic. Ensuring the - if !base_contracts_dir.exists() {
- std::fs::create_dir_all(&base_contracts_dir)?;
- }
- if !base_contracts_abis_dir.exists() {
- std::fs::create_dir_all(&base_contracts_abis_dir)?;
- }
+ [base_contracts_dir, base_contracts_abis_dir].iter().try_for_each(|dir| {
+ if !dir.exists() {
+ std::fs::create_dir_all(dir)
+ } else {
+ Ok(())
+ }
+ })?; Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||
for (_, (manifest, class, module_id)) in contracts.iter_mut() { | ||||||||||||||||||||||||||||||||||||||||||||
write_manifest_and_abi( | ||||||||||||||||||||||||||||||||||||||||||||
&base_manifests_dir.join(CONTRACTS_DIR), | ||||||||||||||||||||||||||||||||||||||||||||
&base_abis_dir.join(CONTRACTS_DIR), | ||||||||||||||||||||||||||||||||||||||||||||
&base_contracts_dir, | ||||||||||||||||||||||||||||||||||||||||||||
&base_contracts_abis_dir, | ||||||||||||||||||||||||||||||||||||||||||||
&manifest_dir, | ||||||||||||||||||||||||||||||||||||||||||||
manifest, | ||||||||||||||||||||||||||||||||||||||||||||
&class.abi, | ||||||||||||||||||||||||||||||||||||||||||||
|
@@ -373,10 +391,21 @@ fn update_files( | |||||||||||||||||||||||||||||||||||||||||||
fs::create_dir_all(models_dir.path_unchecked())?; | ||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||
// Ensure `models` dir exist event if no models are compiled | ||||||||||||||||||||||||||||||||||||||||||||
// to avoid errors when loading manifests. | ||||||||||||||||||||||||||||||||||||||||||||
let base_models_dir = base_manifests_dir.join(MODELS_DIR); | ||||||||||||||||||||||||||||||||||||||||||||
let base_models_abis_dir = base_abis_dir.join(MODELS_DIR); | ||||||||||||||||||||||||||||||||||||||||||||
if !base_models_dir.exists() { | ||||||||||||||||||||||||||||||||||||||||||||
std::fs::create_dir_all(&base_models_dir)?; | ||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||
if !base_models_abis_dir.exists() { | ||||||||||||||||||||||||||||||||||||||||||||
std::fs::create_dir_all(&base_models_abis_dir)?; | ||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+394
to
+404
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ohayo, sensei! Nice addition of directory creation logic. Ensuring the - if !base_models_dir.exists() {
- std::fs::create_dir_all(&base_models_dir)?;
- }
- if !base_models_abis_dir.exists() {
- std::fs::create_dir_all(&base_models_abis_dir)?;
- }
+ [base_models_dir, base_models_abis_dir].iter().try_for_each(|dir| {
+ if !dir.exists() {
+ std::fs::create_dir_all(dir)
+ } else {
+ Ok(())
+ }
+ })?; Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||
for (_, (manifest, class, module_id)) in models.iter_mut() { | ||||||||||||||||||||||||||||||||||||||||||||
write_manifest_and_abi( | ||||||||||||||||||||||||||||||||||||||||||||
&base_manifests_dir.join(MODELS_DIR), | ||||||||||||||||||||||||||||||||||||||||||||
&base_abis_dir.join(MODELS_DIR), | ||||||||||||||||||||||||||||||||||||||||||||
&base_models_dir, | ||||||||||||||||||||||||||||||||||||||||||||
&base_models_abis_dir, | ||||||||||||||||||||||||||||||||||||||||||||
&manifest_dir, | ||||||||||||||||||||||||||||||||||||||||||||
manifest, | ||||||||||||||||||||||||||||||||||||||||||||
&class.abi, | ||||||||||||||||||||||||||||||||||||||||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ohayo, sensei! Acknowledge the TODO comment.
The TODO comment indicates a potential future enhancement to output manifests at the package level.
Would you like me to create a GitHub issue to track this task, or provide assistance in implementing this feature?