mirror of
https://github.com/SagerNet/sing-geosite.git
synced 2025-12-16 14:23:16 +08:00
Generate new rule-sets
This commit is contained in:
51
main.go
51
main.go
@@ -1,6 +1,7 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"context"
|
||||
"crypto/sha256"
|
||||
"encoding/hex"
|
||||
@@ -282,7 +283,7 @@ func mergeTags(data map[string][]geosite.Item) {
|
||||
println("merged cn categories: " + strings.Join(cnCodeList, ","))
|
||||
}
|
||||
|
||||
func generate(release *github.RepositoryRelease, output string, cnOutput string, ruleSetOutput string) error {
|
||||
func generate(release *github.RepositoryRelease, output string, cnOutput string, ruleSetOutput string, ruleSetUnstableOutput string) error {
|
||||
vData, err := download(release)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -300,7 +301,12 @@ func generate(release *github.RepositoryRelease, output string, cnOutput string,
|
||||
return err
|
||||
}
|
||||
defer outputFile.Close()
|
||||
err = geosite.Write(outputFile, domainMap)
|
||||
writer := bufio.NewWriter(outputFile)
|
||||
err = geosite.Write(writer, domainMap)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = writer.Flush()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -316,12 +322,19 @@ func generate(release *github.RepositoryRelease, output string, cnOutput string,
|
||||
return err
|
||||
}
|
||||
defer cnOutputFile.Close()
|
||||
err = geosite.Write(cnOutputFile, cnDomainMap)
|
||||
writer.Reset(cnOutputFile)
|
||||
err = geosite.Write(writer, cnDomainMap)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = writer.Flush()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
os.RemoveAll(ruleSetOutput)
|
||||
os.RemoveAll(ruleSetUnstableOutput)
|
||||
err = os.MkdirAll(ruleSetOutput, 0o755)
|
||||
err = os.MkdirAll(ruleSetUnstableOutput, 0o755)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -340,17 +353,30 @@ func generate(release *github.RepositoryRelease, output string, cnOutput string,
|
||||
},
|
||||
}
|
||||
srsPath, _ := filepath.Abs(filepath.Join(ruleSetOutput, "geosite-"+code+".srs"))
|
||||
//os.Stderr.WriteString("write " + srsPath + "\n")
|
||||
outputRuleSet, err := os.Create(srsPath)
|
||||
unstableSRSPath, _ := filepath.Abs(filepath.Join(ruleSetUnstableOutput, "geosite-"+code+".srs"))
|
||||
// os.Stderr.WriteString("write " + srsPath + "\n")
|
||||
var (
|
||||
outputRuleSet *os.File
|
||||
outputRuleSetUnstable *os.File
|
||||
)
|
||||
outputRuleSet, err = os.Create(srsPath)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = srs.Write(outputRuleSet, plainRuleSet)
|
||||
if err != nil {
|
||||
outputRuleSet.Close()
|
||||
return err
|
||||
}
|
||||
err = srs.Write(outputRuleSet, plainRuleSet, false)
|
||||
outputRuleSet.Close()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
outputRuleSetUnstable, err = os.Create(unstableSRSPath)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = srs.Write(outputRuleSetUnstable, plainRuleSet, true)
|
||||
outputRuleSetUnstable.Close()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -359,7 +385,7 @@ func setActionOutput(name string, content string) {
|
||||
os.Stdout.WriteString("::set-output name=" + name + "::" + content + "\n")
|
||||
}
|
||||
|
||||
func release(source string, destination string, output string, cnOutput string, ruleSetOutput string) error {
|
||||
func release(source string, destination string, output string, cnOutput string, ruleSetOutput string, ruleSetOutputUnstable string) error {
|
||||
sourceRelease, err := fetch(source)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -374,7 +400,7 @@ func release(source string, destination string, output string, cnOutput string,
|
||||
return nil
|
||||
}
|
||||
}
|
||||
err = generate(sourceRelease, output, cnOutput, ruleSetOutput)
|
||||
err = generate(sourceRelease, output, cnOutput, ruleSetOutput, ruleSetOutputUnstable)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -389,6 +415,7 @@ func main() {
|
||||
"geosite.db",
|
||||
"geosite-cn.db",
|
||||
"rule-set",
|
||||
"rule-set-unstable",
|
||||
)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
|
||||
Reference in New Issue
Block a user