prefix paths in example.sh

This commit is contained in:
Josh Hansen 2023-09-30 01:02:49 -07:00
parent 4a8b72af74
commit 945c423694
2 changed files with 92 additions and 69 deletions

View file

@ -13,7 +13,6 @@ GHEE="$REPO_PATH/target/debug/ghee"
# GHEE="sudo -u $OWNER $GHEE_CMD"
if [ ! -d "example" ]; then
mkdir example
fi
@ -23,103 +22,107 @@ cd example
set -x
main() {
prefix=$1
# Create a personnel dataset with three people
# The name, ID, and state of residence are known for each person
mkdir people
touch ./people/Sandeep ./people/Sofia ./people/Wulfrum
$GHEE set -s name=Sandeep -s id=2 -s state=CA ./people/Sandeep
$GHEE set -s name=Sofia -s id=1 -s state=WA ./people/Sofia
$GHEE set -s name=Wulfrum -s id=0 -s state=CA ./people/Wulfrum
$GHEE set -s name=Sandeep -s id=2 -s state=CA $prefix/people/Sandeep
$GHEE set -s name=Sofia -s id=1 -s state=WA $prefix/people/Sofia
$GHEE set -s name=Wulfrum -s id=0 -s state=CA $prefix/people/Wulfrum
# Check how Ghee sees the files we just set up
$GHEE get people
# Tell Ghee what key the data is indexed by
$GHEE init -k name ./people
$GHEE init -k name $prefix/people
# Index the dataset by ID
$GHEE idx -v -k id ./people ./people:id
$GHEE idx -v -k id $prefix/people $prefix/people:id
# Index the dataset by state and ID, placing the index in the default path
$GHEE idx -v -k state -k id ./people
$GHEE idx -v -k state -k id $prefix/people
# Add more people to the table and its indices
$GHEE ins -v ./people < ../../people.json
$GHEE ins -v $prefix/people < ../../people.json
# Get all of ./people, seen as a table
$GHEE get -a ./people
$GHEE get -a $prefix/people
# # Get all of ./people without sorting in the walk of the folder hierarchy
# ghee get -a --nosort ./people
# ghee get -a --nosort $prefix/people
# Get the name of everybody from California; include all subpaths (don't ignore indices)
$GHEE get -a -w state=CA -f name ./people
$GHEE get -a -w state=CA -f name $prefix/people
# Remove Sofia
$GHEE del -v ./people -w name=Sofia
$GHEE del -v $prefix/people -w name=Sofia
# Equivalently: ghee del -v ./people Sofia
# Remove Lilly from the :id index and all related indices
$GHEE del -v ./people:id 3
$GHEE del -v $prefix/people:id 3
# Equivalently: ghee del -v ./people -w id=3
# Equivalently: ghee del -v ./people Lilly
# Remove Wulfrum from the :state:id index and all related indices
$GHEE del -v ./people/:state:id CA 0
$GHEE del -v $prefix/people/:state:id CA 0
# Equivalently: ghee del -v ./people -w state=CA -w id=0
# Equivalently: ghee del -v ./people Wulfrum
# Get the name of everybody from California still remaining,
# taking advantage of the state index
# This will avoid traversing irrelevant portions of the index
$GHEE get -a -w state=CA -f name ./people/:state:id
$GHEE get -a -w state=CA -f name $prefix/people/:state:id
# Create a table directly
$GHEE create -v ./direct -k blah
$GHEE create -v $prefix/direct -k blah
# Create people2 in one go using `create'
$GHEE create -v ./people2 -k id < ../../people.json
$GHEE create -v $prefix/people2 -k id < ../../people.json
$GHEE status ./people2
$GHEE status $prefix/people2
mkdir ./empty
$GHEE status ./empty
mkdir $prefix/empty
$GHEE status $prefix/empty
$GHEE get empty
$GHEE get -a empty
}
btrfs() {
$GHEE status .
prefix=$1
$GHEE status $prefix
$GHEE log
$GHEE create -v -k toppings ./pizza
$GHEE create -v -k toppings $prefix/pizza
$GHEE status ./pizza
$GHEE status $prefix/pizza
$GHEE touch ./pizza/olive
$GHEE touch $prefix/pizza/olive
$GHEE status ./pizza
$GHEE status $prefix/pizza
$GHEE commit -m "Add olive pizza" ./pizza
$GHEE commit -m "Add olive pizza" $prefix/pizza
$GHEE log ./pizza
$GHEE log $prefix/pizza
$GHEE status ./pizza
$GHEE status $prefix/pizza
$GHEE touch ./pizza/pepperoni
$GHEE touch $prefix/pizza/pepperoni
echo "Olives are good on pizza" > ./pizza/olive
echo "Olives are good on pizza" > $prefix/pizza/olive
$GHEE set -s yumminess=5 ./pizza/olive
$GHEE set -s yumminess=5 $prefix/pizza/olive
$GHEE status ./pizza
$GHEE status $prefix/pizza
$GHEE commit -m "Add pepperoni; add details to olive" ./pizza
$GHEE commit -m "Add pepperoni; add details to olive" $prefix/pizza
$GHEE status ./pizza
$GHEE status $prefix/pizza
$GHEE log ./pizza
$GHEE log $prefix/pizza
cd pizza
@ -134,40 +137,50 @@ btrfs() {
cd ..
}
# --- Ext4 ---
dd if=/dev/zero of=./ghee-ext4.img bs=1M count=400 1> /dev/null 2> /dev/null
mkfs.ext4 -L ghee-ext4 ./ghee-ext4.img 1> /dev/null 2> /dev/null
mkdir ./ext4
sudo mount -o loop ./ghee-ext4.img ./ext4
cd ext4
sudo chown $OWNER:$OWNER .
declare -A PREFIXES
PREFIXES=([relative]=".")
main
for i in "${!PREFIXES[@]}"
do
prefix="${PREFIXES[$i]}"
"======= $i prefix: $prefix =======" 2> /dev/null
# --- Ext4 ---
ext4img="$prefix/ghee-ext4-$i.img"
dd if=/dev/zero of=$ext4img bs=1M count=400 1> /dev/null 2> /dev/null
mkfs.ext4 -L ext4-$i $ext4img 1> /dev/null 2> /dev/null
mkdir $prefix/ext4
sudo mount -o loop $ext4img ./ext4
cd ext4
sudo chown $OWNER:$OWNER .
cd ..
sudo umount ./ext4
main $prefix
# --- BTRFS ---
## Initial file hierarchy to clone
mkdir ./empty
cd ..
sudo umount ./ext4
dd if=/dev/zero of=./ghee-btrfs.img bs=1M count=114 1> /dev/null 2> /dev/null
mkfs.btrfs -L ghee-btrfs --rootdir ./empty ./ghee-btrfs.img 1> /dev/null 2> /dev/null
mkdir ./btrfs
sudo mount -o loop ./ghee-btrfs.img ./btrfs
# --- BTRFS ---
## Initial file hierarchy to clone
mkdir ./empty
cd btrfs
sudo chown $OWNER:$OWNER .
btrfsimg="$prefix/ghee-btrfs-$i.img"
dd if=/dev/zero of=$btrfsimg bs=1M count=114 1> /dev/null 2> /dev/null
mkfs.btrfs -L btrfs-$i --rootdir ./empty $btrfsimg 1> /dev/null 2> /dev/null
mkdir ./btrfs
sudo mount -o loop $btrfsimg ./btrfs
main
cd btrfs
sudo chown $OWNER:$OWNER .
btrfs
main $prefix
btrfs $prefix
cd ..
sudo umount ./btrfs
# --- /BTRFS ---
cd ..
sudo umount ./btrfs
# --- /BTRFS ---
done
cd ..

View file

@ -1,10 +1,17 @@
+ dd if=/dev/zero of=./ghee-ext4.img bs=1M count=400
+ mkfs.ext4 -L ghee-ext4 ./ghee-ext4.img
+ declare -A PREFIXES
+ PREFIXES=([relative]=".")
+ for i in "${!PREFIXES[@]}"
+ prefix=.
+ '======= relative prefix: . ======='
+ ext4img=./ghee-ext4-relative.img
+ dd if=/dev/zero of=./ghee-ext4-relative.img bs=1M count=400
+ mkfs.ext4 -L ext4-relative ./ghee-ext4-relative.img
+ mkdir ./ext4
+ sudo mount -o loop ./ghee-ext4.img ./ext4
+ sudo mount -o loop ./ghee-ext4-relative.img ./ext4
+ cd ext4
+ sudo chown josh:josh .
+ main
+ main .
+ prefix=.
+ mkdir people
+ touch ./people/Sandeep ./people/Sofia ./people/Wulfrum
+ /home/josh/Projects/Ghee/target/debug/ghee set -s name=Sandeep -s id=2 -s state=CA ./people/Sandeep
@ -96,13 +103,15 @@ No table found
+ cd ..
+ sudo umount ./ext4
+ mkdir ./empty
+ dd if=/dev/zero of=./ghee-btrfs.img bs=1M count=114
+ mkfs.btrfs -L ghee-btrfs --rootdir ./empty ./ghee-btrfs.img
+ btrfsimg=./ghee-btrfs-relative.img
+ dd if=/dev/zero of=./ghee-btrfs-relative.img bs=1M count=114
+ mkfs.btrfs -L btrfs-relative --rootdir ./empty ./ghee-btrfs-relative.img
+ mkdir ./btrfs
+ sudo mount -o loop ./ghee-btrfs.img ./btrfs
+ sudo mount -o loop ./ghee-btrfs-relative.img ./btrfs
+ cd btrfs
+ sudo chown josh:josh .
+ main
+ main .
+ prefix=.
+ mkdir people
+ touch ./people/Sandeep ./people/Sofia ./people/Wulfrum
+ /home/josh/Projects/Ghee/target/debug/ghee set -s name=Sandeep -s id=2 -s state=CA ./people/Sandeep
@ -191,7 +200,8 @@ Initialized ./people2/5
No table found
+ /home/josh/Projects/Ghee/target/debug/ghee get empty
+ /home/josh/Projects/Ghee/target/debug/ghee get -a empty
+ btrfs
+ btrfs .
+ prefix=.
+ /home/josh/Projects/Ghee/target/debug/ghee status .
No table found
+ /home/josh/Projects/Ghee/target/debug/ghee log