These scripts are used for creating and managing Tiny Core extensions. Other version trackers (git, svn, etc) don't preserve permissions which is necessary for extensions. I recommend using them within a Tiny Core enviroment, it makes keeping the permissions straight much easier. These scripts will also use sudo to bump up permissions from tc to root (necessary if a file in the extension is owned by root) so they will most likely not work in other distros anyways.
**Until this sentence is removed this is a work in progress! Some work still needs to be done to make them more portable. Use at your own risk!**
===Build the Enviroment===
These scripts run inside the directory with your raw extensions.
mkdir extensions
cd extensions
mkdir built
mkdir changelog
mkdir backup
wget http://url/to/mkext #these will be updated later
wget http://url/to/mkcln
wget http://url/to/mkchk
chmod +x mkext mkcln mkchk
==mkext - make extension==
This script will backup the old version of the extension, add all comments to the change log and then build the extension.
EXT=`echo $1 | sed 's/\///'`
shift
FILE="$EXT/usr/local/tce.installed/$EXT"
DIR="$EXT/usr/local/tce.installed"
DATE=`date +%y.%m.%d_%H.%M`
MOD_FLAG="# MODIFIED:"
VER_FLAG="# VERSION:"
if [ -d $EXT -a $EXT ]
then
if [ -z $1 ]
then
echo "Please type a comment to describe recent changes!"
else
if [ ! -f $FILE ]
then
if [ ! -d $DIR ]
then
sudo mkdir -p $DIR
fi
echo "$VER_FLAG 1" | sudo tee $FILE > /dev/null
echo "$MOD_FLAG $DATE" | sudo tee -a $FILE > /dev/null
fi
MOD_EXISTS=`cat $FILE | grep "$MOD_FLAG" | wc -l`
if [ $MOD_EXISTS -eq 0 ]
then
sudo sed -i "1i $MOD_FLAG $DATE" $FILE
else
OLD_DATE=`cat $FILE | grep "$MOD_FLAG " | sed "s/$MOD_FLAG //"`
sudo sed -i "s/$MOD_FLAG $OLD_DATE/$MOD_FLAG $DATE/" $FILE
fi
VER_EXISTS=`cat $FILE | grep "$VER_FLAG" | wc -l`
if [ $VER_EXISTS -eq 0 ]
then
sudo sed -i "1i $VER_FLAG 1" $FILE
else
OLD_VER=`cat $FILE | grep "$VER_FLAG " | sed "s/$VER_FLAG //"`
NEW_VER=$((OLD_VER+1))
sudo sed -i "s/$VER_FLAG $OLD_VER/$VER_FLAG $NEW_VER/" $FILE
fi
mv built/$EXT.tcz backup/$EXT\-$DATE.tcz
mksquashfs $EXT built/$EXT.tcz > /tmp/mkext_out
fi
else
echo "Specified extension does not exist!"
fi
#if [ ! -f changelog/$EXT ]
#then
#touch changelog/$EXT
#fi
echo "Version $NEW_VER" >> changelog/$EXT
echo $DATE >> changelog/$EXT
echo $@ >> changelog/$EXT
==mkchk - make check==
Compares the raw extension files to the last committed version.
EXT=`echo $@ | sed 's/\///'`
if [ -z $EXT ]
then
echo "Please specify an extension!"
else
mkdir /tmp/$EXT
sudo mount -o loop built/$EXT\.tcz /tmp/$EXT
diff /tmp/$EXT $EXT
FILES=`find $EXT -type f`
for n in $FILES
do
diff -a /tmp/$n $n
done
sudo umount -d /tmp/$EXT
rmdir /tmp/$EXT
fi
==mkcln - make clean==
Reverts raw extension files to the last committed version.
EXT=`echo $@ | sed 's/\///'`
DATE=`date +%y.%m.%d_%H.%M`
if [ -z $EXT ]
then
echo "Please specify an extension!"
else
mv $EXT .cleaned/$EXT\-$DATE
mkdir /tmp/$EXT
sudo mount -o loop built/$EXT\.tcz /tmp/$EXT
sudo cp -rp /tmp/$EXT $EXT
sudo umount -d /tmp/$EXT
rmdir /tmp/$EXT
fi