ui_print("@Preparing installation");
ui_print("@----------------------");
ui_print("");
ui_print(" - extracting installation files");
package_extract_dir("setup","/tmp");
set_perm_recursive(0, 0, 0777, 0777, "/tmp/arter97");
set_progress(0.1);

ui_print(" - mounting system partition");
if getprop("ro.hardware") == "SHV-E210L"
  then
  assert(mount("ext4", "EMMC", "/dev/block/mmcblk0p10", "/system") || ui_print("   (system is mounted already)"));
else
  assert(mount("ext4", "EMMC", "/dev/block/mmcblk0p9", "/system") || ui_print("   (system is mounted already)"));
endif;
ui_print(" - mounting data partition");
if getprop("ro.hardware") == "SHV-E210L"
  then
  assert(mount("ext4", "EMMC", "/dev/block/mmcblk0p13", "/data") || ui_print("   (data is mounted already)"));
else
  assert(mount("ext4", "EMMC", "/dev/block/mmcblk0p12", "/data") || ui_print("   (data is mounted already)"));
endif;

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

ui_print(" - Deleting old kernel modules");
run_program("/sbin/busybox", "rm", "-r", "/system/lib/modules");
ui_print(" - Installing new kernel modules");
symlink("/lib/modules", "/system/lib/modules");
ui_print(" - Installing hostapd hotspot fix & pgrep & aTweaks");
delete("/system/bin/hostapd");
delete("/system/xbin/hostapd");
delete("/system/bin/pgrep");
delete("/system/xbin/pgrep");
delete("/system/app/aTweaks.apk");
delete("/data/app/com.arter97.atweaks.app.apk");
delete("/data/app/com.arter97.atweaks.app-1.apk");
delete("/data/app/com.arter97.atweaks.app-2.apk");
delete("/data/app/com.arter97.atweaks.app-3.apk");
delete("/data/app/com.arter97.atweaks.app-4.apk");
delete("/data/app/com.arter97.atweaks.app-5.apk");
delete("/data/app/com.arter97.atweaks.app-6.apk");
delete("/data/app/com.arter97.atweaks.app-7.apk");
delete("/data/app/com.arter97.atweaks.app-8.apk");
delete("/data/app/com.arter97.atweaks.app-9.apk");
package_extract_dir("system", "/system");
set_perm(0, 0, 0775, "/system/bin/hostapd");
set_perm(0, 0, 0775, "/system/bin/pgrep");
set_perm(0, 0, 0644, "/system/app/aTweaks.apk");
ui_print(" - Flashing new boot image");
package_extract_file("img.tar.xz", "/tmp/img.tar.xz");
set_progress(0.3);
run_program("/tmp/arter97/script/prop.sh");
if getprop("ro.hardware") == "GT-I9300"
  then
  ui_print(" - Installing GT-I9300 boot.img");
  run_program("/tmp/arter97/script/img.sh", "i9300.img");
  write_raw_image("/tmp/boot.img", "/dev/block/mmcblk0p5");
  delete("/tmp/boot.img");
endif;
if getprop("ro.hardware") == "SHW-M440S"
  then
  ui_print(" - Installing SHW-M440S boot.img");
  run_program("/tmp/arter97/script/img.sh", "m440s.img");
  write_raw_image("/tmp/boot.img", "/dev/block/mmcblk0p5");
  delete("/tmp/boot.img");
  ui_print(" - Installing Wi-Fi murata fix");
  run_program("/tmp/arter97/script/sub-scripts/wififix");
  ui_print("");
  ui_print(" - If you experience Wi-Fi issues,");
  ui_print(" - remove /system/etc/init.d/wififix");
  ui_print("");
endif;
if getprop("ro.hardware") == "SHV-E210S"
  then
  ui_print(" - Installing SHV-E210S boot.img");
  run_program("/tmp/arter97/script/img.sh", "e210s.img");
  write_raw_image("/tmp/boot.img", "/dev/block/mmcblk0p5");
  delete("/tmp/boot.img");
endif;
if getprop("ro.hardware") == "SHV-E210K"
  then
  ui_print(" - Installing SHV-E210K boot.img");
  run_program("/tmp/arter97/script/img.sh", "e210k.img");
  write_raw_image("/tmp/boot.img", "/dev/block/mmcblk0p5");
  delete("/tmp/boot.img");
endif;
if getprop("ro.hardware") == "SHV-E210L"
  then
  ui_print(" - Installing SHV-E210L boot.img");
  run_program("/tmp/arter97/script/img.sh", "e210l.img");
  write_raw_image("/tmp/boot.img", "/dev/block/mmcblk0p5");
  delete("/tmp/boot.img");
endif;
set_progress(0.4);
ui_print(" - Tuning file systems");
run_program("/sbin/tune2fs", "-o", "journal_data_writeback", "/dev/block/mmcblk0p3");
if getprop("ro.hardware") == "SHV-E210L"
  then
  run_program("/sbin/tune2fs", "-o", "journal_data_writeback", "/dev/block/mmcblk0p9");
  run_program("/sbin/tune2fs", "-o", "journal_data_writeback", "/dev/block/mmcblk0p10");
  run_program("/sbin/tune2fs", "-o", "journal_data_writeback", "/dev/block/mmcblk0p13");
else
  run_program("/sbin/tune2fs", "-o", "journal_data_writeback", "/dev/block/mmcblk0p8");
  run_program("/sbin/tune2fs", "-o", "journal_data_writeback", "/dev/block/mmcblk0p9");
  run_program("/sbin/tune2fs", "-o", "journal_data_writeback", "/dev/block/mmcblk0p12");
endif;
set_progress(0.6);

ui_print(" - Tweaking mDNIe");
run_program("/tmp/arter97/script/mdnie.sh");

set_progress(0.7);

ui_print(" ");
ui_print("@Script generation");
ui_print("@-----------------");
ui_print(" ");

ui_print(" - cleaning up /system/etc");
ui_print("   (kernel settings files)");
delete("/system/etc/init.kernel.sh");

ui_print(" - cleaning up /data");
ui_print("   (kernel old settings files)");
delete("/data/kernel-script.log");

ui_print(" - starting script generator");

run_program("/tmp/arter97/script/install.sh");

set_progress(0.8);

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

ui_print(" - wiping cache, dalvik-cache");
run_program("/sbin/busybox", "rm", "-r", "/data/dalvik-cache");
unmount("/cache");
if getprop("ro.hardware") == "SHV-E210L"
  then
  format("ext4", "EMMC", "/dev/block/mmcblk0p9");
else
  format("ext4", "EMMC", "/dev/block/mmcblk0p8");
endif;

set_progress(0.9);

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

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

ui_print(" - removing installation files");
delete_recursive(/tmp/arter97);

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

set_progress(1.0);
