-
Notifications
You must be signed in to change notification settings - Fork 314
/
utils.sh
123 lines (99 loc) · 3.62 KB
/
utils.sh
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#!/usr/bin/env bash
set -e
setup_directory () {
local directory="${1}"
local permissions="${2:-}"
echo "Creating directory '${directory}' with permissions '${permissions}'"
if [ ! -d "${directory}" ]; then
mkdir -p "${directory}"
if [[ ! -z "${permissions}" ]]; then
chmod "${permissions}" "${directory}"
fi
fi
}
remove_user () {
local user="${1}"
echo "Removing user '${user}'"
deluser "${user}" || true
rm -rf "/home/${user}"
}
make_user () {
local user="${1}"
echo "Creating user '${user}'"
useradd "${user}"
yes "${user}" | passwd "${user}"
mkdir "/home/${user}"
chown "${user}:${user}" "/home/${user}"
}
setup_nbgrader () {
USER="${1}"
HOME="/home/${USER}"
local config="${2}"
local runas="sudo -u ${USER}"
echo "Setting up nbgrader for user '${USER}'"
${runas} mkdir -p "${HOME}/.jupyter"
${runas} cp "${config}" "${HOME}/.jupyter/nbgrader_config.py"
${runas} chown "${USER}:${USER}" "${HOME}/.jupyter/nbgrader_config.py"
cp "/root/formgrader_workspace.json" "${HOME}/formgrader_workspace.json"
chown "${USER}:${USER}" "${HOME}/formgrader_workspace.json"
${runas} jupyter lab workspaces import "${HOME}/formgrader_workspace.json"
}
setup_jupyterhub () {
local jupyterhub_root="${1}"
echo "Setting up JupyterHub to run in '${jupyterhub_root}'"
# Ensure JupyterHub directory exists.
setup_directory ${jupyterhub_root}
# Delete old files, if they are there.
rm -f "${jupyterhub_root}/jupyterhub.sqlite"
rm -f "${jupyterhub_root}/jupyterhub_cookie_secret"
# Copy config file.
cp jupyterhub_config.py "${jupyterhub_root}/jupyterhub_config.py"
}
enable_create_assignment () {
USER="${1}"
HOME="/home/${USER}"
local runas="sudo -u ${USER}"
${runas} jupyter nbextension enable --user create_assignment/main
${runas} jupyter labextension disable --level=user nbgrader/create-assignment
${runas} jupyter labextension enable --level=user nbgrader/create-assignment
}
enable_formgrader () {
USER="${1}"
HOME="/home/${USER}"
local runas="sudo -u ${USER}"
${runas} jupyter nbextension enable --user formgrader/main --section=tree
${runas} jupyter labextension disable --level=user nbgrader/formgrader
${runas} jupyter labextension enable --level=user nbgrader/formgrader
${runas} jupyter serverextension enable --user nbgrader.server_extensions.formgrader
}
enable_assignment_list () {
USER="${1}"
HOME="/home/${USER}"
local runas="sudo -u ${USER}"
${runas} jupyter nbextension enable --user assignment_list/main --section=tree
${runas} jupyter labextension disable --level=user nbgrader/assignment-list
${runas} jupyter labextension enable --level=user nbgrader/assignment-list
${runas} jupyter serverextension enable --user nbgrader.server_extensions.assignment_list
}
enable_course_list () {
USER="${1}"
HOME="/home/${USER}"
local runas="sudo -u ${USER}"
${runas} jupyter nbextension enable --user course_list/main --section=tree
${runas} jupyter labextension disable --level=user nbgrader/course-list
${runas} jupyter labextension enable --level=user nbgrader/course-list
${runas} jupyter serverextension enable --user nbgrader.server_extensions.course_list
}
create_course () {
USER="${1}"
HOME="/home/${USER}"
local course="${2}"
local runas="sudo -u ${USER}"
local currdir="$(pwd)"
cd "${HOME}"
${runas} nbgrader quickstart "${course}"
cd "${course}"
${runas} nbgrader generate_assignment ps1
${runas} nbgrader release_assignment ps1
cd "${currdir}"
}