aboutsummaryrefslogtreecommitdiff
path: root/sandbox
blob: 88f8fca2d960b89e5ae32809fb0b720fa4cd87a8 (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
#
# Setup a new code project.
#

# 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"

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

# Git integration
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
  )
}

# Ikiwiki integration
function sandbox_ikiwiki {
  (
    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

      if [ ! -e ".gitignore" ]; then
        cp $HOME/file/templates/ikiwiki/.gitignore .
      elif ! grep -q -f $HOME/file/templates/ikiwiki/.gitignore; then
        cat $HOME/file/templates/ikiwiki/.gitignore >> .gitignore
      fi

      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
  )
}

# Vagrant integration
function sandbox_vagrant {
  (
    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 :)"