aboutsummaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'main.go')
-rw-r--r--main.go19
1 files changed, 18 insertions, 1 deletions
diff --git a/main.go b/main.go
index aa2ce53..dd7e262 100644
--- a/main.go
+++ b/main.go
@@ -7,20 +7,24 @@ package main
import (
"context"
+ "encoding/json"
"flag"
"log"
"net/http"
"os"
"os/signal"
"regexp"
+ "strings"
"syscall"
"time"
"go.awhk.org/core"
+ "go.awhk.org/go-import-redirect/pkg/redirector"
)
var (
addr = flag.String("addr", "localhost:8080", "address to listen on")
+ cfg = flag.String("c", "", "path to a configuration file")
from = flag.String("from", "", "package prefix to remove")
to = flag.String("to", "", "repository prefix to add")
vcs = flag.String("vcs", "git", "version control system to signal")
@@ -32,7 +36,20 @@ func main() {
done := make(chan os.Signal, 1)
signal.Notify(done, os.Interrupt, syscall.SIGTERM)
- srv := http.Server{Handler: &redirector{regexp.MustCompile(*from), *to, *vcs}}
+ h := &redirector.Redirector{Template: redirector.DefaultTemplate}
+ if *cfg != "" {
+ if err := json.NewDecoder(core.Must(os.Open(*cfg))).Decode(&h.Transformers); err != nil {
+ log.Fatalln(err)
+ }
+ } else {
+ h.Transformers = append(h.Transformers, redirector.Transformer{
+ Pattern: &redirector.Pattern{regexp.MustCompile(strings.ReplaceAll(*from, `\\`, `\`))},
+ Replacement: *to,
+ VCS: *vcs,
+ })
+ }
+
+ srv := http.Server{Handler: h}
go func() {
if err := srv.Serve(core.Must(core.Listen(*addr))); err != nil && err != http.ErrServerClosed {
log.Fatalln("server.Serve:", err)