302 lines
7.2 KiB
Bash
Executable File
302 lines
7.2 KiB
Bash
Executable File
#! /usr/bin/env bash
|
|
|
|
if [ -z "$1" ]
|
|
then
|
|
echo "Please provide a repo to clone"
|
|
exit 1
|
|
fi
|
|
|
|
clean_tex()
|
|
{
|
|
for f in data Makefile images/acu.pdf images/assistants.pdf images/assistants-subject.pdf images/assistants-slides.pdf images/assistants.png images/epita.pdf images/epita.png images/epita-invert.pdf images/assistants-invert.pdf images/epita-invert.png *.cls *.sty *.tex
|
|
do
|
|
if [ -f "$f" ]
|
|
then
|
|
git rm -f "$f" > /dev/null
|
|
elif [ -d "$f" ]
|
|
then
|
|
git rm -fr "$f" > /dev/null
|
|
fi
|
|
done
|
|
|
|
cd include
|
|
for i in `find -type f -name '*.tex'`
|
|
do
|
|
bi=`basename "$i"`
|
|
echo -e "\e[1;34m>>>\e[1;37m Trying to convert $i to Markdown...\e[0m"
|
|
|
|
sed -Ei 's/\\include *\{([^}]+)}/\\verb+~include(\1)+/gi' "$i"
|
|
sed -Ei 's/\\input *\{([^}]+)}/\\verb+~include(\1)+/gi' "$i"
|
|
sed -Ei 's/\{\\include *([^}]+)}/\\verb+~include(\1)+/gi' "$i"
|
|
sed -Ei 's/\{\\input *([^}]+)}/\\verb+~include(\1)+/gi' "$i"
|
|
sed -Ei 's/\\lstinline *\{([^}]+)}/\\verb+\1+/gi' "$i"
|
|
sed -Ei 's/\\begin *\{correction\}/\\begin\{verbatim\}/g' "$i"
|
|
sed -Ei 's/\\end *\{correction\}/\\end\{verbatim\}/g' "$i"
|
|
sed -Ei 's/\\begin *\{prompt\}/\\begin\{verbatim\}/g' "$i"
|
|
sed -Ei 's/\\end *\{prompt\}/\\end\{verbatim\}/g' "$i"
|
|
sed -Ei 's/\\begin *\{script\}/\\begin\{verbatim\}/g' "$i"
|
|
sed -Ei 's/\\end *\{script\}/\\end\{verbatim\}/g' "$i"
|
|
sed -Ei 's/\\begin *\{cartouche\}/\\begin\{verbatim\}/g' "$i"
|
|
sed -Ei 's/\\end *\{cartouche\}/\\end\{verbatim\}/g' "$i"
|
|
sed -Ei 's/\\begin *\{cartouche_nospaces\}/\\begin\{verbatim\}/g' "$i"
|
|
sed -Ei 's/\\end *\{cartouche_nospaces\}/\\end\{verbatim\}/g' "$i"
|
|
|
|
# Convert Beamer
|
|
sed -Ei 's/\\begin\[[^]]+\]\{frame\}\{([^}]+)\}/\\subsection\{\1\}/g' "$i"
|
|
sed -Ei 's/\\begin\{frame\}\{([^}]+)\}\[[^]]+\]/\\subsection\{\1\}/g' "$i"
|
|
sed -Ei 's/\\begin\{frame\}\{([^}]+)\}/\\subsection\{\1\}/g' "$i"
|
|
sed -Ei 's/\\begin(\[[^]]+\])?\{frame\}(\[[^]]+\])?//g' "$i"
|
|
sed -Ei 's/\\begin\{block\}\{([^}]+)\}/\\subsubsection\{\1\}/g' "$i"
|
|
sed -Ei 's/\\begin\{block\}/\\subsubsection\{~\}/g' "$i"
|
|
sed -Ei 's/\\end(\[[^]]+\])?\{frame\}(\[[^]]+\])?//g' "$i"
|
|
sed -Ei 's/\\end(\[[^]]+\])?\{block\}(\[[^]]+\])?//g' "$i"
|
|
sed -Ei 's/\\frametitle *\{/\\subsection\{/g' "$i"
|
|
sed -Ei 's/\\framesubtitle *\{/\\subsubsection\{/g' "$i"
|
|
sed -Ei 's/\\(sub)*section *\{\}//g' "$i"
|
|
sed -Ei 's/\\frame *\{/\{/g' "$i"
|
|
sed -Ei 's/\\frame//g' "$i"
|
|
sed -Ei 's/\\item( *)<[^>]+>/\\item\1/g' "$i"
|
|
|
|
if pandoc -o ../${bi%%.tex}.md $i
|
|
then
|
|
git add ../${bi%%.tex}.md
|
|
git checkout "$i"
|
|
git rm -f "$i" > /dev/null
|
|
fi
|
|
|
|
sed -Ei 's/`~?include\(([^)]+)\)`/~include(\1)/gi' "../${bi%%.tex}.md"
|
|
done
|
|
if [ `find | wc -l` -gt 1 ]
|
|
then
|
|
git mv * ..
|
|
fi
|
|
cd ..
|
|
|
|
if [ -f "mySubject.md" ]
|
|
then
|
|
git mv "mySubject.md" "main.md"
|
|
elif [ -f "mySlide.md" ]
|
|
then
|
|
git mv "mySlide.md" "main.md"
|
|
elif [ -f "mySlides.md" ]
|
|
then
|
|
git mv "mySlides.md" "main.md"
|
|
elif [ -f "myTutorial.md" ]
|
|
then
|
|
git mv "myTutorial.md" "main.md"
|
|
fi
|
|
|
|
rmdir include
|
|
}
|
|
|
|
TMPDIR=`mktemp -d`
|
|
cd $TMPDIR
|
|
|
|
rmdir repo.git
|
|
if ! ( mkdir repo.git &&
|
|
cd repo.git &&
|
|
git init --bare &&
|
|
cd .. )
|
|
then
|
|
echo "Unable to create git final repository"
|
|
exit 2
|
|
fi
|
|
|
|
if ! hg clone "https://cpp.acu.epita.fr/projects/$1"
|
|
then
|
|
echo "Unable to clone $1 mercurial repository"
|
|
exit 3
|
|
fi
|
|
|
|
cd "$1"
|
|
|
|
if ! hg push "$TMPDIR/repo.git"
|
|
then
|
|
echo "Unable to convert Mercurial to Git repository"
|
|
exit 4
|
|
fi
|
|
|
|
cd ..
|
|
|
|
rm -rf "$1"
|
|
|
|
git clone "$TMPDIR/repo.git" "$1"
|
|
|
|
cd "$TMPDIR/$1"
|
|
|
|
# grades branch
|
|
if ls | grep "grades"
|
|
then
|
|
echo -e "\e[1;34m>>>\e[1;37m Creating grades branch...\e[0m"
|
|
git checkout -b grades
|
|
|
|
find -mindepth 1 -maxdepth 1 ! -name grades ! -name .git -exec git rm -rf {} \;
|
|
find -name '*.trace' -name '*.html' -name '*.yml' -exec git rm -rf {} \;
|
|
|
|
git rm -f grades/DESC 2> /dev/null
|
|
git commit -am "Converting HG to Git" > /dev/null
|
|
fi
|
|
|
|
git checkout master
|
|
|
|
# moulette branch
|
|
if ls | grep "moulette"
|
|
then
|
|
echo -e "\e[1;34m>>>\e[1;37m Creating moulette branch...\e[0m"
|
|
git checkout -b moulette
|
|
|
|
find -mindepth 1 -maxdepth 1 ! -name moulette ! -name .git -exec git rm -rf {} \;
|
|
|
|
git rm -f moulette/DESC 2> /dev/null
|
|
git commit -am "Converting HG to Git" > /dev/null
|
|
fi
|
|
|
|
git checkout master
|
|
|
|
find -type f ! -name '*.sh' ! -name '*.rb' ! -name '*.pl' ! -name 'configure' -exec chmod -x {} \;
|
|
|
|
echo
|
|
echo -e "\e[1;31m##\e[1;37m Removing ELF outside files/ \e[1;31m##\e[0m"
|
|
for d in `find -mindepth 1 -maxdepth 1 -type d ! -name .git ! -name files`
|
|
do
|
|
for f in `find "$d" -type f`
|
|
do
|
|
if [ `file "$f" | cut -d " " -f 2` = "ELF" ]
|
|
then
|
|
git rm -f "$f"
|
|
fi
|
|
done
|
|
done
|
|
echo -e "\e[1;31m## ## ## ## ##\e[0m"
|
|
|
|
echo
|
|
echo -e "\e[1;31m##\e[1;37m Removing old and temporary files \e[1;31m##\e[0m"
|
|
git rm -f AUTHORS
|
|
git rm -f README
|
|
git rm -f Makefile
|
|
git rm -f files/list
|
|
git rm -f "files/*.pdf"
|
|
find -name 'Changelog' -exec git rm -fr {} \;
|
|
find -name 'ChangeLog' -exec git rm -fr {} \;
|
|
find -name 'DESC' -exec git rm -fr {} \;
|
|
find -name '*.old' -exec git rm -fr {} \;
|
|
find -name '*.bak' -exec git rm -fr {} \;
|
|
find -name '*~' -exec git rm -fr {} \;
|
|
find -name '#*#' -exec git rm -fr {} \;
|
|
echo -e "\e[1;31m## ## ## ## ##\e[0m"
|
|
echo
|
|
|
|
for DIR in *
|
|
do
|
|
if [ "$DIR" = "defenses" ]
|
|
then
|
|
echo -e "\e[1;35m##\e[1;37m Find directory $DIR with some defense files \e[1;35m##\e[0m"
|
|
cd defenses
|
|
git rm -f Makefile > /dev/null
|
|
for D in *
|
|
do
|
|
if [ -f "$D/template.xml" ]
|
|
then
|
|
~/new_intra/defenses/defense_converter.pl -o "$D.xml" "$D/template.xml"
|
|
git add "$D.xml"
|
|
echo -e "\e[1;35m>>>\e[1;37m Defense converted:\e[0m $D"
|
|
fi
|
|
git rm -rf "$D" > /dev/null
|
|
done
|
|
cd ..
|
|
echo -e "\e[1;35m## ## ## ## ##\e[0m"
|
|
echo
|
|
|
|
elif [ "$DIR" = "grades" ]
|
|
then
|
|
echo -e "\e[1;36m##\e[1;37m Find directory $DIR for grading \e[1;36m##\e[0m"
|
|
git rm -rf "$DIR"
|
|
echo -e "\e[1;36m## ## ## ## ##\e[0m"
|
|
echo
|
|
|
|
elif find "$DIR" -type f -name '*.yml' | grep yml > /dev/null
|
|
then
|
|
echo -e "\e[1;33m##\e[1;37m Find directory $DIR with some .yml files \e[1;33m##\e[0m"
|
|
git rm -rf "$DIR"
|
|
echo -e "\e[1;33m## ## ## ## ##\e[0m"
|
|
echo
|
|
|
|
elif find "$DIR" -type f -name '*.tex' | grep tex > /dev/null
|
|
then
|
|
echo -e "\e[1;32m##\e[1;37m Find directory $DIR with some .tex files \e[1;32m##\e[0m"
|
|
cd "$DIR"
|
|
clean_tex "$DIR"
|
|
cd ..
|
|
echo -e "\e[1;32m## ## ## ## ##\e[0m"
|
|
echo
|
|
|
|
elif [ -d "$DIR" ]
|
|
then
|
|
cd "$DIR"
|
|
FILELIST=""
|
|
if [ "$DIR" != "ref" ]
|
|
then
|
|
FILELIST="$FILELIST Makefile"
|
|
fi
|
|
if [ "$DIR" != "tests" ]
|
|
then
|
|
FILELIST="$FILELIST README"
|
|
fi
|
|
|
|
for f in $FILELIST
|
|
do
|
|
if [ -f "$f" ]
|
|
then
|
|
git rm -f "$f" > /dev/null
|
|
elif [ -d "$f" ]
|
|
then
|
|
git rm -rf "$f" > /dev/null
|
|
fi
|
|
done
|
|
cd ..
|
|
fi
|
|
done
|
|
|
|
echo -e "\e[1;34m>>>\e[1;37m Adding .gitignore...\e[0m"
|
|
cat <<EOF > .gitignore
|
|
*.toc
|
|
*.aux
|
|
*.bat
|
|
*.glo
|
|
*.log
|
|
*#
|
|
*.snm
|
|
*.vrb
|
|
*.nav
|
|
*~
|
|
*.bbl
|
|
*.blg
|
|
.*.sw?
|
|
*.o
|
|
*.class
|
|
*.ghc
|
|
*.so
|
|
*.a
|
|
EOF
|
|
|
|
for f in `find -name "README.txt"` `find -name "TODO.txt"` `find -name "AUTHORS.txt"`
|
|
do
|
|
git mv "$f" "${f%.txt}"
|
|
done
|
|
|
|
git add .gitignore
|
|
|
|
git commit -am "Converting HG to Git" > /dev/null
|
|
|
|
git remote remove origin
|
|
if [ -z "$2" ]
|
|
then
|
|
git remote add origin "ssh://git@forge/subjects/$1"
|
|
else
|
|
git remote add origin "ssh://git@forge/subjects/$2"
|
|
fi
|
|
|
|
#rm -rf $TMPDIR
|
|
echo
|
|
echo -e "\e[1;37mYou can view $TMPDIR/$1/ directory\e[0m"
|