summaryrefslogtreecommitdiff
path: root/cmd/uptfs/main.go
diff options
context:
space:
mode:
authorayyansea <ayyansea@gmail.com>2024-11-18 21:53:29 +0300
committerayyansea <ayyansea@gmail.com>2024-11-18 21:53:29 +0300
commit574e76ae935c4931ec50b14a94dee930ed6f3d5a (patch)
treea289a98536930cd90a0d8e7e05420f3a35934923 /cmd/uptfs/main.go
parentd741a3187f0e8abb00ee34356b3e61ab9087c0d9 (diff)
feat: restructure project + add a basic cli arg parser
Diffstat (limited to 'cmd/uptfs/main.go')
-rw-r--r--cmd/uptfs/main.go60
1 files changed, 60 insertions, 0 deletions
diff --git a/cmd/uptfs/main.go b/cmd/uptfs/main.go
new file mode 100644
index 0000000..4ecb045
--- /dev/null
+++ b/cmd/uptfs/main.go
@@ -0,0 +1,60 @@
+package main
+
+import (
+ "bufio"
+ "errors"
+ "fmt"
+ "os"
+ "strings"
+
+ "github.com/alexflint/go-arg"
+ "github.com/ayyansea/uptfs/internal/filter"
+ "github.com/ayyansea/uptfs/internal/split"
+ "github.com/ayyansea/uptfs/internal/token"
+)
+
+var args struct {
+ Foo string `help:"it's a foo"`
+ Bar bool `help:"it's a bar"`
+}
+
+func main() {
+ arg.MustParse(&args)
+ fmt.Println(args.Foo, args.Bar)
+
+ scanner := bufio.NewScanner(os.Stdin)
+ scanner.Scan()
+ inputString := scanner.Text()
+
+ if inputString == "" {
+ err := errors.New("the input string is empty")
+ fmt.Printf("%v\n", err)
+ os.Exit(1)
+ }
+
+ additionalDelimeters := []string{",", "."}
+ tokens := strings.Split(inputString, " ")
+ tokens = split.FormatInput(tokens, additionalDelimeters)
+
+ if len(tokens) == 0 {
+ err := errors.New("the slice is empty")
+ fmt.Printf("%v\n", err)
+ os.Exit(1)
+ }
+
+ 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()))
+ }
+
+ head := linkedTokens.GetHead()
+ tail := linkedTokens.GetTail()
+ fmt.Println("Head: ", head.GetContent())
+ fmt.Println("Tail: ", tail.GetContent())
+}