dev: nft/ctl
This commit is contained in:
92
nft/nfctl/tp/tp.go
Normal file
92
nft/nfctl/tp/tp.go
Normal file
@ -0,0 +1,92 @@
|
||||
package tp
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type TpCmd interface {
|
||||
String() string
|
||||
Execute() error
|
||||
}
|
||||
|
||||
var (
|
||||
_ TpCmd = (*TpGenerate)(nil)
|
||||
_ TpCmd = (*TpReplace)(nil)
|
||||
)
|
||||
|
||||
type TpGenerate struct {
|
||||
pwd string
|
||||
filename string
|
||||
content []string
|
||||
}
|
||||
|
||||
func (t *TpGenerate) String() string {
|
||||
//TODO implement me
|
||||
panic("implement me")
|
||||
}
|
||||
|
||||
func (t *TpGenerate) Execute() error {
|
||||
var (
|
||||
err error
|
||||
location = t.filename
|
||||
input *os.File
|
||||
)
|
||||
|
||||
if !path.IsAbs(t.filename) {
|
||||
location = path.Join(t.pwd, t.filename)
|
||||
}
|
||||
|
||||
if err = os.MkdirAll(path.Dir(location), 0644); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if !strings.HasSuffix(location, "/") {
|
||||
if input, err = os.OpenFile(location, os.O_CREATE|os.O_APPEND, 0744); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if len(t.content) > 0 {
|
||||
content := strings.Join(t.content, "\n")
|
||||
_, err = input.WriteString(content)
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func newGenerate(pwd string, lines []string) (*TpGenerate, error) {
|
||||
if len(lines) == 0 {
|
||||
return nil, fmt.Errorf("generate cmd require file/folder name")
|
||||
}
|
||||
|
||||
return &TpGenerate{
|
||||
pwd: pwd,
|
||||
filename: lines[0],
|
||||
content: lines[1:],
|
||||
}, nil
|
||||
}
|
||||
|
||||
type TpReplace struct {
|
||||
pwd string
|
||||
}
|
||||
|
||||
func (t *TpReplace) String() string {
|
||||
//TODO implement me
|
||||
panic("implement me")
|
||||
}
|
||||
|
||||
func (t *TpReplace) Execute() error {
|
||||
//TODO implement me
|
||||
panic("implement me")
|
||||
}
|
||||
|
||||
func newReplace(pwd string, lines []string) (*TpReplace, error) {
|
||||
if len(lines) < 2 {
|
||||
return nil, fmt.Errorf("invalid replace cmd")
|
||||
}
|
||||
return &TpReplace{pwd: pwd}, nil
|
||||
}
|
Reference in New Issue
Block a user