Compare commits

...

11 commits

Author SHA1 Message Date
580c9ceba5 feat: added .env and .sources to make 2024-11-07 09:46:33 +00:00
ce339b69d2 fix: general fixes for syntax and naming 2024-11-07 10:17:27 +01:00
BonzaiBrains
d172c755e6
style: made functions more readable 2024-11-04 14:02:29 +01:00
BonzaiBrains
d4c06eda43
docs: fixed typos 2024-11-04 13:55:47 +01:00
21404908d8 add: info error warn functions; fix: syntax error in function declaration 2024-10-31 14:18:42 +01:00
BonzaiBrains
15fc39a355
Merge pull request #1 from BonzaiBrains/functions
Functions
2024-10-31 13:02:41 +01:00
BonzaiBrains
1aaaf60b2d
add: usage function 2024-10-31 13:01:37 +01:00
BonzaiBrains
442ff6bcbc
add: init function 2024-10-31 12:56:44 +01:00
BonzaiBrains
f95c0e5bfc
add: console function; style: function names
For more information see: https://google.github.io/styleguide/shellguide.html#s7.1-function-names
2024-10-31 12:47:03 +01:00
BonzaiBrains
75420d0f32
add: start function 2024-10-31 12:43:13 +01:00
BonzaiBrains
9048475efd
add: remove function 2024-10-31 12:41:40 +01:00
3 changed files with 98 additions and 50 deletions

3
.sources Normal file
View file

@ -0,0 +1,3 @@
# Sources list
debian=""
openbsd="test"

View file

@ -1,4 +1,6 @@
install:
cp $PWD/shemum /usr/bin/shemum
cp $PWD/.env $HOME/.env
cp $PWD/.sources $HOME/.sources
clean:
rm -f /usr/bin/shemum

143
shemum
View file

@ -4,12 +4,11 @@
# Date: 9.18.2024
# Debug mode
# To enable debug mode remove the comment.
# Default: true
DEBUG=true
# Debug mode check
if [$DEBUG -eq true]
if [ $DEBUG ]; then
set +x
fi
@ -22,68 +21,112 @@ ROOT_PATH="$HOME/Machines"
ISO_PATH="$ROOT_PATH/$OS_NAME/$OS_NAME.iso"
IMG_PATH="$ROOT_PATH/$OS_NAME/$OS_NAME.img"
# Sources defualt values
. ".env"
# Sources default values
#. ".env"
# Sources virtual machine specific values
. "$ROOT_PATH/$OS_NAME/.env"
#. "$ROOT_PATH/$OS_NAME/.env"
# Defines install image repository.
case $OS_NAME in
"openbsd")
INSTALL_IMG="https://cdn.openbsd.org/pub/OpenBSD/7.5/i386/cd75.iso"
;;
"debian")
INSTALL_IMG=""
;;
*)
echo "$OS_NAME is not an option" >&2
exit 1
;;
esac
# Functions
# Options
case $OPTION in
# Initializes the VM and starts the installer image.
"init")
mkdir -p "$ROOT_PATH/$OS_NAME"
qemu-img create $IMG_PATH $DISK_SIZE
if [ ! -f $ISO_PATH ] && [ ! -z $INSTALL_IMG ]; then
echo $INSTALL_IMG
curl -o $ISO_PATH $INSTALL_IMG
elif [ ! -z $INSTALL_IMG ]; then
echo "Current INSTALL_IMG for $OS_NAME: $ISO_PATH"
else:
echo "Install image path is missing" >&2
exit 1
# Defines install image source
source() {
while read LINE; do
if [ $LINE == $OS_NAME* ]; then
$OS_NAME=$LINE
fi
qemu-system-x86_64 -boot d \
-display curses \
-drive file=$ISO_PATH,media=cdrom \
-drive file=$IMG_PATH,format=raw \
-m $RAM -smp $CPU
;;
"console")
qemu-system-x86_64 -boot c \
done < .sources
}
check() {
if [ -z $OS_NAME ]; then
error "Operating system is not defined"
fi
if [ -z $INSTALL_IMG ]; then
info "$OS_NAME source not set, please update your .sources file"
fi
}
error() {
printf "$@" >&2
exit 1
}
warn() {
printf "$@" >&2
}
info() {
printf "$@" >&1
}
# Virtual machine removal
remove() {
rm -r $ROOT_PATH/$OS_NAME
}
# Virtual machine start without a console
start() {
qemu-system-x86_64 -boot c \
-display none \
-drive file=$IMG_PATH,format=raw \
-m $RAM -smp $CPU
}
# Virtual machine start with a console
console() {
qemu-system-x86_64 -boot c \
-display curses \
-drive file=$IMG_PATH,format=raw \
-m $RAM -smp $CPU
}
# Virtual machine initialization with a console
init() {
def_os_source
mkdir -p "$ROOT_PATH/$OS_NAME"
qemu-img create $IMG_PATH $DISK_SIZE
if [ ! -f $ISO_PATH ] && [ ! -z $INSTALL_IMG ]; then
info "Fetching $OSNAME installer at: $INSTALL_IMG"
curl -o $ISO_PATH $INSTALL_IMG
elif [ ! -z $INSTALL_IMG ]; then
info "Current INSTALL_IMG for $OS_NAME: $ISO_PATH"
else
error "Install image path is missing"
fi
qemu-system-x86_64 -boot d \
-display curses \
-drive file=$ISO_PATH,media=cdrom \
-drive file=$IMG_PATH,format=raw \
-m $RAM -smp $CPU
}
# Display usage
usage() {
printf "Usage: shemum [init] <virtual machine name> <disk size>"
printf " init initialize a virtual machine"
printf " start start a QEMU virtual machine without console output"
printf " console start a QEMU virtual machine with console output"
printf " remove remove virtual machine directory and all it's contents"
}
# Options
case $OPTION in
"init")
init
;;
"console")
console
;;
"start")
qemu-system-x86_64 -boot c \
-display none \
-drive file=$IMG_PATH,format=raw \
-m $RAM -smp $CPU
start
;;
"remove")
rm -r $ROOT_PATH/$OS_NAME
remove
;;
*)
echo "Usage: shemum [init] <virtual machine name> <disk size>"
echo " init initialize a virtual machine"
echo " start start a QEMU virtual machine without console output"
echo " console start a QEMU virtual machine with console output"
echo " remove remove virtual machine directory and all it's contents"
usage
esac