diff options
| author | Nikolaus Gotsche <n@softwarefools.com> | 2018-11-02 13:03:42 +0100 |
|---|---|---|
| committer | Nikolaus Gotsche <n@softwarefools.com> | 2018-11-02 13:03:42 +0100 |
| commit | 38cd567117fb2248a175f23cb8a736a988e3691c (patch) | |
| tree | d9bba5d41b9c6126c5fa249b9175d1486d8d4ddd /importexport.go | |
| parent | 2a50cbb5ffd3f4fbc088bd18598980e0f142d7b7 (diff) | |
Full working import/export with TARing of the files
Diffstat (limited to 'importexport.go')
| -rw-r--r-- | importexport.go | 106 |
1 files changed, 90 insertions, 16 deletions
diff --git a/importexport.go b/importexport.go index e1af448..5431506 100644 --- a/importexport.go +++ b/importexport.go @@ -2,16 +2,27 @@ package main import ( "os" + "os/exec" //"github.com/atotto/encoding/csv" - //"io" - _ "fmt" + "fmt" "time" "bufio" "strconv" "encoding/csv" ) -func ExportTasks(in []Task,filename string) { +const ( + timeform string = "2006-01-02 15:04" + taskfile string = "/tmp/laboravi.export.tasks" + custfile string = "/tmp/laboravi.export.customers" + projfile string = "/tmp/laboravi.export.projects" + //taskfile string = "laboravi.export.tasks" + //custfile string = "laboravi.export.customers" + //projfile string = "laboravi.export.projects" +) + +func ExportTasks(in []Task) { + filename := taskfile file ,err := os.Create(filename) checkErr(err) defer file.Close() @@ -19,13 +30,15 @@ func ExportTasks(in []Task,filename string) { w := csv.NewWriter(file) defer w.Flush() for _,i := range in { - str := []string{Sint(i.Id),Sint(i.Projectid),i.Start.Format(time.RFC3339),i.Stop.Format(time.RFC3339),i.Taskname,i.Comment,Sint(i.Checkout)} + //str := []string{Sint(i.Id),Sint(i.Projectid),i.Start.Format(time.RFC3339),i.Stop.Format(time.RFC3339),i.Taskname,i.Comment,Sint(i.Checkout)} + str := []string{Sint(i.Id),Sint(i.Projectid),i.Start.Format(timeform),i.Stop.Format(timeform),i.Taskname,i.Comment,Sint(i.Checkout)} w.Write(str) //w.WriteStruct(i) } } -func ExportProjects(in []Project,filename string) { +func ExportProjects(in []Project) { + filename := projfile file ,err := os.Create(filename) checkErr(err) defer file.Close() @@ -33,14 +46,16 @@ func ExportProjects(in []Project,filename string) { w := csv.NewWriter(file) defer w.Flush() for _,i := range in { - str := []string{Sint(i.Id),i.Name,i.Comment,i.First.Format(time.RFC3339),i.Last.Format(time.RFC3339),Sint(i.Finished),Sint(i.Customer)} + //str := []string{Sint(i.Id),i.Name,i.Comment,i.First.Format(time.RFC3339),i.Last.Format(time.RFC3339),Sint(i.Finished),Sint(i.Customer)} + str := []string{Sint(i.Id),i.Name,i.Comment,i.First.Format(timeform),i.Last.Format(timeform),Sint(i.Finished),Sint(i.Customer)} w.Write(str) //w.Write([]string{" Fuck","Master","Flash"}) //w.WriteStruct(i) } } -func ExportCustomers(in []Customer,filename string) { +func ExportCustomers(in []Customer) { + filename := custfile file ,err := os.Create(filename) checkErr(err) defer file.Close() @@ -48,14 +63,17 @@ func ExportCustomers(in []Customer,filename string) { w := csv.NewWriter(file) defer w.Flush() for _,i := range in { - str := []string{Sint(i.Id),i.Company,i.Name,i.Address,Sflo(i.Satz),i.Lastbill.Format(time.RFC3339)} + //str := []string{Sint(i.Id),i.Company,i.Name,i.Address,Sflo(i.Satz),i.Lastbill.Format(time.RFC3339)} + str := []string{Sint(i.Id),i.Company,i.Name,i.Address,Sflo(i.Satz),i.Lastbill.Format(timeform)} w.Write(str) //w.WriteStruct(i) } } // Import an array of Tasks from a csv of given filename -func ImportTasks(filename string) ([]Task) { +func ImportTasks() ([]Task) { + filename := taskfile + //file ,err := os.Create(filename) var tsk []Task //w := NewReader(strings.NewReader()) f, _ := os.Open(filename) @@ -72,9 +90,9 @@ func ImportTasks(filename string) ([]Task) { checkErr(err) pr, err := strconv.Atoi(line[1]) checkErr(err) - sta,err := time.Parse(time.RFC3339,line[2]) + sta,err := time.Parse(timeform,line[2]) checkErr(err) - sto,err := time.Parse(time.RFC3339,line[3]) + sto,err := time.Parse(timeform,line[3]) checkErr(err) ch, err := strconv.Atoi(line[6]) checkErr(err) @@ -94,7 +112,9 @@ func ImportTasks(filename string) ([]Task) { } // Import an array of Customers from a csv of given filename -func ImportCustomers(filename string) ([]Customer) { +func ImportCustomers() ([]Customer) { + filename := custfile + //file ,err := os.Create(filename) var cust []Customer //w := NewReader(strings.NewReader()) f, _ := os.Open(filename) @@ -111,7 +131,7 @@ func ImportCustomers(filename string) ([]Customer) { checkErr(err) sat,err := strconv.ParseFloat(line[4],64) checkErr(err) - tim,err := time.Parse(time.RFC3339,line[5]) + tim,err := time.Parse(timeform,line[5]) checkErr(err) data := Customer{ Id: id, @@ -127,7 +147,9 @@ func ImportCustomers(filename string) ([]Customer) { } // Import an array of Projects from a csv of given filename -func ImportProjects(filename string) (prjs []Project) { +func ImportProjects() (prjs []Project) { + filename := projfile + //file ,err := os.Create(filename) //w := NewReader(strings.NewReader()) f, _ := os.Open(filename) @@ -141,9 +163,9 @@ func ImportProjects(filename string) (prjs []Project) { for _, line := range lines { id, err := strconv.Atoi(line[0]) checkErr(err) - fir,err := time.Parse(time.RFC3339,line[3]) + fir,err := time.Parse(timeform,line[3]) checkErr(err) - las,err := time.Parse(time.RFC3339,line[4]) + las,err := time.Parse(timeform,line[4]) checkErr(err) fin,err := strconv.Atoi(line[5]) checkErr(err) @@ -162,3 +184,55 @@ func ImportProjects(filename string) (prjs []Project) { } return } + +func TarExports(filename string) { + var ( + cmdOut []byte + err error + ) + cmd := "tar" + fln := fmt.Sprintf("/tmp/%s",filename) + //args := []string{"-cf",filename,"/tmp/laboravi.export.tasks","/tmp/laboravi.export.customers","/tmp/laboravi.export.projects"} + args := []string{"-cf",fln,taskfile,projfile,custfile} + if cmdOut, err = exec.Command(cmd, args...).Output(); err != nil { + //panic(err) + } + _ = cmdOut + cmd = "mv" + args = []string{fln,"."} + if cmdOut, err = exec.Command(cmd, args...).Output(); err != nil { + //panic(err) + } + _ = cmdOut +} + +func UnTarExports(filename string) { + var ( + cmdOut []byte + err error + ) + cmd := "tar" + //args := []string{"-xf",filename,"/tmp/laboravi.export.tasks","/tmp/laboravi.export.customers","/tmp/laboravi.export.projects"} + //args := []string{"-xf",filename,taskfile,projfile,custfile} + args := []string{"-xf",filename,"-C","/"} + if cmdOut, err = exec.Command(cmd, args...).Output(); err != nil { + //panic(err) + } + _ = cmdOut +} + +func PurgeTemps() { + var ( + cmdOut []byte + err error + ) + cmd := "rm" + //args := []string{"/tmp/laboravi.export.tasks","/tmp/laboravi.export.customers","/tmp/laboravi.export.projects"} + args := []string{taskfile,projfile,custfile} + //args := []string{"/tmp/laboravi.export.*"} + if cmdOut, err = exec.Command(cmd, args...).Output(); err != nil { + //panic(err) + } + _ = cmdOut +} + |
