]> arthur.barton.de Git - ConfigScripts.git/blob - install.sh
List possible terminal attributes and colors
[ConfigScripts.git] / install.sh
1 #!/bin/sh
2 #
3 # ConfigScripts - install.sh
4 # Written by Alexander Barton <alex@barton.de>. Public Domain.
5 #
6
7 NAME=`basename "$0"`
8
9 Msg() {
10         printf -- "$*"
11 }
12
13 Abort() {
14         Msg "- ERROR!\n"
15         exit 1
16 }
17
18 Copy_File() {
19         src="$1"; dst="$2"; own="$3"; perm="$4"
20         Msg "     $src -> $dst"
21         if [ -e "$dst" ]; then
22                 grep "alex@barton.de" "$dst" >/dev/null 2>&1
23                 if [ $? -ne 0 ]; then
24                         Msg " (B)"
25                         cp "$dst" "$dst.bak"
26                 fi
27         fi
28         Msg " "
29         cp "$src" "$dst" || Abort
30         [ -n "$own" ] && chown "$own" "$dst" || Abort
31         [ -n "$perm" ] && chmod "$perm" "$dst" || Abort
32         Msg "- OK.\n"
33 }
34
35 Config_System() {
36         if [ "$UID" = "0" ]; then
37                 Msg "Starting system configuration:\n"
38                 Msg " - bash shell:\n"
39                 if [ -e /etc/bash.bashrc ]; then
40                         Copy_File sys/bashrc /etc/bash.bashrc root 644
41                 else
42                         Copy_File sys/bashrc /etc/bashrc root 644
43                 fi
44                 Copy_File sys/profile /etc/profile root 644
45         else
46                 Msg "Not running with root privileges - system configuration SKIPPED.\n"
47                 grep "alex@barton.de" /etc/profile >/dev/null 2>&1
48                 if [ $? -ne 0 ]; then
49                         Msg "Installing system files to $HOME/.etc/ ...\n"
50                         mkdir -p "$HOME/.etc"
51                         Copy_File sys/bashrc $HOME/.etc/bashrc "$user" 600
52                         Copy_File sys/profile $HOME/.etc/profile "$user" 600
53                 else
54                         Msg "System configuration seems to be modified: not installing locally.\n"
55                 fi
56         fi
57 }
58
59 Config_User() {
60         # $1: user name
61         # $2: home directory
62
63         user="$1"
64         home="$2"
65
66         Msg "Starting user configuration ($user in $home):\n"
67         touch "$home/.test.$$" >/dev/null 2>&1
68         if [ $? -eq 0 ]; then
69                 rm -f "$home/.test.$$"
70                 Msg " - bash shell:\n"
71                 if [ -e "$home/.profile" ]; then
72                         Copy_File user/bash_profile "$home/.profile" "$user" 600
73                 else
74                         Copy_File user/bash_profile "$home/.bash_profile" "$user" 600
75                 fi
76                 Copy_File user/bashrc "$home/.bashrc" "$user" 600
77                 Copy_File user/bash_logout "$home/.bash_logout" "$user" 600
78         else
79                 Msg "Can't write to user home directory - user configuration SKIPPED.\n"
80         fi
81 }
82
83 Config_RootUser() {
84         if [ "$UID" = "0" ]; then
85                 user=`grep "^.*:.*:0:" /etc/passwd | head -n 1 | cut -d':' -f1`
86                 home=`grep "^.*:.*:0:" /etc/passwd | cut -d':' -f6`
87                 Config_User "$user" "$home"
88         else
89                 Msg "Not running with root privileges - root user configuration SKIPPED.\n"
90         fi
91 }
92
93 [ -n "$UID" ] || UID=`id -u`
94 export UID
95
96 Msg "Running $NAME (uid=$UID) ...\n"
97
98 user=`basename "$HOME"`
99
100 Config_System
101 Config_User "$user" "$HOME"
102 Config_RootUser
103
104 Msg "$NAME: Done.\n"
105
106 # -eof-