1#!/bin/bash -e
2
3print_usage()
4{
5	normalized_usage | grep -v "^mod-parts"
6	echo -e "done                               \tdone modifying and quit"
7}
8
9modify_partitions()
10{
11	echo "=========================================="
12	echo "          Start modifying partitions"
13	echo "=========================================="
14
15	rk_partition_print
16
17	echo
18	echo "Usage:"
19	print_usage
20
21	while true; do
22		echo
23		read -p "Commands (? for help): " SUB_CMD ARGS || break
24		case "${SUB_CMD:-print-parts}" in
25			done) break ;;
26			print-parts)
27				rk_partition_print
28				continue
29				;;
30			edit-parts) FUNC=rk_partition_edit ;;
31			new-parts) FUNC=rk_partition_create ;;
32			insert-part) FUNC=rk_partition_insert ;;
33			del-part) FUNC=rk_partition_del ;;
34			move-part) FUNC=rk_partition_move ;;
35			rename-part) FUNC=rk_partition_rename ;;
36			resize-part) FUNC=rk_partition_resize ;;
37			help | h | -h | --help | \?) FUNC=false ;;
38			*)
39				echo "Unknown command: $SUB_CMD"
40				FUNC=false
41				;;
42		esac
43
44		if $FUNC $ARGS; then
45			rk_partition_print
46		else
47			print_usage
48		fi
49	done
50}
51
52# Hooks
53
54usage_hook()
55{
56	echo -e "print-parts                        \tprint partitions"
57	echo -e "mod-parts                          \tinteractive partition table modify"
58	echo -e "edit-parts                         \tedit raw partitions"
59	echo -e "new-parts:<offset>:<name>:<size>...\tre-create partitions"
60	echo -e "insert-part:<idx>:<name>[:<size>]  \tinsert partition"
61	echo -e "del-part:(<idx>|<name>)            \tdelete partition"
62	echo -e "move-part:(<idx>|<name>):<idx>     \tmove partition"
63	echo -e "rename-part:(<idx>|<name>):<name>  \trename partition"
64	echo -e "resize-part:(<idx>|<name>):<size>  \tresize partition"
65}
66
67PRE_BUILD_CMDS="print-parts mod-parts edit-parts new-parts insert-part del-part move-part rename-part resize-part"
68pre_build_hook()
69{
70	check_config RK_PARAMETER || return 0
71
72	CMD=$1
73	shift
74
75	case "$CMD" in
76		print-parts) rk_partition_print $@ ;;
77		mod-parts) modify_partitions $@ ;;
78		edit-parts) rk_partition_edit $@ ;;
79		new-parts) rk_partition_create $@ ;;
80		insert-part) rk_partition_insert $@ ;;
81		del-part) rk_partition_del $@ ;;
82		move-part) rk_partition_move $@ ;;
83		rename-part) rk_partition_rename $@ ;;
84		resize-part) rk_partition_resize $@ ;;
85		*)
86			normalized_usage
87			exit 1
88			;;
89	esac
90
91	finish_build $CMD $@
92}
93
94source "${BUILD_HELPER:-$(dirname "$(realpath "$0")")/../build-hooks/build-helper}"
95
96pre_build_hook $@
97