/
commands.go
105 lines (95 loc) · 2.3 KB
/
commands.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
package main
import (
"strings"
)
const (
envconFileExt = ".json"
)
type commands struct {
fileStore filer
session launcher
input inputer
}
func (p *commands) checkFileExists(fileName string) bool {
return p.fileStore.exists(fileName + envconFileExt)
}
func (p *commands) list() ([]string, error) {
fileNames := []string{}
files, err := p.fileStore.listFiles()
if err != nil {
return nil, err
}
for i := range files {
fileNames = append(fileNames, strings.Replace(files[i], envconFileExt, "", -1))
}
return fileNames, nil
}
func (p *commands) listEnv(fileName string) (map[string]string, error) {
var pass string
file, err := p.fileStore.getFile(fileName + envconFileExt)
if err != nil {
return nil, err
}
if file.fileContent.Encrypted {
pass = p.input.passwordMasked("File is encrypted, please enter the passpharse")
}
return file.getContent(pass)
}
func (p *commands) source(fileName string) error {
var pass string
var envs map[string]string
envFile, err := p.fileStore.getFile(fileName + envconFileExt)
if err != nil {
return err
}
if envFile.fileContent.Encrypted {
pass = p.input.passwordMasked("File is encrypted, please enter the passpharse")
}
envs, err = envFile.getContent(pass)
if err != nil {
return err
}
p.session.launch(envs)
return nil
}
func (p *commands) create(fileName string, env map[string]string, encrypted bool) error {
var pass string
if encrypted {
pass = p.input.passwordMasked("Enter a passpharse")
}
envFile, err := p.fileStore.newFile(fileName+envconFileExt, encrypted)
if err != nil {
return err
}
err = envFile.setContent(env, pass)
if err != nil {
return err
}
return envFile.save()
}
func (p *commands) update(fileName string, env map[string]string) error {
var pass string
envs := make(map[string]string)
envFile, err := p.fileStore.getFile(fileName + envconFileExt)
if err != nil {
return err
}
if envFile.fileContent.Encrypted {
pass = p.input.passwordMasked("File is encrypted, please enter the passpharse")
}
envs, err = envFile.getContent(pass)
if err != nil {
return err
}
for k, v := range env {
envs[k] = v
}
err = envFile.setContent(envs, pass)
if err != nil {
return err
}
return envFile.save()
}
func (p *commands) delete(fileName string) error {
return p.fileStore.deleteFile(fileName + envconFileExt)
}