grim/convey
Clone
Summary
Browse
Changes
Graph
remove the old manual tests as we weren't running them anyways
redux
2021-12-18, Gary Kramlich
34da49589eac
remove the old manual tests as we weren't running them anyways
// Convey
// Copyright 2016-2018 Gary Kramlich <grim@reaperworld.com>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
// Package environment provides utilities for managing environment variables.
package
environment
import
(
"strings"
)
type
Environment
map
[
string
]
string
// splitEqual takes a string like "foo=bar" and returns it as ("foo", "bar")
func
splitEqual
(
value
string
)
(
string
,
string
)
{
parts
:=
strings
.
SplitN
(
value
,
"="
,
2
)
if
len
(
parts
)
==
1
{
return
parts
[
0
],
""
}
return
parts
[
0
],
parts
[
1
]
}
func
New
(
items
...
string
)
Environment
{
r
:=
Environment
{}
return
r
.
MergeSlice
(
items
)
}
func
(
e
Environment
)
Copy
()
Environment
{
r
:=
Environment
{}
for
k
,
v
:=
range
e
{
r
[
k
]
=
v
}
return
r
}
// Merge will merge another environment into the current environment
// overwriting any existing items
func
(
e
Environment
)
Merge
(
env
Environment
)
Environment
{
for
k
,
v
:=
range
env
{
e
[
k
]
=
v
}
return
e
}
// MergeSlice will merge a slice of strings in key or key=value formats.
func
(
e
Environment
)
MergeSlice
(
items
[]
string
)
Environment
{
for
_
,
item
:=
range
items
{
k
,
v
:=
splitEqual
(
item
)
e
[
k
]
=
v
}
return
e
}
func
(
e
Environment
)
All
()
[]
string
{
r
:=
make
([]
string
,
len
(
e
))
idx
:=
0
for
k
,
v
:=
range
e
{
if
v
!=
""
{
r
[
idx
]
=
k
+
"="
+
v
}
else
{
r
[
idx
]
=
k
}
idx
++
}
return
r
}