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