OLD | NEW |
1 // Copyright (c) 2015, the Dartino project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, the Dartino project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE.md file. | 3 // BSD-style license that can be found in the LICENSE.md file. |
4 | 4 |
5 import 'dart:async'; | 5 import 'dart:async'; |
6 import 'dart:io'; | 6 import 'dart:io'; |
7 | 7 |
8 import 'src/context.dart'; | 8 import 'src/context.dart'; |
9 import 'src/platform_service.dart'; | 9 import 'src/platform_service.dart'; |
10 | 10 |
11 const String gcsRoot = 'https://storage.googleapis.com'; | 11 const String gcsRoot = 'https://storage.googleapis.com'; |
12 const String gcsBucket = 'fletch-archive'; | 12 const String gcsBucket = 'dartino-archive'; |
13 | 13 |
14 const String imageRootFileName = 'fletch_raspbian'; | 14 const String imageRootFileName = 'dartino_raspbian'; |
15 const String defaultImageFileName = '$imageRootFileName.img'; | 15 const String defaultImageFileName = '$imageRootFileName.img'; |
16 const String defaultImageZipFileName = '$defaultImageFileName.zip'; | 16 const String defaultImageZipFileName = '$defaultImageFileName.zip'; |
17 | 17 |
18 // Original /etc/hosts from Raspberry Pi. | 18 // Original /etc/hosts from Raspberry Pi. |
19 const String originalRaspberryPiHosts = ''' | 19 const String originalRaspberryPiHosts = ''' |
20 127.0.0.1 localhost | 20 127.0.0.1 localhost |
21 ::1 localhost ip6-localhost ip6-loopback | 21 ::1 localhost ip6-localhost ip6-loopback |
22 ff02::1 ip6-allnodes | 22 ff02::1 ip6-allnodes |
23 ff02::2 ip6-allrouters | 23 ff02::2 ip6-allrouters |
24 | 24 |
25 127.0.1.1 raspberrypi | 25 127.0.1.1 raspberrypi |
26 '''; | 26 '''; |
27 | 27 |
28 /// Check if a version is a bleeding edge version. | 28 /// Check if a version is a bleeding edge version. |
29 bool isEdgeVersion(String version) => version.contains('-edge.'); | 29 bool isEdgeVersion(String version) => version.contains('-edge.'); |
30 | 30 |
31 /// Check if a version is a dev version. | 31 /// Check if a version is a dev version. |
32 bool isDevVersion(String version) => version.contains('-dev.'); | 32 bool isDevVersion(String version) => version.contains('-dev.'); |
33 | 33 |
34 /// Flash an SD card with a Raspbian image. | 34 /// Flash an SD card with a Raspbian image. |
35 Future<bool> flashCDCard(List<String> args) async { | 35 Future<bool> flashCDCard(List<String> args) async { |
36 var ctx = new Context(args); | 36 var ctx = new Context(args); |
37 | 37 |
38 ctx.log('Starting, OS: ${Platform.operatingSystem}'); | 38 ctx.log('Starting, OS: ${Platform.operatingSystem}'); |
39 ctx.log('Args: $args'); | 39 ctx.log('Args: $args'); |
40 if (ctx.configureNetworkOnly) { | 40 if (ctx.configureNetworkOnly) { |
41 ctx.infoln('This program will update the network configuration on a ' | 41 ctx.infoln('This program will update the network configuration on a ' |
42 'Fletch Raspberry Pi 2 SD card.'); | 42 'Dartino Raspberry Pi 2 SD card.'); |
43 } else { | 43 } else { |
44 ctx.infoln('This program will prepare an SD card for ' | 44 ctx.infoln('This program will prepare an SD card for ' |
45 'Fletch on the Raspberry Pi 2.'); | 45 'Dartino on the Raspberry Pi 2.'); |
46 } | 46 } |
47 | 47 |
48 // Determine platform. | 48 // Determine platform. |
49 PlatformService platformService = new PlatformService(ctx); | 49 PlatformService platformService = new PlatformService(ctx); |
50 await platformService.initialize(); | 50 await platformService.initialize(); |
51 | 51 |
52 // Determine the download URL for the image. | 52 // Determine the download URL for the image. |
53 String imageUrl = ctx.imageUrl; | 53 String imageUrl = ctx.imageUrl; |
54 if (ctx.imageUrl == null) { | 54 if (ctx.imageUrl == null) { |
55 String version = await ctx.version; | 55 String version = await ctx.version; |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
110 } else { | 110 } else { |
111 await ctx.readLine( | 111 await ctx.readLine( |
112 '\nUsing the SD card $sdCardDevice.\n$info\n' | 112 '\nUsing the SD card $sdCardDevice.\n$info\n' |
113 'This will delete all contents on the card. ' | 113 'This will delete all contents on the card. ' |
114 'Press Enter to use this card (Ctrl-C to cancel).'); | 114 'Press Enter to use this card (Ctrl-C to cancel).'); |
115 } | 115 } |
116 } | 116 } |
117 | 117 |
118 // Ask for a hostname. | 118 // Ask for a hostname. |
119 String hostname = await ctx.readHostname( | 119 String hostname = await ctx.readHostname( |
120 "Enter the name of the device - default is 'fletch' " | 120 "Enter the name of the device - default is 'dartino' " |
121 "(press Enter to accept): ", 'fletch'); | 121 "(press Enter to accept): ", 'dartino'); |
122 | 122 |
123 // Ask for a static IP address. | 123 // Ask for a static IP address. |
124 String ipAddress = await ctx.readIPAddress( | 124 String ipAddress = await ctx.readIPAddress( |
125 'Enter the static IP address you would like the device to have. ' | 125 'Enter the static IP address you would like the device to have. ' |
126 'Leave it blank to have it assigned via DHCP: ', ''); | 126 'Leave it blank to have it assigned via DHCP: ', ''); |
127 | 127 |
128 Directory mountDir; | 128 Directory mountDir; |
129 if (ctx.configureNetworkOnly) { | 129 if (ctx.configureNetworkOnly) { |
130 // Make sure the SD card is mounted. | 130 // Make sure the SD card is mounted. |
131 mountDir = await platformService.mountDisk(sdCardDevice); | 131 mountDir = await platformService.mountDisk(sdCardDevice); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
172 | 172 |
173 // Sanity check for Raspbian boot partition. | 173 // Sanity check for Raspbian boot partition. |
174 if (!(await checkRaspbianBootPartition(ctx, sdCardDevice, mountDir))) { | 174 if (!(await checkRaspbianBootPartition(ctx, sdCardDevice, mountDir))) { |
175 ctx.infoln( | 175 ctx.infoln( |
176 'The SD card in $sdCardDevice does not look like Raspbian SD card.'); | 176 'The SD card in $sdCardDevice does not look like Raspbian SD card.'); |
177 await platformService.unmountDisk(sdCardDevice); | 177 await platformService.unmountDisk(sdCardDevice); |
178 ctx.done(); | 178 ctx.done(); |
179 return false; | 179 return false; |
180 } | 180 } |
181 | 181 |
182 // All configuration files goes into fletch-configuration on the boot | 182 // All configuration files goes into dartino-configuration on the boot |
183 // partition. | 183 // partition. |
184 Directory configDir = | 184 Directory configDir = |
185 new Directory(mountDir.path + '/fletch-configuration'); | 185 new Directory(mountDir.path + '/dartino-configuration'); |
186 await configDir.create(); | 186 await configDir.create(); |
187 | 187 |
188 // Update the hostname if specified. | 188 // Update the hostname if specified. |
189 if (hostname.length > 0) { | 189 if (hostname.length > 0) { |
190 await new File(configDir.path + '/hostname').writeAsString(hostname + '\n'); | 190 await new File(configDir.path + '/hostname').writeAsString(hostname + '\n'); |
191 String hosts = originalRaspberryPiHosts.replaceAll('raspberrypi', hostname); | 191 String hosts = originalRaspberryPiHosts.replaceAll('raspberrypi', hostname); |
192 await new File(configDir.path + '/hosts').writeAsString(hosts); | 192 await new File(configDir.path + '/hosts').writeAsString(hosts); |
193 } | 193 } |
194 | 194 |
195 // Update the static IP address if specified. | 195 // Update the static IP address if specified. |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
255 return false; | 255 return false; |
256 } | 256 } |
257 if (!bootFiles.contains('${mountDir.path}/kernel.img')) { | 257 if (!bootFiles.contains('${mountDir.path}/kernel.img')) { |
258 await ctx.readLine( | 258 await ctx.readLine( |
259 'WARNING: The SD card in ${sdCardDevice} does not look like a ' | 259 'WARNING: The SD card in ${sdCardDevice} does not look like a ' |
260 'Raspbian SD card.\n\n' | 260 'Raspbian SD card.\n\n' |
261 'Press Enter to continue anyway (Ctrl-C to cancel).'); | 261 'Press Enter to continue anyway (Ctrl-C to cancel).'); |
262 } | 262 } |
263 return true; | 263 return true; |
264 } | 264 } |
OLD | NEW |