feat: initial commit

This commit is contained in:
2024-08-31 20:51:12 +03:00
commit e9a369ec31
2 changed files with 79 additions and 0 deletions

3
go.mod Normal file
View File

@@ -0,0 +1,3 @@
module github.com/chenasraf/treelike
go 1.22.3

76
treelike.go Normal file
View File

@@ -0,0 +1,76 @@
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
func helpText() {
fmt.Println("Usage: treelike [OPTIONS] [PATH]")
}
func main() {
args := os.Args[1:]
fromStdin := false
fromFile := ""
_ = fromFile
var input strings.Builder
for len(args) > 0 {
switch args[0] {
case "-h", "--help":
{
helpText()
os.Exit(0)
}
case "-", "--stdin":
{
fromStdin = true
args = args[1:]
}
case "-f", "--file":
{
fromFile = args[1]
args = args[1:]
}
default:
{
input.WriteString(args[0] + "\n")
args = args[1:]
}
}
}
if fromStdin {
scanner := bufio.NewScanner(os.Stdin)
for scanner.Scan() {
input.WriteString(scanner.Text() + "\n")
}
if err := scanner.Err(); err != nil {
fmt.Fprintln(os.Stderr, "Error reading from stdin:", err)
os.Exit(1)
}
} else if fromFile != "" {
file, err := os.Open(fromFile)
if err != nil {
fmt.Fprintf(os.Stderr, "Error opening file %s: %v\n", fromFile, err)
os.Exit(1)
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
input.WriteString(scanner.Text() + "\n")
}
if err := scanner.Err(); err != nil {
fmt.Fprintln(os.Stderr, "Error reading from file:", err)
os.Exit(1)
}
} else {
helpText()
os.Exit(1)
}
fmt.Printf("input:\n%s", input.String())
}