##
#
# Yank555.lu kernel Aroma-Installer
#
##

ui_print("@Preparing installation");
ui_print("@----------------------");
ui_print(" ");

ui_print(" - checking if device is a ruby");
assert(getprop("ro.product.device") == "ruby" || getprop("ro.build.product") == "ruby" || getprop("ro.product.board") == "ruby");

ui_print(" - mounting system partition");
run_program("/sbin/busybox", "mount", "/system");

ui_print(" - mounting data partition");
run_program("/sbin/busybox", "mount", "/data");

ui_print(" - extracting installation files");
package_extract_dir("setup","/tmp");
set_perm_recursive(0, 0, 0777, 0777, "/tmp/Yank555.lu");

if file_getprop("/tmp/aroma/flash.prop","selected.0") == "1"
  then
    package_extract_dir("kernel", "/tmp");
    set_perm(0, 0, 0777, "/tmp/dd");
    set_perm(0, 0, 0777, "/tmp/modclean.sh");
    set_perm(0, 0, 0777, "/tmp/mkbootimg.sh");
    set_perm(0, 0, 0777, "/tmp/mkbootimg");
    set_perm(0, 0, 0777, "/tmp/unpackbootimg");
endif;
set_progress(0.1);

if file_getprop("/tmp/aroma/flash.prop","selected.0") == "1"
  then
    ui_print(" ");
    ui_print("@Kernel installation");
    ui_print("@-------------------");
    ui_print(" ");

    ui_print(" - disabling m(ake)p(oor)decision ...");
    set_perm(0, 0, 0644, "/system/bin/mpdecision");

    ui_print(" - extracting /system files");
    package_extract_dir("system", "/system");

    ui_print(" - extracting /system/lib/modules");
    package_extract_dir("modules", "/system/lib/modules");

    ui_print(" - Setting proper permissions");
    set_perm(0, 0, 0755, "/system/etc/init.post_boot.sh");
    set_perm(0, 0, 0755, "/system/etc/init.qcom.post_boot.sh");

    ui_print(" - building new boot image");
    run_program("/tmp/dd", "if=/dev/block/mmcblk0p22", "of=/tmp/boot.img");;
    run_program("/tmp/unpackbootimg", "/tmp/boot.img", "/tmp/");
    run_program("/tmp/mkbootimg.sh");

    ui_print(" - Flashing new boot image");
    assert(write_raw_image("/tmp/newboot.img", "boot"),
           delete("/tmp/boot.img"));

    ui_print(" - wiping /cache");
    unmount("/cache");
    format("ext4", "EMMC", "/dev/block/mmcblk0p30", "0");

    set_progress(0.5);
endif;

ui_print(" ");
ui_print("@init.d script generation");
ui_print("@------------------------");
ui_print(" ");

ui_print(" - cleaning up init.d of own old files");
delete("/system/etc/init.d/98swap");
delete("/system/etc/init.d/99z_kernel");

ui_print(" - starting script generator");
ui_print("   (see /data/kernel-script.log for details)");

run_program("/tmp/Yank555.lu/script/install.sh");

set_progress(0.7);

if file_getprop("/tmp/aroma/mods.prop","selected.2") == "2"
  then

    ui_print(" ");
    ui_print("@Hardswap installation");
    ui_print("@---------------------");
    ui_print(" ");

		ui_print(" - starting installation script");
    ui_print("   (see /data/hardswap.log for details)");
		run_program("/tmp/Yank555.lu/swap/install/install.sh");
		
		if file_getprop("/tmp/Yank555.lu/swap/install/hardswap.prop","swap.present") == "yes"
		  then
		    ui_print(" - swap partition found on SD-card");
		    ui_print("     '",file_getprop("/tmp/Yank555.lu/swap/install/hardswap.prop","swap.device"),"'");
		    if file_getprop("/tmp/Yank555.lu/swap/install/hardswap.prop","swap.formated") == "yes"
		      then
		        ui_print(" - swap partition formated");
		    endif;
		    if file_getprop("/tmp/Yank555.lu/swap/install/hardswap.prop","swap.scriptinstalled") == "yes"
		      then
		        ui_print(" - swap activation script installed to init.d");
		    endif;
		  else
		    ui_print("   Problem, no swap partiton found !");
		    ui_print("   --> Hardswap installation aborted.");
		endif;
  
endif;

set_progress(0.9);

ui_print(" ");
ui_print("@Cleaning up");
ui_print("@-----------");
ui_print(" ");

ui_print(" - removing installation files");
delete_recursive(/tmp/Yank555.lu);

ui_print(" - unmounting partition /data");
unmount("/data");	

ui_print(" - unmounting partition /system");
unmount("/system");	

ui_print(" ");
ui_print("@done.");

set_progress(1.0);