move dependency expansion earlier in the process
[scpubgit/DX.git] / lib / DX / Step / ResolveProposition.pm
index cb236d8..9efd8b3 100644 (file)
@@ -12,7 +12,25 @@ with 'DX::Role::Step';
 
 has actions => (is => 'ro', isa => ArrayRef[Action], required => 1);
 
-has depends_on => (is => 'ro', isa => DependencyGroupList, required => 1);
+#has depends_on => (is => 'ro', isa => DependencyGroupList, required => 1);
+
+has depends_on => (is => 'ro', required => 1, coerce => sub {
+  my ($dep_groups) = @_;
+  my @exp;
+  assert_DependencyGroupList $dep_groups;
+  [ map {
+    my ($on, @deps) = @$_;
+    my @exp;
+    DEP: foreach my $dep (@deps) {
+      my ($type, @path) = @$dep;
+      push @exp, [
+        $type,
+        map { ref() ? @{$_->identity_path or next DEP} : $_ } @path
+      ];
+    }
+    (@exp ? [ $on, @exp ] : ());
+  } @$dep_groups ];
+});
 
 has resolves => (is => 'ro', isa => Proposition);