lib: Add disk-partition-format library functions
Adding disk-partition-format library to add these functions
- partition_disk
- format_partition
Signed-off-by: Naresh Kamboju <naresh.kamboju@linaro.org>
diff --git a/automated/lib/disk-partition-format b/automated/lib/disk-partition-format
new file mode 100755
index 0000000..558c865
--- /dev/null
+++ b/automated/lib/disk-partition-format
@@ -0,0 +1,84 @@
+#!/bin/sh
+# Description: parted is not working on SSD (Solid-State Drives) this is the
+# reason to use fdisk instead.
+
+LANG=C
+export LANG
+
+# fdisk command might in $PATH /sbin or /usr/sbin or /usr/local/sbin
+# export PATH for better usage.
+export PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin
+
+# shellcheck disable=SC2039
+partition_disk() {
+ local DEVICE="$1"
+ local SIZES="$2"
+ if [ -z "${DEVICE}" ]; then
+ echo "ERROR: no device given"
+ exit 1
+ fi
+
+ # Create a new empty DOS partition table
+ (
+ echo o
+ echo w) | fdisk "${DEVICE}"
+
+ if [ -n "${SIZES}" ]; then
+ # Create partitions as per sizes
+ for size in ${SIZES}; do
+ # Create patitions with ${size}
+ (
+ echo n
+ echo p
+ echo
+ echo
+ echo "${size}"
+ echo w) | fdisk "${DEVICE}"
+ done
+ fi
+
+ # Create a partition at the end.
+ # Use the reset of the disk.
+ (
+ echo n
+ echo p
+ echo
+ echo
+ echo
+ echo w) | fdisk "${DEVICE}"
+ return 0
+}
+
+# shellcheck disable=SC2039
+format_partition() {
+ local DEVICE="$1"
+ local FILESYSTEM="$2"
+ local PARTITION=""
+ local TOTAL_PARTITIONS=""
+
+ if [ -z "${DEVICE}" ]; then
+ echo "ERROR: no device given"
+ exit 1
+ fi
+ if [ -z "${FILESYSTEM}" ]; then
+ echo "No file system type found"
+ exit 1
+ fi
+
+ # Total partitions in a block device
+ TOTAL_PARTITIONS=$(find "${DEVICE}"* | grep "[0-9]" | tr '\n' ' ' )
+
+ # Format each partitions in a given drive
+ for PARTITION in ${TOTAL_PARTITIONS} ; do
+ echo "Formatting ${PARTITION} to ${FILESYSTEM}"
+ if [ "${FILESYSTEM}" = "fat32" ]; then
+ echo "y" | mkfs -t vfat -F 32 "${PARTITION}"
+ else
+ echo "y" | mkfs -t "${FILESYSTEM}" "${PARTITION}"
+ fi
+
+ sync
+ sleep 5
+ done
+ return 0
+}