Revision 1933bbaeb0cbf7bbebf11315ccbb9d628a77c14e authored by Thomas B. Mooney on 25 July 2016, 18:26:17 UTC, committed by Thomas B. Mooney on 25 July 2016, 18:26:17 UTC
The GDC portal now requires newer SSL to perform the handshake, so disable the TCGA support for older systems. (Running with an outdated OpenSSL is scary, and one probably shouldn't do it, anyway!)
1 parent 591ccce
create-c-project.sh
#!/bin/bash
GIT_SRV=git
GIT_PATH=/srv/git
SKEL_URL=ssh://$GIT_SRV$GIT_PATH/example-c-project.git
DO_PUSH=1
[ -z "$TMPDIR" ] && TMPDIR=/tmp
function bail() {
echo $1
exit 1
}
function usage() {
echo "Usage: `basename $0` [-n] <project name>"
echo " Initialize a new c/c++ project"
echo ""
echo "Options:"
echo " -h|--help - this message"
echo " -n|--no-push - do not automatically commit and push the new subrepo"
}
function enforce_clean_master() {
branch=`git branch | perl -ne 's/^\* // && print'`
if [ "$branch" != "master" ]
then
bail "This program must be run on branch master, you are on branch $branch"
fi
git fetch || bail "git fetch failed"
git status -uno | grep -A1 '^# Your branch ' &&
bail "Your branch is not in sync with the remote repo, pull/push first"
git push --dry-run > /dev/null 2>&1 ||
bail "git push --dry-run failed."
}
function create_git_repo() {
name=$1
repo_path=$GIT_PATH/$name.git
ssh $GIT_SRV "if [ ! -e $repo_path ]; then mkdir $repo_path && cd $repo_path && git init --bare --shared; else echo $repo_path already exists on server $GIT_SRV; exit 1; fi"
[ $? -ne 0 ] && {
echo "Aborted."
exit 1
}
(pushd $TMPDIR && git clone ssh://$GIT_SRV/$repo_path &&
pushd $name && touch .gitignore &&
git add .gitignore && git commit -m 'added .gitignore' && git push origin master &&
popd && rm -rf $name) || {
echo "Failed to set up repository $name"
exit 1
}
git submodule add ssh://$GIT_SRV/$repo_path || {
echo "Failed to set up submodule for $name"
exit 1
}
}
function create_project_skel() {
git archive --remote $SKEL_URL master | tar xf -
}
# main -------------------------------------------------------------------
enforce_clean_master
project_name=
while [ $# -gt 0 ]; do
case $1 in
-h|--help) usage; exit 0 ;;
-n|--no-push) DO_PUSH=0 ;;
-*) bail "Unexpected argument: $1" ;;
*) [ "$project_name" != "" ] && {
bail "Multiple project names specified: '$project_name' and '$1'"
}
project_name=$1
;;
esac
shift
done
if [ -z "$project_name" ]; then
echo "Error: no project name specified"
usage
exit 1
fi
[ -e $project_name ] && {
echo "Error: something named $project_name already exists in `pwd`"
ls -ld $project_name
exit 1
}
echo ""
echo "Create new project named $project_name? (y/n)"
while read ans; do
case $ans in
y*) break;;
n*) echo "Aborted"; exit 1;;
*) echo "Please anwser y or n";;
esac
done
create_git_repo $project_name
(pushd $project_name && create_project_skel $project_name && ls -l)
git add $project_name
[ $DO_PUSH -eq 1 ] && {
git pull
git commit -m "Added submodule $project_name"
git push
echo "** pushed changes"
}
git status
echo "Completed."
Computing file changes ...