aboutsummaryrefslogtreecommitdiff
path: root/sandbox
blob: 7eda3290297e508c6b28a9be80f7183df643142b (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
#!/bin/bash
#
# Setup a new code project.
#
# TODO: should work for more use cases.

# Parameters
BASENAME="`basename $0`"
CODE="$HOME/code"
PROJECT="$1"
REPO="$2"
BOOTSTRAP="git://git.sarava.org/puppet-bootstrap.git"
TEMPLATES="git://git.sarava.org/templates.git"

function sandbox_init {
  echo "Initializing $PROJECT..."
  mkdir -p $CODE/$PROJECT
}

function sandbox_git {
  (
    cd $CODE/$PROJECT
    touch .gitignore

    echo "$PROJECT"                                     > README.md
    echo "=========`echo $PROJECT | sed -e 's|.|=|g'`" >> README.md
    echo ""                                            >> README.md
    echo "This is the $PROJECT repository."            >> README.md

    echo "TODO"                > TODO.md
    echo "===="               >> TODO.md
    echo ""                   >> TODO.md
    echo "* Nothing here? :P" >> TODO.md

    git init
    git add .
    git commit -m "Initial import"

    if which git-hooks &> /dev/null; then
      echo ""
      echo "Installing hooks..."
      git hooks --install
    fi

    git branch develop

    if [ -e "/usr/lib/git-core/git-flow" ]; then
      echo ""
      echo "Setting up git-flow..."
      git flow init -d
    fi
  )
}

function sandbox_ikiwiki {
# Ikiwiki integration
  (
    if [ ! -d "$HOME/file/templates" ]; then
      echo "Please clone $TEMPLATES into $HOME/file/templates"
    else
      echo ""
      echo "Setting up ikiwiki integration..."
      cd $CODE/$PROJECT
      git checkout develop

      cat $HOME/file/templates/ikiwiki/.gitignore  >> .gitignore

      if [ ! -e "index.mdwn" ]; then
        cp $HOME/file/templates/ikiwiki/index.mdwn .
      fi

      if [ ! -e "Makefile" ]; then
        cp $HOME/file/templates/ikiwiki/Makefile .
      elif ! grep -q ^wiki: Makefile; then
        grep -v '^#' $HOME/file/templates/ikiwiki/Makefile >> Makefile
      fi

      if [ ! -d "templates" ]; then
        cp r $HOME/file/templates/ikiwiki/templates .
      fi

      if [ ! -d "bootstrap" ]; then
        cp r $HOME/file/bootstrap/ikiwiki/bootstrap .
      fi

      git add .
      git commit -a -m "Static site generation support using ikiwiki"
    fi
  )
}

function sandbox_vagrant {
  # Vagrant integration
  (
    echo ""
    echo "Setting up vagrant integration..."
    cd $CODE/$PROJECT
    git checkout develop
    echo '.vagrant' >> .gitignore
    git commit -a -m "Adds vagrant support"

    # Use the best approach
    #git clone $BOOSTRAP $CODE/$PROJECT/puppet
    #git submodule add $BOOSTRAP puppet
    git remote add puppet $BOOTSTRAP
    git subtree add --prefix puppet $BOOTSTRAP master --squash
  )
}

# Syntax check
if [ -z "$PROJECT" ]; then
  echo "usage: $BASENAME <path> [url]"
  exit 1
fi

# Clone or initialize
if [ ! -z "$REPO" ]; then
  git clone $URL $CODE/$PROJECT
else
  sandbox_init
  sandbox_git
  sandbox_ikiwiki
  sandbox_vagrant
fi

# Teardown
echo "Welcome to your new project :)"