Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
projectdiscovery
GitHub Repository: projectdiscovery/nuclei
Path: blob/dev/pkg/js/devtools/bindgen/cmd/bindgen/main.go
2071 views
1
package main
2
3
import (
4
"flag"
5
"fmt"
6
"log"
7
"path"
8
"path/filepath"
9
10
"github.com/pkg/errors"
11
generator "github.com/projectdiscovery/nuclei/v3/pkg/js/devtools/bindgen"
12
fileutil "github.com/projectdiscovery/utils/file"
13
)
14
15
var (
16
dir string
17
generatedDir string
18
targetModules string
19
)
20
21
func main() {
22
flag.StringVar(&dir, "dir", "libs", "directory to process")
23
flag.StringVar(&generatedDir, "out", "generated", "directory to output generated files")
24
flag.StringVar(&targetModules, "target", "", "target modules to generate")
25
flag.Parse()
26
log.SetFlags(0)
27
if !fileutil.FolderExists(dir) {
28
log.Fatalf("directory %s does not exist", dir)
29
}
30
if err := process(); err != nil {
31
log.Fatal(err)
32
}
33
}
34
35
func process() error {
36
modules, err := generator.GetLibraryModules(dir)
37
if err != nil {
38
return errors.Wrap(err, "could not get library modules")
39
}
40
if len(modules) == 0 && fileutil.FolderExists(dir) {
41
// if no modules are found, then given directory is the module itself
42
targetModules = path.Base(dir)
43
modules = append(modules, targetModules)
44
dir = filepath.Dir(dir)
45
}
46
for _, module := range modules {
47
log.Printf("[module] Generating %s", module)
48
49
data, err := generator.CreateTemplateData(filepath.Join(dir, module), "github.com/projectdiscovery/nuclei/v3/pkg/js/libs/")
50
if err != nil {
51
return fmt.Errorf("could not create template data: %v", err)
52
}
53
54
prefixed := "lib" + module
55
// if !goOnly {
56
// err = data.WriteJSTemplate(filepath.Join(generatedDir, "js/"+prefixed), module)
57
// if err != nil {
58
// return fmt.Errorf("could not write js template: %v", err)
59
// }
60
// }
61
err = data.WriteGoTemplate(path.Join(generatedDir, "go/"+prefixed), module)
62
if err != nil {
63
return fmt.Errorf("could not write go template: %v", err)
64
}
65
// disabled for now since we have static website for docs
66
// err = data.WriteMarkdownLibraryDocumentation(path.Join(generatedDir, "markdown/"), module)
67
// if err != nil {
68
// return fmt.Errorf("could not write markdown template: %v", err)
69
// }
70
71
// err = data.WriteMarkdownIndexTemplate(path.Join(generatedDir, "markdown/"))
72
// if err != nil {
73
// return fmt.Errorf("could not write markdown index template: %v", err)
74
// }
75
data.InitNativeScripts()
76
}
77
return nil
78
}
79
80