#!/bin/sh
# mkskel - create a filesystem layout

# (C) 2023 Everest Linux
# See the GNU GPL Version 3 for copyright details

ROOT_DIR=${2}

mkdirs() {
	mkdir -pv ${ROOT_DIR}/{dev,home,mnt,proc,run,srv,sys,boot,etc,lost+found}
	mkdir -pv ${ROOT_DIR}/{opt,root,var,tmp,include,share}
	mkdir -pv ${ROOT_DIR}/glacier

	for DIR in bin lib sbin; do
		mkdir -pv ${ROOT_DIR}/${DIR}
		mkdir -pv ${ROOT_DIR}/usr/${DIR}
	done

	case $(uname -m) in
		x86_64)
			ln -sv ${ROOT_DIR}/lib ${ROOT_DIR}/lib64
			ln -sv ${ROOT_DIR}/usr/lib ${ROOT_DIR}/usr/lib64
		;;
	esac

	mkdir -pv ${ROOT_DIR}/rescue
	mkdir -pv ${ROOT_DIR}/rescue/{dev,mnt,proc,run,etc,lost+found}
	mkdir -pv ${ROOT_DIR}/rescue/{root,var,tmp}

	for DIR in bin lib sbin; do
		mkdir -pv ${ROOT_DIR}/rescue/${DIR}
	done

	case $(uname -m) in
		x86_64)
			ln -sv ${ROOT_DIR}/rescue/lib ${ROOT_DIR}/rescue/lib64
		;;
	esac
}

helpmsg() {
	printf "usage: ${0} [-h] [-d]  DIRECTORY\n"
}

helpmsg_big() {
	printf "${0} - create a filesystem layout\n"
	printf "usage: ${0} [-h] [-d] DIRECTORY\n"
	printf "\n"
	printf "${0} {-h}		Show this message\n"
	printf "${0} {-d DIRECTORY}	Create a filesystem layout in DIRECTORY\n"
	printf "\n"
	printf "This program is free software.\n"
	printf "See the GNU GPL version 3 for details.\n"
}

case $1 in
	-h)
		
		helpmsg_big "$@"
		exit 0
	;;
	-d)
		if [ "${2}" == "" ]; then
			printf "you must specify a directory\n"
			exit 1
		fi
		mkdirs "$@"
		exit 0
	;;
	-*)
		helpmsg "$@"
		exit 1
	;;
	*)
		helpmsg "$@"
		exit 1
esac

helpmsg "$@"
exit 1
