package main
import (
"bufio"
"bytes"
"fmt"
"github.com/BurntSushi/toml"
"io"
"math/rand"
"net"
"os"
"os/exec"
"strings"
"time"
)
type Cargo struct {
Package struct {
Name string `toml:"name"`
Version string `toml:"version"`
Authors []string `toml:"authors"`
Edition string `toml:"edition"`
Description string `toml:"description"`
License string `toml:"license"`
} `toml:"package"`
Dependencies struct {
} `toml:"dependencies"`
}
func main() {
fi, err := os.Open("/Users/fliter/go/src/shuang/httpp/no_reg_pure.txt")
if err != nil {
fmt.Printf("Error: %s\n", err)
return
}
defer fi.Close()
br := bufio.NewReader(fi)
for {
a, _, c := br.ReadLine()
if c == io.EOF {
break
}
keyword := string(a)
deal2(keyword)
min := int32(10) max := int32(100) rand.Seed(time.Now().UnixNano())
num := rand.Int31n(max-min-1) + min + 1
time.Sleep(time.Duration(num) * time.Second)
}
}
func deal2(keyword string) {
var conf Cargo
if _, err := toml.DecodeFile("/Users/fliter/rust-lab/hello-rust/Cargo.toml", &conf); err != nil {
}
fmt.Println(conf.Package.Name)
conf.Package.Name = strings.TrimSpace(keyword)
var (
firstBuffer bytes.Buffer
)
err := toml.NewEncoder(&firstBuffer).Encode(conf)
if err != nil {
fmt.Println("err:", err)
}
fmt.Println(firstBuffer.String())
if errW := WriteToFile("/Users/fliter/rust-lab/hello-rust/Cargo.toml", firstBuffer.String()); errW != nil {
fmt.Printf("keyword%s, errW%v", keyword, errW)
}
command := exec.Command("sh", "./operate.sh")
var out bytes.Buffer
var stderr bytes.Buffer
command.Stdout = &out
command.Stderr = &stderr
errC := command.Run()
if errC != nil {
fmt.Println(fmt.Sprint(errC) + ": " + stderr.String())
return
}
fmt.Println("Result: " + out.String())
}
func WriteToFile(fileName string, content string) error {
f, err := os.OpenFile(fileName, os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0644)
if err != nil {
fmt.Println("file create failed. err: " + err.Error())
} else {
n, _ := f.Seek(0, os.SEEK_END)
_, err = f.WriteAt([]byte(content), n)
defer f.Close()
}
return err
}
func TestEncodeRoundTrip() {
type Config struct {
Age int
Cats []string
Pi float64
Perfection []int
DOB time.Time
Ipaddress net.IP
}
var inputs = Config{
Age: 13,
Cats: []string{"one", "two", "three"},
Pi: 3.145,
Perfection: []int{11, 2, 3, 4},
DOB: time.Now(),
Ipaddress: net.ParseIP("192.168.59.254"),
}
var (
firstBuffer bytes.Buffer
secondBuffer bytes.Buffer
outputs Config
)
err := toml.NewEncoder(&firstBuffer).Encode(inputs)
if err != nil {
fmt.Println("err:", err)
}
_, err = toml.Decode(firstBuffer.String(), &outputs)
if err != nil {
fmt.Println("err:", err)
}
err = toml.NewEncoder(&secondBuffer).Encode(outputs)
if err != nil {
fmt.Println("err:", err)
}
if firstBuffer.String() != secondBuffer.String() {
fmt.Println("err:", err)
}
fmt.Println(firstBuffer.String())
}