Init.
This commit is contained in:
commit
023d1559d7
4 changed files with 71 additions and 0 deletions
3
go.mod
Normal file
3
go.mod
Normal file
|
@ -0,0 +1,3 @@
|
|||
module github.com/k1574/gomtool
|
||||
|
||||
go 1.18
|
25
m/cmd/test/main.go
Normal file
25
m/cmd/test/main.go
Normal file
|
@ -0,0 +1,25 @@
|
|||
package main
|
||||
|
||||
import(
|
||||
"github.com/k1574/gomtool/m/multitool"
|
||||
"strconv"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
var(
|
||||
tools = multitool.Tools{
|
||||
"echo" : func(args []string) {
|
||||
fmt.Println(args)
|
||||
},
|
||||
"sum" : func(args []string) {
|
||||
one, _ := strconv.Atoi(args[1])
|
||||
two, _ := strconv.Atoi(args[2])
|
||||
fmt.Println(one + two)
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
func main() {
|
||||
multitool.Main("test", tools)
|
||||
}
|
||||
|
39
m/multitool/main.go
Normal file
39
m/multitool/main.go
Normal file
|
@ -0,0 +1,39 @@
|
|||
package multitool
|
||||
|
||||
import(
|
||||
"fmt"
|
||||
"os"
|
||||
"path"
|
||||
)
|
||||
|
||||
|
||||
type Tools map[string] func(args []string)
|
||||
|
||||
func Main(name string, m Tools) {
|
||||
var(
|
||||
utilName string
|
||||
args []string
|
||||
)
|
||||
|
||||
if binBase := path.Base(os.Args[0]) ; binBase != name {
|
||||
utilName = binBase
|
||||
args = os.Args[:]
|
||||
} else {
|
||||
if len(os.Args)<2 {
|
||||
for k, _ := range m {
|
||||
fmt.Printf("%s\n", k)
|
||||
}
|
||||
os.Exit(0)
|
||||
}
|
||||
utilName = os.Args[1]
|
||||
args = os.Args[1:]
|
||||
}
|
||||
|
||||
if _, ok := m[utilName] ; !ok {
|
||||
fmt.Printf("%s: No such uitl as '%s'.\n", os.Args[0], utilName )
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
m[utilName](args)
|
||||
}
|
||||
|
4
readme
Normal file
4
readme
Normal file
|
@ -0,0 +1,4 @@
|
|||
# gomtool
|
||||
|
||||
Go multitool package. Suits the task of multiple programs in one like in "goblin".
|
||||
|
Loading…
Reference in a new issue