4 changed files with 93 additions and 1 deletions
@ -1,3 +1,4 @@
@@ -1,3 +1,4 @@
|
||||
__pycache__ |
||||
*.db |
||||
.vscode |
||||
.vscode |
||||
/.env |
@ -0,0 +1,3 @@
@@ -0,0 +1,3 @@
|
||||
NAME=OhYee |
||||
secret=123456 |
||||
password=A1b2c=! |
@ -0,0 +1,41 @@
@@ -0,0 +1,41 @@
|
||||
package env |
||||
|
||||
import ( |
||||
"io/ioutil" |
||||
"os" |
||||
"path" |
||||
"strings" |
||||
|
||||
"github.com/OhYee/rainbow/errors" |
||||
) |
||||
|
||||
// GetEnv get environment from file
|
||||
func GetEnv(filename string) (environments map[string]string, err error) { |
||||
defer errors.Wrapper(&err) |
||||
|
||||
environments = make(map[string]string) |
||||
|
||||
b, err := ioutil.ReadFile(filename) |
||||
if err != nil { |
||||
return |
||||
} |
||||
|
||||
for _, line := range strings.Split(string(b), "\n") { |
||||
ss := strings.Split(line, "=") |
||||
if len(ss) >= 2 { |
||||
environments[ss[0]] = strings.Join(ss[1:], "=") |
||||
} |
||||
} |
||||
return |
||||
} |
||||
|
||||
// PWDFile file in current directory
|
||||
func PWDFile(filename string) (absPath string) { |
||||
var pwd string |
||||
var err error |
||||
if pwd, err = os.Getwd(); err != nil { |
||||
pwd = "" |
||||
} |
||||
absPath = path.Join(pwd, filename) |
||||
return |
||||
} |
@ -0,0 +1,47 @@
@@ -0,0 +1,47 @@
|
||||
package env |
||||
|
||||
import ( |
||||
"reflect" |
||||
"testing" |
||||
) |
||||
|
||||
func TestGetEnv(t *testing.T) { |
||||
type args struct { |
||||
filename string |
||||
} |
||||
tests := []struct { |
||||
name string |
||||
args args |
||||
wantEnvironments map[string]string |
||||
wantErr bool |
||||
}{ |
||||
{ |
||||
name: "test env", |
||||
args: args{filename: PWDFile(".env")}, |
||||
wantEnvironments: map[string]string{ |
||||
"NAME": "OhYee", |
||||
"secret": "123456", |
||||
"password": "A1b2c=!", |
||||
}, |
||||
wantErr: false, |
||||
}, |
||||
{ |
||||
name: "error", |
||||
args: args{filename: PWDFile(".error")}, |
||||
wantEnvironments: map[string]string{}, |
||||
wantErr: true, |
||||
}, |
||||
} |
||||
for _, tt := range tests { |
||||
t.Run(tt.name, func(t *testing.T) { |
||||
gotEnvironment, err := GetEnv(tt.args.filename) |
||||
if (err != nil) != tt.wantErr { |
||||
t.Errorf("GetEnv() error = %v, wantErr %v", err, tt.wantErr) |
||||
return |
||||
} |
||||
if !reflect.DeepEqual(gotEnvironment, tt.wantEnvironments) { |
||||
t.Errorf("GetEnv() = %v, want %v", gotEnvironment, tt.wantEnvironments) |
||||
} |
||||
}) |
||||
} |
||||
} |
Loading…
Reference in new issue