summaryrefslogtreecommitdiff
path: root/set.go
diff options
context:
space:
mode:
Diffstat (limited to 'set.go')
-rw-r--r--set.go42
1 files changed, 42 insertions, 0 deletions
diff --git a/set.go b/set.go
new file mode 100644
index 0000000..fd3e5a0
--- /dev/null
+++ b/set.go
@@ -0,0 +1,42 @@
+package env
+
+import "errors"
+
+func SetGlobal(global string, varname string, newValue string) error {
+ if envPB == nil {
+ return NotInitialized
+ }
+ saveMu.Lock()
+ defer saveMu.Unlock()
+ found := envPB.FindByVar(varname)
+ if found != nil {
+ return errors.New("already set")
+ }
+
+ newvar := new(Key)
+ newvar.Var = varname
+ newvar.Value = newValue
+ newvar.Global = global
+ envPB.Append(newvar)
+ return nil
+}
+
+func Set(varname string, newValue string) error {
+ saveMu.Lock()
+ defer saveMu.Unlock()
+ if envPB == nil {
+ return NotInitialized
+ }
+ found := envPB.FindByVar(varname)
+ if found != nil {
+ found.Value = newValue
+ saveENVnolock(envPB.Filename)
+ }
+
+ newvar := new(Key)
+ newvar.Var = varname
+ newvar.Value = newValue
+ envPB.Append(newvar)
+ saveENVnolock(envPB.Filename)
+ return nil
+}