summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
author世界 <[email protected]>2024-07-18 13:36:35 +0800
committer世界 <[email protected]>2024-07-18 13:40:44 +0800
commit9f8a5e7cba4f10cbb65ea2ba2ce81201bdb0595a (patch)
tree307110cb845a8dc74ac8e17c5dc6c7efed63bade /main.go
parentc69c0c0cc82ae8433baa8efe3a83590b7d95c37a (diff)
Generate new rule-sets20240720181558
Diffstat (limited to 'main.go')
-rw-r--r--main.go47
1 files changed, 37 insertions, 10 deletions
diff --git a/main.go b/main.go
index 1da7b1d..5ecc1d6 100644
--- a/main.go
+++ b/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, false)
+ outputRuleSet.Close()
if err != nil {
return err
}
- err = srs.Write(outputRuleSet, plainRuleSet)
+ outputRuleSetUnstable, err = os.Create(unstableSRSPath)
+ if err != nil {
+ return err
+ }
+ err = srs.Write(outputRuleSetUnstable, plainRuleSet, true)
+ outputRuleSetUnstable.Close()
if err != nil {
- outputRuleSet.Close()
return err
}
- outputRuleSet.Close()
}
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)