summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmd/uptfs/main.go39
-rw-r--r--internal/config/config.go36
-rw-r--r--internal/filter/filters.go2
3 files changed, 15 insertions, 62 deletions
diff --git a/cmd/uptfs/main.go b/cmd/uptfs/main.go
index c7b98e1..3583dfc 100644
--- a/cmd/uptfs/main.go
+++ b/cmd/uptfs/main.go
@@ -9,16 +9,14 @@ import (
"strings"
"github.com/alexflint/go-arg"
+ "github.com/ayyansea/uptfs/internal/config"
"github.com/ayyansea/uptfs/internal/filter"
"github.com/ayyansea/uptfs/internal/split"
"github.com/ayyansea/uptfs/internal/token"
)
var args struct {
- ConfigFile string `arg:"-c" help:"path to config file" default:""`
- InputFile string `arg:"-i" help:"path to input file" default:""`
- OutputFile string `arg:"-o" help:"path to output file" default:""`
- Filters []string `arg:"-f" help:"list of filters" default:""`
+ ConfigFile string `arg:"-c" help:"path to config file" default:""`
}
func errExit(err error) {
@@ -29,7 +27,7 @@ func errExit(err error) {
func main() {
arg.MustParse(&args)
- var configFilePath, inputFilePath, outFilePath string
+ var configFilePath string
var err error
if args.ConfigFile != "" {
@@ -39,24 +37,9 @@ func main() {
errExit(err)
}
- if args.InputFile != "" {
- inputFilePath, err = filepath.Abs(args.InputFile)
- }
- if err != nil {
- errExit(err)
- }
-
- if args.OutputFile != "" {
- outFilePath, err = filepath.Abs(args.OutputFile)
- }
- if err != nil {
- errExit(err)
- }
-
- fmt.Printf("%v %v %v\n",
- configFilePath,
- inputFilePath,
- outFilePath)
+ var config config.Config
+ config.LoadConfig(configFilePath)
+ fmt.Printf("Config: %v\n", config)
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
@@ -81,11 +64,11 @@ func main() {
var linkedTokens token.LinkedTokenList
token.SliceToLinkedTokenSlice(tokens, &linkedTokens)
- lowercaseFilter := filter.NewLowercaseFilterWithExtraSteps()
- uppercaseFilter := filter.NewUppercaseFilter()
-
for current := linkedTokens.GetHead(); current != nil; current = current.GetNextToken() {
- current.SetContent(lowercaseFilter.Filter(current.GetContent()))
- current.SetContent(uppercaseFilter.Filter(current.GetContent()))
+ for _, filterName := range config.Filters {
+ filter := filter.FilterList[filterName]()
+ current.SetContent(filter.Filter(current.GetContent()))
+ }
}
+
}
diff --git a/internal/config/config.go b/internal/config/config.go
index ad35ee7..683c229 100644
--- a/internal/config/config.go
+++ b/internal/config/config.go
@@ -1,56 +1,26 @@
package config
import (
- "errors"
"fmt"
"os"
- "path/filepath"
"gopkg.in/yaml.v3"
)
type Config struct {
- Filters []string `yaml:"filters"`
- Iterations int `yaml:"iterations"`
+ Filters []string `yaml:"filters"`
}
-func getDefaultConfigPath() (defaultPath string, err error) {
- programName := "uptfs"
- configFileName := "config.yaml"
-
- if xdg := os.Getenv("XDG_CONFIG_HOME"); xdg != "" {
- return filepath.Join(xdg, programName, configFileName), nil
- }
-
- if home := os.Getenv("HOME"); home != "" {
- return filepath.Join(home, programName, configFileName), nil
- }
-
- return "", errors.New("both XDG_CONFIG_HOME and HOME are not set, can't proceed")
-}
-
-func (c *Config) LoadConfig(filepath string) *Config {
- if filepath == "" {
- var err error
- filepath, err = getDefaultConfigPath()
-
- if err != nil {
- fmt.Printf("%v\n", err)
- os.Exit(1)
- }
- }
-
+func (c *Config) LoadConfig(filepath string) {
yamlFile, err := os.ReadFile(filepath)
-
if err != nil {
fmt.Printf("%v\n", err)
os.Exit(1)
}
+
err = yaml.Unmarshal(yamlFile, c)
if err != nil {
fmt.Printf("%v\n", err)
os.Exit(1)
}
-
- return c
}
diff --git a/internal/filter/filters.go b/internal/filter/filters.go
index 8532fef..56d1714 100644
--- a/internal/filter/filters.go
+++ b/internal/filter/filters.go
@@ -4,7 +4,7 @@ import (
"strings"
)
-var filterList = map[string]interface{}{
+var FilterList = map[string]func() Filter{
"uppercase": NewUppercaseFilter,
"lowercase": NewLowercaseFilter,
"lowercase_extra": NewLowercaseFilterWithExtraSteps,