aboutsummaryrefslogtreecommitdiffstats
path: root/provision_openbsd.ksh
blob: 794ed69947c6bd24c4ac02791554707eab81653a (plain) (blame)
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
124
125
126
127
128
129
130
131
#!/bin/ksh

# download ISO from https://cdn.openbsd.org/pub/OpenBSD/$(uname -r)/amd64/install71.iso

INC_CODE=0


usage()
{
  print "Usage: $0 [-c]"
  print -R '-c - require repositories to be downloaded from github'
  exit 2
}

while getopts 'ch' opt
do
  case $opt in
    c) INC_CODE=1; print "Will fetch code from github." ;;
    h) usage ;; 
    ?) usage ;; 
  esac
done

dbasik_src=~/code/python/dbasik
datamaps_src=~/code/python/datamaps
bcompiler_src=~/code/python/bcompiler-engine
ded_src=~/code/python/ded

command -v vim > /dev/null 2>&1
if [ "$?" != 0 ]; then
  doas pkg_add vim
fi

create_venvs() {
    cd $1
    print "Creating the virtualenv at $1/.venv. This might take a couple of minutes..."
    print -n "Creating virtualenv..."
    python3 -m venv .venv
    . ./.venv/bin/activate
    print "ok"
    if [ -a requirements.txt ]; then
      print -n "Installing from requirements.txt..."
      pip install -r requirements.txt > /dev/null 2>&1
      pip install -U pip > /dev/null 2>&1
      print "ok"
    fi
    if [ -a requirements_dev.txt ]; then
      print -n "Installing from requirements_dev.txt..."
      pip install -r requirements_dev.txt > /dev/null 2>&1
      pip install -U pip > /dev/null 2>&1
      print "ok"
    fi
    deactivate && cd ~
    print "virtualenv created"
}

doas pkg_add ectags fzf the_silver_searcher zip 

if [ $INC_CODE -eq 1 ]; then
  ssh-add -v
  print -n "Creating necessary directories..."
  mkdir -p ~/code/python
  mkdir -p ~/.config/
  mkdir -p ~/.fzf/
  print "ok"

  print -n "Fetching dotfiles..."
  if [ ! -d ~/openbsddotfiles ]; then
    git clone git@github.com:yulqen/openbsddotfiles.git ~/openbsddotfiles > /dev/null 2>&1
    print "ok"
  else
    print "dotfiles directory already exists."
  fi

  print -n "Fetching ded..."
  if [ ! -d $ded_src ]; then
    git clone git@gitlab.com:yulqen/ded.git $ded_src > /dev/null 2>&1
    print "ok"
    create_venvs $ded_src
  else
    print "dbasik directory already exists."
  fi

  print -n "Fetching dbasik..."
  if [ ! -d $dbasik_src ]; then
    git clone git@github.com:yulqen/dbasik.git $dbasik_src > /dev/null 2>&1
    print "ok"
    create_venvs $dbasik_src
  else
    print "dbasik directory already exists."
  fi

  print -n "Fetching datamaps..."
  if [ ! -d $datamaps_src ]; then
    git clone git@github.com:yulqen/datamaps.git $datamaps_src > /dev/null 2>&1
    print "ok"
    create_venvs $datamaps_src
  else
    print "datamaps directory already exists."
  fi

  print -n "Fetching bcompiler-engine..."
  if [ ! -d $bcompiler_src ]; then
    git clone git@github.com:yulqen/bcompiler-engine.git $bcompiler_src > /dev/null 2>&1
    print "ok"
    create_venvs $bcompiler_src
  else
    print "bcompiler-engine directory already exists."
  fi

  print -n "Creating code-related symlinks..."
  ln -sf openbsddotfiles/pdbrc .pdbrc
  ln -sf openbsddotfiles/pdbrc.py .pdbrc.py
  ln -sf openbsddotfiles/flake8 /home/lemon/.config/.flake8
  ln -sf $(which fzf) ~/.fzf
  print "ok"
fi


print -n "Creating regular symlinks..."
cd ~
ln -sf openbsddotfiles/kshrc_vm_provision .kshrc
ln -sf openbsddotfiles/ksh_aliases .ksh_aliases
ln -sf openbsddotfiles/profile_vm_provisioning .profile
ln -sf openbsddotfiles/tmux.conf .tmux.conf
ln -shf openbsddotfiles/vim ~/.vim
ln -sf openbsddotfiles/gitconfig .gitconfig
ln -sf openbsddotfiles/gitignore_global .gitignore_global
print "ok"