Generate new rule-sets

This commit is contained in:
世界
2024-07-18 13:36:35 +08:00
parent c69c0c0cc8
commit 9f8a5e7cba
4 changed files with 101 additions and 51 deletions

51
main.go
View File

@@ -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)