quixadhal

mkgit.sh DS version

Feb 8th, 2013
280
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 5.78 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. echo "--- Unpacking archive data ---"
  4.  
  5. for i in deadsouls open open/linked open/unlinked; do
  6.     if [ ! -d $i ]; then
  7.         mkdir $i
  8.     fi
  9. done
  10. cd deadsouls
  11. git init >../git_checkin.log 2>../git_error.log
  12. cd ..
  13. cd open
  14.  
  15. FILES=`ls -d1 ../archive/ds*.tar.gz ../archive/ds*.zip | awk -F/ '{print $NF}' | sort -n`
  16. COUNT=0
  17. TOTAL=`echo $FILES | wc -w`
  18. for i in $FILES; do
  19.     COUNT=$[ $COUNT + 1 ]
  20.     OLD=`echo $i | sed 's/.zip$//' | sed 's/.tar.gz$//'`
  21.     NEW=''
  22.     if [ "$OLD" == "ds1.1pre" ]; then
  23.         NEW='ds1.01'
  24.     else
  25.         NEW=`echo $i | perl -ne '{ printf("ds%d.%02d%s%02d\n", $1, $2, $3, $4) if /ds(\d)\.(\d+)(?:([ar\.])(\d+))?\.(zip|tar\.gz)/; }'`
  26.     fi
  27.     OOK=`echo $NEW | grep 'ds[0-9].[0-9][0-9][0-9][0-9]'`
  28.     ISTAR=`echo $i | grep '.tar.gz$'`
  29.     if [ -n "$OOK" ]; then
  30.         NEW=`echo $NEW | sed 's/[0-9][0-9]$//'`
  31.     fi
  32.     if [ -n "$NEW" -a -d "$NEW" ]; then
  33.         echo "$NEW ($COUNT of $TOTAL) skipping."
  34.     elif [ -n "$NEW" -a -n "$OLD" ]; then
  35.         echo -n "$NEW ($COUNT of $TOTAL) unpacking..."
  36.         sleep 1;
  37.         if [ -n "$ISTAR" ] ; then
  38.             if [ "$NEW" == "ds1.01" ] ; then
  39.                 mkdir ds1.1pre
  40.                 cd ds1.1pre
  41.                 tar xf ../../archive/ds1.1pre.tar.gz
  42.                 cd ..
  43.             else
  44.                 tar xf ../archive/$i
  45.             fi
  46.         elif [ "$NEW" == "ds2.00r23" ]; then
  47.             mkdir "$OLD"
  48.             cd "$OLD"
  49.             unzip -qq -a ../../archive/$i -x *.o
  50.             unzip -qq ../../archive/$i *.o
  51.             cd ..
  52.         elif [ "$NEW" == "ds2.01r15" -o "$NEW" == "ds2.01r16" -o "$NEW" == "ds2.01r17" -o "$NEW" == "ds2.01r01" ]; then
  53.             unzip -qq -a ../archive/$i -x *.o
  54.             unzip -qq ../archive/$i *.o
  55.             mv "ds2.1" "$OLD"
  56.         elif [ "$NEW" == "ds2.05a13" ]; then
  57.             unzip -qq -a ../archive/$i -x *.o
  58.             unzip -qq ../archive/$i *.o
  59.             mv "ds2.5a13c" "$OLD"
  60.         else
  61.             unzip -qq -a ../archive/$i -x *.o
  62.             unzip -qq ../archive/$i *.o
  63.         fi
  64.         if [ "$OLD" != "$NEW" ]; then
  65.             mv "$OLD" "$NEW"
  66.         fi
  67.  
  68.         if [ -n "$ISTAR" ]; then
  69.             echo -n " hunting..."
  70.             LINKY=`find $NEW -type l`
  71.             if [ -n "$LINKY" ]; then
  72.                 echo -n " dereferencing..."
  73.                 tar -hcf - "$NEW" | tar -xf - -C unlinked
  74.                 mv "$NEW" linked/
  75.                 mv "unlinked/$NEW" ./
  76.             fi
  77.         fi
  78.  
  79.         echo -n " permisioning..."
  80.         find "$NEW" -type d | xargs chmod 755
  81.         find "$NEW" -type f | xargs chmod 644
  82.         for j in `find "$NEW" -type f | xargs file -nNk | grep -i 'executable' | awk -F: '{print $1}'`; do
  83.             chmod 755 "$j"
  84.         done
  85.  
  86.         echo -n " unemptying..."
  87.         RECENT=`find "$NEW" -type f -printf '%TY-%Tm-%Td %TT %p\n' | grep -v .git | colrm 20 | sort -r | head -1`
  88.         touch -d "$RECENT" "$NEW"
  89.         for j in `find "$NEW" -type d -empty`; do
  90.             touch -d "$RECENT" "$j/.gitignore"
  91.         done
  92.  
  93.         echo -n " stamping..."
  94.         echo -en "$NEW\t$RECENT\n" >"$NEW/VERSION"
  95.         touch -d "$RECENT" "$NEW/VERSION"
  96.  
  97.         echo " done."
  98.     fi
  99. done
  100.  
  101. rm -rf linked unlinked
  102. cd ../deadsouls
  103.  
  104. echo "--- Creating git repository ---"
  105.  
  106. FILES=`ls -d1 ../open/ds* | awk -F/ '{print $NF}'`
  107. COUNT=0
  108. TOTAL=`echo $FILES | wc -w`
  109. for i in $FILES; do
  110.     COUNT=$[ $COUNT + 1 ]
  111.     echo -n "$i ($COUNT of $TOTAL) versioning..."
  112.     if [ -f "$i/VERSION" ]; then
  113.         RECENT=`cat "$i/VERSION"  | cut -f 2-`
  114.     else
  115.         RECENT=`find "../open/$i" -type f -printf '%TY-%Tm-%Td %TT %p\n' | grep -v .git | colrm 20 | sort -r | head -1`
  116.     fi
  117.     ISALPHA=`echo $i | perl -ne '{ printf("ds%d.%02da%02d\n", $1, $2, $3) if /ds(\d)\.(\d+)a(\d+)/; }'`
  118. #    ISFULL=`echo $i | perl -ne '{ printf("ds%d.%02d\n", $1, $2) if /ds(\d)\.(\d+)$/; }'`
  119.  
  120.     if [ -z "$ISALPHA" ]; then
  121.         git checkout master >>../git_checkin.log 2>>../git_error.log
  122.         git ls-files -z | xargs -0 rm -f
  123.         find . -maxdepth 1 -type d -print0 | grep -z '^./[a-zA-Z0-9_]' | xargs -0 rm -rf
  124.         cp -rp ../open/$i/* .
  125.         # rm -rf v22* fluffos*
  126.         #RECENT=`find "../open/$i" -type f -printf '%TY-%Tm-%Td %TT %p\n' | grep -v .git | colrm 20 | sort -r | head -1`
  127.         export GIT_AUTHOR_DATE="$RECENT"
  128.         export GIT_COMMITTER_DATE="$RECENT"
  129.         git add -A >>../git_checkin.log 2>>../git_error.log
  130.         git commit -m $i >>../git_checkin.log 2>>../git_error.log
  131.         git tag $i >>../git_checkin.log 2>>../git_error.log
  132.     fi
  133.  
  134.     git checkout alpha >>../git_checkin.log 2>>../git_error.log
  135.     if [ $? -eq 1 ]; then
  136.         git checkout -b alpha >>../git_checkin.log 2>>../git_error.log
  137.     fi
  138.     git ls-files -z | xargs -0 rm -f
  139.     find . -maxdepth 1 -type d -print0 | grep -z '^./[a-zA-Z0-9_]' | xargs -0 rm -rf
  140.     cp -rp ../open/$i/* .
  141.     # rm -rf v22* fluffos*
  142.     #RECENT=`find "../open/$i" -type f -printf '%TY-%Tm-%Td %TT %p\n' | grep -v .git | colrm 20 | sort -r | head -1`
  143.     export GIT_AUTHOR_DATE="$RECENT"
  144.     export GIT_COMMITTER_DATE="$RECENT"
  145.     git add -A >>../git_checkin.log 2>>../git_error.log
  146.     git commit -m $i >>../git_checkin.log 2>>../git_error.log
  147.     if [ -n "$ISALPHA" ]; then
  148.         git tag $i >>../git_checkin.log 2>>../git_error.log
  149.     fi
  150.  
  151.     echo " done."
  152. done
  153.  
  154. git checkout master >>../git_checkin.log 2>>../git_error.log
  155. cd ..
  156.  
  157. if [ -f git_error.log -a ! -s git_error.log ]; then
  158.     rm git_error.log
  159. fi
  160.  
  161. # If that looks like it worked properly...
  162. # git config --global user.name "Dread Quixadhal"
  163. # git config --global user.email [email protected]
  164. # git remote add origin [email protected]:quixadhal/deadsouls.git
  165. # git push --all
  166. # git push --tags
Advertisement
Add Comment
Please, Sign In to add comment