Skip to content

Commit 600d65e

Browse files
author
Dennis Hoer
committed
Handle spaces
1 parent c6c9194 commit 600d65e

File tree

3 files changed

+33
-21
lines changed

3 files changed

+33
-21
lines changed

README.md

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,37 +13,37 @@ Reason for this:
1313

1414
## Usage
1515

16+
Copy `keg` to `/usr/local/bin`.
17+
1618
Execute the following to generate both configmap command and environment snippet:
1719

18-
`./keg.sh configmap-name env-file [env-file ...]`
20+
`keg configmap-name env-file [env-file ...]`
1921

2022
Keys repeated in subsequent files will overwrite previous key values.
2123

2224
### Example
2325

2426
```sh
2527
$ cat env/core.env
28+
NAME=Product Name
2629
DB_DRIVER=com.mysql.jdbc.Driver
2730
DB_POOL_MAXSIZE=15
2831
DB_POOL_MINSIZE=10
29-
```
3032

31-
```sh
3233
$ cat env/prod.env
3334
DB_POOL_MAXSIZE=20
3435
DB_URL=jdbc:mysql://db.example.com/mydb?characterEncoding=UTF-8
35-
```
3636

37-
```sh
38-
$ ./keg.sh my-config env/core.env env/prod.env
39-
```
37+
$ keg my-config env/core.env env/prod.env
4038

41-
```sh
42-
kubectl create configmap my-config --from-literal=db-driver=com.mysql.jdbc.Driver --from-literal=db-pool-minsize=10 --from-literal=db-pool-maxsize=20 --from-literal=db-url=jdbc:mysql://db.example.com/mydb?characterEncoding=UTF-8
43-
```
39+
kubectl create configmap my-config --from-literal=name="Product Name" --from-literal=db-driver="com.mysql.jdbc.Driver" --from-literal=db-pool-minsize="10" --from-literal=db-pool-maxsize="20" --from-literal=db-url="jdbc:mysql://db.example.com/mydb?characterEncoding=UTF-8"
4440

45-
```yaml
4641
env:
42+
- name: NAME
43+
valueFrom:
44+
configMapKeyRef:
45+
name: my-config
46+
key: name
4747
- name: DB_DRIVER
4848
valueFrom:
4949
configMapKeyRef:
@@ -69,7 +69,7 @@ kubectl create configmap my-config --from-literal=db-driver=com.mysql.jdbc.Drive
6969
#### Create configmap:
7070

7171
```sh
72-
$ kubectl create configmap my-config --from-literal=db-driver=com.mysql.jdbc.Driver --from-literal=db-pool-minsize=10 --from-literal=db-pool-maxsize=20 --from-literal=db-url=jdbc:mysql://db.example.com/mydb?characterEncoding=UTF-8
72+
$ kubectl create configmap my-config --from-literal=name="Product Name" --from-literal=db-driver="com.mysql.jdbc.Driver" --from-literal=db-pool-minsize="10" --from-literal=db-pool-maxsize="20" --from-literal=db-url="jdbc:mysql://db.example.com/mydb?characterEncoding=UTF-8"
7373
```
7474

7575
#### Verify configmap:
@@ -85,14 +85,15 @@ data:
8585
db-pool-maxsize: "20"
8686
db-pool-minsize: "10"
8787
db-url: jdbc:mysql://db.example.com/mydb?characterEncoding=UTF-8
88+
name: Product Name
8889
kind: ConfigMap
8990
metadata:
90-
creationTimestamp: 2016-11-19T23:23:30Z
91+
creationTimestamp: 2016-11-20T01:59:33Z
9192
name: my-config
9293
namespace: my-app
93-
resourceVersion: "9098351"
94-
selfLink: /api/v1/namespaces/my-app/configmaps/my-conf
95-
uid: 4bea0444-adeb-11e6-8c60-065eece225bf
94+
resourceVersion: "9281367"
95+
selfLink: /api/v1/namespaces/my-app/configmaps/my-config
96+
uid: fb9eedcb-aec4-11e6-8c60-065eece225bf
9697
```
9798
9899
#### Paste snippet into deployment yaml
@@ -116,6 +117,11 @@ spec:
116117
image: quay.io/example/my-app:LATEST
117118
imagePullPolicy: Always
118119
env:
120+
- name: NAME
121+
valueFrom:
122+
configMapKeyRef:
123+
name: my-config
124+
key: name
119125
- name: DB_DRIVER
120126
valueFrom:
121127
configMapKeyRef:

env/core.env

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
NAME=Product Name
12
DB_DRIVER=com.mysql.jdbc.Driver
23
DB_POOL_MAXSIZE=15
34
DB_POOL_MINSIZE=10

keg.sh renamed to keg

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
#!/bin/bash
22

3-
#
4-
# Usage: ./keg.sh configmap-name env-file [env-file ...]
5-
#
3+
if [ "$#" -lt 2 ]; then
4+
echo "Usage: keg configmap-name env-file [env-file ...]"
5+
exit 1;
6+
fi
67

78
put() {
89
if [ "$#" != 2 ]; then exit 1; fi
@@ -24,14 +25,18 @@ keys() {
2425
keys=`echo $map | sed -e "s/=[^ ]*//g" -e "s/\([ ]*\)--/\1/g"`
2526
}
2627

28+
cd $(pwd)
29+
2730
configmap_name=$1
2831
shift
32+
33+
# read env key values from file(s) into map
2934
while [ "$1" != "" ]; do
3035
while IFS='' read -r line || [[ -n "$line" ]]; do
3136
if [[ $line == *"="* ]]
3237
then
3338
IFS='=' read -r k v <<< "$line"
34-
put ${k} ${v}
39+
put "${k}" "${v}"
3540
fi
3641
done < "$1"
3742
shift
@@ -47,7 +52,7 @@ do
4752
echo -n " --from-literal="
4853
echo -n "${key//_/-}" | tr '[:upper:]' '[:lower:]'
4954
get ${key}
50-
echo -n "=${value}"
55+
echo -n "=\"${value}\""
5156
done
5257
echo ""
5358
echo ""

0 commit comments

Comments
 (0)