@@ -3,14 +3,15 @@ package depset
3
3
import (
4
4
"bytes"
5
5
"context"
6
- "encoding/json"
7
6
"fmt"
7
+ "strings"
8
8
9
+ "github.com/ethereum-optimism/optimism/devnet-sdk/descriptors"
9
10
ktfs "github.com/ethereum-optimism/optimism/devnet-sdk/kt/fs"
10
11
)
11
12
12
13
const (
13
- depsetFileName = "dependency_set.json "
14
+ depsetFileNamePrefix = "dependency_set"
14
15
)
15
16
16
17
// extractor implements the interfaces.DepsetExtractor interface
@@ -26,25 +27,42 @@ func NewExtractor(enclave string) *extractor {
26
27
}
27
28
28
29
// ExtractData extracts dependency set from its respective artifact
29
- func (e * extractor ) ExtractData (ctx context.Context ) (json. RawMessage , error ) {
30
+ func (e * extractor ) ExtractData (ctx context.Context ) ([]descriptors. DepSet , error ) {
30
31
fs , err := ktfs .NewEnclaveFS (ctx , e .enclave )
31
32
if err != nil {
32
33
return nil , err
33
34
}
34
35
35
- return extractDepsetFromArtifact (ctx , fs , depsetFileName )
36
+ return extractDepsetsFromArtifacts (ctx , fs )
36
37
}
37
38
38
- func extractDepsetFromArtifact (ctx context.Context , fs * ktfs.EnclaveFS , artifactName string ) (json. RawMessage , error ) {
39
- a , err := fs .GetArtifact (ctx , artifactName )
39
+ func extractDepsetsFromArtifacts (ctx context.Context , fs * ktfs.EnclaveFS ) ([]descriptors. DepSet , error ) {
40
+ allArtifacts , err := fs .GetAllArtifactNames (ctx )
40
41
if err != nil {
41
- return nil , fmt .Errorf ("failed to get artifact: %w" , err )
42
+ return nil , fmt .Errorf ("failed to get all artifact names : %w" , err )
42
43
}
43
44
44
- buffer := & bytes.Buffer {}
45
- if err := a .ExtractFiles (ktfs .NewArtifactFileWriter (depsetFileName , buffer )); err != nil {
46
- return nil , fmt .Errorf ("failed to extract dependency set: %w" , err )
45
+ depsetArtifacts := make ([]string , 0 )
46
+ for _ , artifactName := range allArtifacts {
47
+ if strings .HasPrefix (artifactName , depsetFileNamePrefix ) {
48
+ depsetArtifacts = append (depsetArtifacts , artifactName )
49
+ }
47
50
}
48
51
49
- return json .RawMessage (buffer .Bytes ()), nil
52
+ depsets := make ([]descriptors.DepSet , 0 )
53
+ for _ , artifactName := range depsetArtifacts {
54
+ a , err := fs .GetArtifact (ctx , artifactName )
55
+ if err != nil {
56
+ return nil , fmt .Errorf ("failed to get artifact: %w" , err )
57
+ }
58
+
59
+ buffer := & bytes.Buffer {}
60
+ if err := a .ExtractFiles (ktfs .NewArtifactFileWriter (artifactName , buffer )); err != nil {
61
+ return nil , fmt .Errorf ("failed to extract dependency set: %w" , err )
62
+ }
63
+
64
+ depsets = append (depsets , descriptors .DepSet (buffer .Bytes ()))
65
+ }
66
+
67
+ return depsets , nil
50
68
}
0 commit comments