mirror of
https://github.com/Luzifer/ansible-role-version.git
synced 2024-12-23 19:11:20 +00:00
47 lines
1.1 KiB
Bash
Executable file
47 lines
1.1 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
repo=`git remote show origin | grep Fetch | cut -d' ' -f5`
|
|
branch="master"
|
|
if [ "$#" -eq 1 ] ; then
|
|
commit=`git log | head -1 | cut -d' ' -f2`
|
|
path=$1
|
|
elif [ "$#" -eq 2 ] ; then
|
|
commit=$1
|
|
path=$2
|
|
else
|
|
echo "bad number of parameters" > /dev/stderr
|
|
echo > /dev/stderr
|
|
echo " try with: [commit] path" > /dev/stderr
|
|
exit
|
|
fi
|
|
|
|
blames=`git blame --root $path | cut -d' ' -f1`
|
|
declare -a blame
|
|
i=0
|
|
for shortBlame in $blames ; do
|
|
blame[$i]=`git show $shortBlame | head -1 | cut -d' ' -f2`
|
|
i=`expr $i + 1`
|
|
done
|
|
|
|
# some remotes have the .git, other don't,
|
|
# repoDot makes sure all have
|
|
repoDot="${repo%.git}.git"
|
|
|
|
echo -e "\t{\"${repoDot}\", \"${branch}\", \"${commit}\", \"${path}\", concat(&[]string{},"
|
|
prev=""
|
|
count=1
|
|
for i in ${blame[@]} ; do
|
|
if [ "${prev}" == "" ] ; then
|
|
prev=$i
|
|
elif [ "$prev" == "$i" ] ; then
|
|
count=`expr $count + 1`
|
|
else
|
|
echo -e "\t\trepeat(\"${prev}\", $count),"
|
|
count=1
|
|
prev=$i
|
|
fi
|
|
done
|
|
echo -e "\t\trepeat(\"${prev}\", $count),"
|
|
echo -e "\t)},"
|