-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdockerinit
More file actions
executable file
·96 lines (84 loc) · 2.21 KB
/
dockerinit
File metadata and controls
executable file
·96 lines (84 loc) · 2.21 KB
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
#!/bin/bash
#####################################################################################
#
# USAGE: source dck-init
#
# logged in | OK | docker login, sets env for
# | | DOCKER_USER, DOCKER_PASSWORD
# | |
# | NOK | error message from docker login,
# | | env is cleared
# | |
# logged out | n/a | "please log out of docker first!"
#####################################################################################
function login() {
local _result=$1
#echo logging $user into docker...
local result=$(echo "$password" | docker login -u $user --password-stdin)
if [[ "$_result" ]]; then
eval $_result="'$result'"
else
echo "$result"
fi
}
function setEnv() {
echo "setting environment for user $user..."
export DOCKER_USER=$user
export DOCKER_PASSWORD=$password
}
function clearEnv() {
echo "clearing environment.."
unset DOCKER_USER
unset DOCKER_PASSWORD
}
function isLoggedIn() {
local file="/home/$USER/.docker/config.json"
local loggedIn
local _result=$1
if [[ -f $file ]]; then
local auth=$(cat $file | jq '.auths."https://index.docker.io/v1/".auth')
if [[ "$auth" = null ]]; then
loggedIn=false
else
loggedIn=true
fi
else
loggedIn=false
fi
if [[ "$_result" ]]; then
eval $_result="'$loggedIn'"
else
echo "$loggedIn"
fi
}
#####################################################################################
### MAIN SECTION ###
#####################################################################################
user=rabaul
# have we been given a password as parameter ?
if [ $# -eq 0 ]; then
#No
# retrieve credentials from user
#echo Dockerhub user name ?
#read user
echo "Dockerhub password for ${user}?"
read -s password
else
#yes
password=$1
fi
# make sure credentials match auth token
loggedIn=$(isLoggedIn)
if [[ "$loggedIn" = true ]]; then
echo "logging out of docker first..."
docker logout
fi
# login with credentials
loginResult=$(login)
echo "$loginResult"
if [[ "$loginResult" = "Login Succeeded" ]]; then
setEnv
else
echo "failure to log in user $user"
clearEnv
fi