summaryrefslogtreecommitdiffstats
path: root/src/gitb-init.sh
blob: 0cb0829aac1ba9fd312f34e50257affb509a6645 (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
#!/bin/sh

# Copyright 2017 rsiddharth <s@ricketyspace.net>
#
# This work is free. You can redistribute it and/or modify it under
# the terms of the Do What The Fuck You Want To Public License,
# Version 2, as published by Sam Hocevar. See the LICENSE file or
# <http://www.wtfpl.net/> for more details.

usage ()
{
    echo
    cat <<-EOF
  Usage:

     ./gitb-init.sh REPO_NAME [REPOS_DIR] [REMOTE_HOST]

               REPOS_DIR   - Bare repos directory; if not specified
                             \$GITBI_DIR is used.

               REMOTE_HOST - Remote host name (user@host.name); if
                             not specfied \$GITBI_HOST is used
     Examples:
         ./gitb-init.sh project-snafu.git vcs/git/projects user@fortytwo.net
              Will install bare git repository \$HOME/vcs/git/projects/project-snafu.git
              at host fortytwo.net.

         ./gitb-init.sh project-snafu.git vcs/git/projects
              Will install bare git repository \$HOME/vcs/git/projects/project-snafu.git
              at host defined by environment variable \$GITBI_HOST.

         ./gitb-init.sh project-snafu.git
              Will install bare git repository \$HOME/GITBI_DIR/project-snafu.git
              at host defined by environment variable \$GITBI_HOST, where path GITBI_DIR
              is defined by environment variable \$GITBI_DIR.
EOF
}

ssh_cmd()
{
    ssh <<-EOF "$REMOTE_HOST"\
        'mkdir -p '"$REPO_PATH"\
        '&& cd '"$REPO_PATH"\
        '&& git init --bare'\
        '&& mv hooks/post-update.sample hooks/post-update'
EOF
}

# Get repo name.
if [ -n "$1" ]; then
    REPO_NAME=$1
else
    echo 'ERROR: Repo name not specified.'
    usage
    exit 1
fi

# Get repos directory name.
if [ -n "$2" ]; then
    REPOS_DIR=$2
elif [ -n "$GITBI_DIR" ]; then
    REPOS_DIR=$GITBI_DIR
else
    echo 'ERROR: Bare repos directory not specified.'
    usage
    exit 1
fi

# Get remote host.
if [ -n "$3" ]; then
    REMOTE_HOST=$3
elif [ -n "$GITBI_HOST" ]; then
    REMOTE_HOST=$GITBI_HOST
else
    echo 'ERROR: Host not specified.'
    usage
    exit 1
fi

REPO_PATH=$REPOS_DIR'/'$REPO_NAME

ssh_cmd