Compare commits

...

5 Commits

Author SHA1 Message Date
Sanat Nayar
02b8692d7f init 2020-04-27 10:32:32 -04:00
Sanat Nayar
02f7b2006a init 2020-04-27 09:58:42 -04:00
Sanat Nayar
ae676258ac init 2020-04-27 09:56:08 -04:00
Sanat Nayar
dbe5639fd0 init 2020-04-27 09:52:33 -04:00
Sanat Nayar
65040f9fb6 added flags 2020-04-23 17:15:36 -04:00
3 changed files with 101 additions and 0 deletions

27
cmd/qliksense/export.go Normal file
View File

@@ -0,0 +1,27 @@
package main
import (
"github.com/qlik-oss/sense-installer/pkg/qliksense"
"github.com/spf13/cobra"
)
func exportCmd(q *qliksense.Qliksense) *cobra.Command {
filePath := q.QliksenseHome
c := &cobra.Command{
Use: "export",
Short: "export files for corresponding context",
Long: `exports all context files in zip format`,
Example: `qliksense export <context_name>`,
RunE: func(cmd *cobra.Command, args []string) error {
if len(args) != 0 {
context := args[0]
return q.ExportContext(context, filePath)
}
return nil
},
}
f := c.Flags()
f.StringVarP(&filePath, "output", "o", "", "Output Directory")
return c
}

View File

@@ -202,6 +202,9 @@ func rootCmd(p *qliksense.Qliksense) *cobra.Command {
// add uninstall command
cmd.AddCommand(uninstallCmd(p))
// add export command
cmd.AddCommand(exportCmd(p))
// add crds
cmd.AddCommand(crdsCmd)
crdsCmd.AddCommand(crdsViewCmd(p))

71
pkg/qliksense/export.go Normal file
View File

@@ -0,0 +1,71 @@
package qliksense
import (
"archive/zip"
"fmt"
"io"
"os"
"path/filepath"
"strings"
)
func (q *Qliksense) ExportContext(context string, output string) error {
qliksenseContextsDir := filepath.Join(q.QliksenseHome, QliksenseContextsDir)
qliksenseContextFile := filepath.Join(qliksenseContextsDir, context)
qliksenseSecretsDir := filepath.Join(q.QliksenseHome, QliksenseSecretsDir, QliksenseContextsDir)
qliksenseSecretsFile := filepath.Join(qliksenseSecretsDir, context)
// files := []string{qliksenseContextFile, qliksenseSecretsFile}
fmt.Println(q.QliksenseHome)
fmt.Println(qliksenseSecretsFile)
fmt.Println(qliksenseContextFile)
filename := "result.zip"
destinationFile, err := os.Create(output + "/" + filename)
var folders []string
if err != nil {
return err
}
folders = append(folders, qliksenseContextFile, qliksenseSecretsFile)
if err := RecursiveZip(folders, destinationFile); err != nil {
return err
}
return nil
}
func RecursiveZip(pathToZip []string, destinationFile *os.File) error {
s myZip := zip.NewWriter(destinationFile)
for _, element := range pathToZip {
err := filepath.Walk(element, func(filePath string, info os.FileInfo, err error) error {
if info.IsDir() {
return nil
}
if err != nil {
return err
}
relPath := strings.TrimPrefix(filePath, element)
zipFile, err := myZip.Create(relPath)
if err != nil {
return err
}
fsFile, err := os.Open(filePath)
if err != nil {
return err
}
_, err = io.Copy(zipFile, fsFile)
if err != nil {
return err
}
return nil
})xs
if err != nil {
return err
}
}
err := myZip.Close()
if err != nil {
return err
}
return nil
}