Upgraded the paths tool.
This commit is contained in:
parent
ab6def327b
commit
0e0d0696bc
1 changed files with 33 additions and 2 deletions
|
@ -6,22 +6,53 @@ import (
|
||||||
"bufio"
|
"bufio"
|
||||||
"os"
|
"os"
|
||||||
"github.com/surdeus/goblin/src/pathx"
|
"github.com/surdeus/goblin/src/pathx"
|
||||||
|
"path"
|
||||||
|
"log"
|
||||||
|
"errors"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
part string
|
||||||
|
handlers = map[string] func(string) string {
|
||||||
|
"base" : path.Base,
|
||||||
|
"ext" : path.Ext,
|
||||||
|
"dir" : path.Dir,
|
||||||
|
"all" : func(v string) string {return v},
|
||||||
|
}
|
||||||
|
handler func(string) string
|
||||||
|
r bool
|
||||||
|
noPartErr = errors.New("no such part")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
func handlePath(p string) {
|
func handlePath(p string) {
|
||||||
|
if handler != nil {
|
||||||
|
p = handler(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
if r {
|
||||||
pth := pathx.From(p)
|
pth := pathx.From(p)
|
||||||
fmt.Println(pth.Real())
|
fmt.Println(pth.Real())
|
||||||
|
} else {
|
||||||
|
fmt.Println(p)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func Run(args []string) {
|
func Run(args []string) {
|
||||||
arg0 := args[0]
|
arg0 := args[0]
|
||||||
args = args[1:]
|
args = args[1:]
|
||||||
flags := flag.NewFlagSet(arg0, flag.ExitOnError)
|
flags := flag.NewFlagSet(arg0, flag.ExitOnError)
|
||||||
|
flags.StringVar(&part, "p", "all", "part of path you want to print")
|
||||||
|
flags.BoolVar(&r, "r", false, "print real OS dependent paths")
|
||||||
|
|
||||||
flags.Parse(args)
|
flags.Parse(args)
|
||||||
args = flags.Args()
|
args = flags.Args()
|
||||||
|
lhandler, ok := handlers[part]
|
||||||
|
if !ok {
|
||||||
|
log.Fatal(noPartErr)
|
||||||
|
}
|
||||||
|
handler = lhandler
|
||||||
|
|
||||||
for _, p := range args {
|
for _, p := range args {
|
||||||
handlePath(p)
|
handlePath(p)
|
||||||
|
|
Loading…
Reference in a new issue