1
- use std:: collections:: HashMap ;
2
-
3
- use anyhow:: { bail, Result } ;
4
- use cairo_lang_filesystem:: cfg:: { Cfg , CfgSet } ;
5
- use futures:: TryFutureExt ;
6
- use indoc:: formatdoc;
7
- use itertools:: Itertools ;
8
- use serde:: { Deserialize , Serialize } ;
9
-
1
+ use crate :: compiler:: plugin:: { fetch_cairo_plugin, CairoPluginProps } ;
10
2
use crate :: compiler:: { CompilationUnit , CompilationUnitCairoPlugin , CompilationUnitComponent } ;
11
3
use crate :: core:: lockfile:: Lockfile ;
12
4
use crate :: core:: package:: { Package , PackageClass , PackageId } ;
@@ -24,6 +16,12 @@ use crate::core::{
24
16
use crate :: internal:: to_version:: ToVersion ;
25
17
use crate :: ops:: lockfile:: { read_lockfile, write_lockfile} ;
26
18
use crate :: { resolver, DEFAULT_SOURCE_PATH } ;
19
+ use anyhow:: { bail, Result } ;
20
+ use cairo_lang_filesystem:: cfg:: { Cfg , CfgSet } ;
21
+ use futures:: TryFutureExt ;
22
+ use indoc:: formatdoc;
23
+ use itertools:: Itertools ;
24
+ use std:: collections:: HashMap ;
27
25
28
26
pub struct WorkspaceResolve {
29
27
pub resolve : Resolve ,
@@ -122,6 +120,12 @@ pub fn resolve_workspace_with_opts(
122
120
123
121
let packages = collect_packages_from_resolve_graph ( & resolve, & patched) . await ?;
124
122
123
+ packages
124
+ . values ( )
125
+ . filter ( |p| p. is_cairo_plugin ( ) )
126
+ . map ( |p| fetch_cairo_plugin ( p, ws) )
127
+ . collect :: < Result < Vec < ( ) > > > ( ) ?;
128
+
125
129
Ok ( WorkspaceResolve { resolve, packages } )
126
130
}
127
131
. into_future ( ) ,
@@ -298,15 +302,6 @@ fn generate_cairo_compilation_units(
298
302
. collect :: < Result < Vec < CompilationUnit > > > ( )
299
303
}
300
304
301
- /// Properties that can be defined on Cairo plugin target.
302
- #[ derive( Debug , Serialize , Deserialize , Default ) ]
303
- #[ serde( rename_all = "kebab-case" ) ]
304
- struct CairoPluginProps {
305
- /// Mark this macro plugin as builtin.
306
- /// Builtin plugins are assumed to be available in `CairoPluginRepository` for the whole Scarb execution.
307
- pub builtin : bool ,
308
- }
309
-
310
305
pub struct PackageSolutionCollector < ' a > {
311
306
member : & ' a Package ,
312
307
resolve : & ' a WorkspaceResolve ,
0 commit comments