summaryrefslogtreecommitdiff
path: root/share/releases-repo-migration.sh
blob: 654da0cfb350c051da07502dc22b150012b3d934 (plain)
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
132
#!/bin/bash

function create_readers_group()
{
  set +e
  (
    set -e
    ssh localhost group add site-readers \
        'Users with read access to the site project'
  )
  local ret="$?"
  if [ "$ret" != 0 ]; then
    token=$(ssh localhost group del site-readers 2>&1 | tail -1 | \
        cut -d' ' -f 2)
    ssh localhost group del site-readers $token
  fi
  return $ret
}

function create_writers_group()
{
  set +e
  (
    set -e
    ssh localhost group add site-writers \
        'Users with write access to the site project'
    create_readers_group
  )
  local ret="$?"
  if [ "$ret" != 0 ]; then
    token=$(ssh localhost group del site-writers 2>&1 | tail -1 | \
        cut -d' ' -f 2)
    ssh localhost group del site-writers $token
  fi
  return $ret
}

function create_admins_group()
{
  set +e
  (
    set -e
    ssh localhost group add site-admins \
        'Users with admin access to the site project'
    create_writers_group
  )
  local ret="$?"
  if [ "$ret" != 0 ]; then
    token=$(ssh localhost group del site-admins 2>&1 | tail -1 | \
        cut -d' ' -f 2)
    ssh localhost group del site-admins $token
  fi
  return $ret
}

function create_managers_group()
{
  set +e
  (
    set -e
    ssh localhost group add site-managers \
        'Users with manager access to the site project'
    create_admins_group
  )
  local ret="$?"
  if [ "$ret" != 0 ]; then
    token=$(ssh localhost group del site-managers 2>&1 | tail -1 | \
        cut -d' ' -f 2)
    ssh localhost group del site-managers $token
  fi
  return $ret
}

function link_groups()
{
  set -e
  ssh localhost group addgroup site-admins site-managers
  ssh localhost group addgroup site-writers site-admins
  ssh localhost group addgroup site-readers site-writers
}

function delete_groups()
{
  token=$(ssh localhost group del site-managers 2>&1 | tail -1 | \
      cut -d' ' -f 2)
  ssh localhost group del site-managers $token
  token=$(ssh localhost group del site-admins 2>&1 | tail -1 | \
      cut -d' ' -f 2)
  ssh localhost group del site-admins $token
  token=$(ssh localhost group del site-writers 2>&1 | tail -1 | \
      cut -d' ' -f 2)
  ssh localhost group del site-writers $token
  token=$(ssh localhost group del site-readers 2>&1 | tail -1 | \
      cut -d' ' -f 2)
  ssh localhost group del site-readers $token
}

function create_groups()
{
  # call managers_group which calls admin_group and so on...
  create_managers_group
  set +e
  (
    set -e
    link_groups
  )
  local ret="$?"
  if [ "$ret" != 0 ]; then
    delete_groups
  fi
}

site_groups=$(ssh localhost group list | grep -cE "site-[[:alnum:]]+")
if [ "$site_groups" == 0 ]; then
  create_groups
fi
ssh localhost create "##PREFIX##/site/releases"
description="This is a special repository for distributing release binaries
over HTTP. Visit http://##PREFIX##/releases/ to browse content."
ssh localhost config "##PREFIX##/site/releases" \
    set project.description "$description"

# add a readme to the repository
repo=$(mktemp -d)
git clone ssh://localhost/##PREFIX##/site/releases $repo
cp /usr/share/trove-setup/releases-repo-README $repo/README
cd $repo
git add $repo/README
git commit -m 'Add README'
git push origin master
cd -
rm -Rf $repo