~popey/+junk/phablet-flash-wrapper

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#!/bin/bash
# Script to wrap phablet-flash
#
# Script does the following:-
# * Backup (cookies etc) but not photos/videos
# * Flash device (via phablet-flash)
# * Add applications from collections PPA
# * Restore data
# * Reboot
#
# Assumptions:-
# * Device already running some build of Ubuntu Touch and is connected via USB
# * You're on Wifi and want the device to be on the same Wifi network
#
# (c) 2013 Canonical - Alan Pope alan.pope@canonical.com

UBUNTU_ROOT="/data/ubuntu"
BACKUP_LOCATION="$HOME/Downloads"
DATESTAMP=`date +%Y%m%d`-`date +%H%M%S`

function adb_root {
  echo ":: Run adb root"
  adb root
  if [ $? -ne "0" ]; then
    echo ":: adb root failed"
    exit 1
  fi
}

function pause {
    echo ":: Wait $1"
    sleep $1
}

function wait_for_device {
  echo -n ":: Waiting for device to come back ."
  STATE="unknown"
  while [ "$STATE" ==  "unknown" ];
  do
    echo -n "."
    STATE=`adb get-state`
    sleep 15
  done
  echo " "
}

echo ":: Build script to do backup"
TMP_FILE=$(mktemp)

adb_root

pause 5

echo ":: Delete old zip files to possibly regain space from /sdcard"
adb shell rm -r /sdcard/*.zip

cat > $TMP_FILE << 'EOF'
#!/bin/bash
/bin/tar zcf /home/phablet.tgz --exclude=/home/phablet/Pictures/* --exclude=/home/phablet/Videos/* /home/phablet
EOF

echo ":: Run backup"
adb push $TMP_FILE $UBUNTU_ROOT/$TMP_FILE
adb shell chmod 755 $UBUNTU_ROOT/$TMP_FILE
adb shell chroot $UBUNTU_ROOT $UBUNTU_ROOT/$TMP_FILE

echo ":: Download backup to this computer"
adb pull $UBUNTU_ROOT/home/phablet.tgz $BACKUP_LOCATION/phablet.tgz
mv $BACKUP_LOCATION/phablet.tgz $BACKUP_LOCATION/$DATESTAMP-phablet.tgz
ls -l $BACKUP_LOCATION/$DATESTAMP-phablet.tgz
file $BACKUP_LOCATION/$DATESTAMP-phablet.tgz

echo ":: Delete backup file from device"
adb shell rm -r $UBUNTU_ROOT/home/phablet.tgz

echo ":: Flash device"
phablet-flash
FLASH_RESULT=$?
if [ $FLASH_RESULT == "0" ]; then
  echo ":: Flash success"
else
  echo ":: Flash failed"
  exit 1
fi

wait_for_device

# Setup network on device
adb_root
pause 5
echo ":: Setup network"
phablet-network-setup
pause 10
echo ":: Build script to do post-install tasks"
TMP_FILE=$(mktemp)

cat > $TMP_FILE << 'EOF'
#!/bin/bash
export PATH="/sbin:/usr/sbin:/bin:/usr/bin" 
add-apt-repository -y ppa:ubuntu-touch-coreapps-drivers/collection
add-apt-repository -y ppa:ubuntu-touch-coreapps-drivers/daily
apt-get update
apt-get install --yes touch-collection touch-coreapps
perl -p -i -e 's/false/true/' /usr/share/qml-phone-shell/Dash/Apps/ApplicationsFilterGrid.qml
EOF

echo ":: Installing apps"
adb push $TMP_FILE $UBUNTU_ROOT/$TMP_FILE
adb shell chmod 755 $UBUNTU_ROOT/$TMP_FILE
adb shell chroot $UBUNTU_ROOT $UBUNTU_ROOT/$TMP_FILE

echo ":: Upload previously taken backup"
adb push $BACKUP_LOCATION/$DATESTAMP-phablet.tgz $UBUNTU_ROOT/home/phablet.tgz

if [ $? -ne "0" ]; then
  echo ":: Restore to device failed. Manual restore of $BACKUP_$LOCATION/$DATESTAMP-phablet.tgz required"
  exit 1
fi

echo ":: Build script to restore"
TMP_FILE=$(mktemp)

cat > $TMP_FILE << 'EOF'
#!/bin/bash
cd /
/bin/tar zxf /home/phablet.tgz 
EOF

echo ":: Run restore script"
adb push $TMP_FILE $UBUNTU_ROOT/$TMP_FILE
adb shell chmod 755 $UBUNTU_ROOT/$TMP_FILE
adb shell chroot $UBUNTU_ROOT $UBUNTU_ROOT/$TMP_FILE

pause 10

echo ":: Reboot"
adb reboot

wait_for_device

echo ":: Delete old zip files to possibly regain space from /sdcard"
adb shell rm -r /sdcard/*.zip

echo ":: Done"