-
Notifications
You must be signed in to change notification settings - Fork 2.5k
Expand file tree
/
Copy pathhuggingface.go
More file actions
88 lines (81 loc) · 2.85 KB
/
Copy pathhuggingface.go
File metadata and controls
88 lines (81 loc) · 2.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
package engine
import (
"google.golang.org/protobuf/proto"
"google.golang.org/protobuf/types/known/anypb"
"github.com/trufflesecurity/trufflehog/v3/pkg/context"
"github.com/trufflesecurity/trufflehog/v3/pkg/pb/sourcespb"
"github.com/trufflesecurity/trufflehog/v3/pkg/sources"
"github.com/trufflesecurity/trufflehog/v3/pkg/sources/huggingface"
)
// HuggingfaceConfig represents the configuration for HuggingFace.
type HuggingfaceConfig struct {
Endpoint string
Models []string
Spaces []string
Datasets []string
Organizations []string
Users []string
IncludeModels []string
IgnoreModels []string
IncludeSpaces []string
IgnoreSpaces []string
IncludeDatasets []string
IgnoreDatasets []string
Buckets []string
IncludeBuckets []string
IgnoreBuckets []string
SkipAllModels bool
SkipAllSpaces bool
SkipAllDatasets bool
SkipAllBuckets bool
IncludeDiscussions bool
IncludePrs bool
Token string
Concurrency int
}
// ScanHuggingface scans HuggingFace with the provided options.
func (e *Engine) ScanHuggingface(ctx context.Context, c HuggingfaceConfig) (sources.JobProgressRef, error) {
connection := sourcespb.Huggingface{
Endpoint: c.Endpoint,
Models: c.Models,
Spaces: c.Spaces,
Datasets: c.Datasets,
Organizations: c.Organizations,
Users: c.Users,
IncludeModels: c.IncludeModels,
IgnoreModels: c.IgnoreModels,
IncludeSpaces: c.IncludeSpaces,
IgnoreSpaces: c.IgnoreSpaces,
IncludeDatasets: c.IncludeDatasets,
IgnoreDatasets: c.IgnoreDatasets,
Buckets: c.Buckets,
IncludeBuckets: c.IncludeBuckets,
IgnoreBuckets: c.IgnoreBuckets,
SkipAllModels: c.SkipAllModels,
SkipAllSpaces: c.SkipAllSpaces,
SkipAllDatasets: c.SkipAllDatasets,
SkipAllBuckets: c.SkipAllBuckets,
IncludeDiscussions: c.IncludeDiscussions,
IncludePrs: c.IncludePrs,
}
if len(c.Token) > 0 {
connection.Credential = &sourcespb.Huggingface_Token{
Token: c.Token,
}
} else {
connection.Credential = &sourcespb.Huggingface_Unauthenticated{}
}
var conn anypb.Any
err := anypb.MarshalFrom(&conn, &connection, proto.MarshalOptions{})
if err != nil {
ctx.Logger().Error(err, "failed to marshal huggingface connection")
return sources.JobProgressRef{}, err
}
sourceName := "trufflehog - huggingface"
sourceID, jobID, _ := e.sourceManager.GetIDs(ctx, sourceName, sourcespb.SourceType_SOURCE_TYPE_HUGGINGFACE)
huggingfaceSource := &huggingface.Source{}
if err := huggingfaceSource.Init(ctx, sourceName, jobID, sourceID, true, &conn, c.Concurrency); err != nil {
return sources.JobProgressRef{}, err
}
return e.sourceManager.EnumerateAndScan(ctx, sourceName, huggingfaceSource)
}