1*1b3f573fSAndroid Build Coastguard Workerimport 'dart:io'; 2*1b3f573fSAndroid Build Coastguard Worker 3*1b3f573fSAndroid Build Coastguard Workerimport 'dart_tutorial/addressbook.pb.dart'; 4*1b3f573fSAndroid Build Coastguard Worker 5*1b3f573fSAndroid Build Coastguard Worker/// This function fills in a Person message based on user input. 6*1b3f573fSAndroid Build Coastguard WorkerPerson promptForAddress() { 7*1b3f573fSAndroid Build Coastguard Worker final person = Person(); 8*1b3f573fSAndroid Build Coastguard Worker 9*1b3f573fSAndroid Build Coastguard Worker print('Enter person ID: '); 10*1b3f573fSAndroid Build Coastguard Worker final input = stdin.readLineSync(); 11*1b3f573fSAndroid Build Coastguard Worker person.id = int.parse(input); 12*1b3f573fSAndroid Build Coastguard Worker 13*1b3f573fSAndroid Build Coastguard Worker print('Enter name'); 14*1b3f573fSAndroid Build Coastguard Worker person.name = stdin.readLineSync(); 15*1b3f573fSAndroid Build Coastguard Worker 16*1b3f573fSAndroid Build Coastguard Worker print('Enter email address (blank for none) : '); 17*1b3f573fSAndroid Build Coastguard Worker final email = stdin.readLineSync(); 18*1b3f573fSAndroid Build Coastguard Worker if (email.isNotEmpty) person.email = email; 19*1b3f573fSAndroid Build Coastguard Worker 20*1b3f573fSAndroid Build Coastguard Worker while (true) { 21*1b3f573fSAndroid Build Coastguard Worker print('Enter a phone number (or leave blank to finish): '); 22*1b3f573fSAndroid Build Coastguard Worker final number = stdin.readLineSync(); 23*1b3f573fSAndroid Build Coastguard Worker if (number.isEmpty) break; 24*1b3f573fSAndroid Build Coastguard Worker 25*1b3f573fSAndroid Build Coastguard Worker final phoneNumber = Person_PhoneNumber()..number = number; 26*1b3f573fSAndroid Build Coastguard Worker 27*1b3f573fSAndroid Build Coastguard Worker print('Is this a mobile, home, or work phone? '); 28*1b3f573fSAndroid Build Coastguard Worker 29*1b3f573fSAndroid Build Coastguard Worker final type = stdin.readLineSync(); 30*1b3f573fSAndroid Build Coastguard Worker switch (type) { 31*1b3f573fSAndroid Build Coastguard Worker case 'mobile': 32*1b3f573fSAndroid Build Coastguard Worker phoneNumber.type = Person_PhoneType.MOBILE; 33*1b3f573fSAndroid Build Coastguard Worker break; 34*1b3f573fSAndroid Build Coastguard Worker case 'home': 35*1b3f573fSAndroid Build Coastguard Worker phoneNumber.type = Person_PhoneType.HOME; 36*1b3f573fSAndroid Build Coastguard Worker break; 37*1b3f573fSAndroid Build Coastguard Worker case 'work': 38*1b3f573fSAndroid Build Coastguard Worker phoneNumber.type = Person_PhoneType.WORK; 39*1b3f573fSAndroid Build Coastguard Worker break; 40*1b3f573fSAndroid Build Coastguard Worker default: 41*1b3f573fSAndroid Build Coastguard Worker print('Unknown phone type. Using default.'); 42*1b3f573fSAndroid Build Coastguard Worker } 43*1b3f573fSAndroid Build Coastguard Worker person.phones.add(phoneNumber); 44*1b3f573fSAndroid Build Coastguard Worker } 45*1b3f573fSAndroid Build Coastguard Worker 46*1b3f573fSAndroid Build Coastguard Worker return person; 47*1b3f573fSAndroid Build Coastguard Worker} 48*1b3f573fSAndroid Build Coastguard Worker 49*1b3f573fSAndroid Build Coastguard Worker/// Reads the entire address book from a file, adds one person based 50*1b3f573fSAndroid Build Coastguard Worker/// on user input, then writes it back out to the same file. 51*1b3f573fSAndroid Build Coastguard Workervoid main(List<String> arguments) { 52*1b3f573fSAndroid Build Coastguard Worker if (arguments.length != 1) { 53*1b3f573fSAndroid Build Coastguard Worker print('Usage: add_person ADDRESS_BOOK_FILE'); 54*1b3f573fSAndroid Build Coastguard Worker exit(-1); 55*1b3f573fSAndroid Build Coastguard Worker } 56*1b3f573fSAndroid Build Coastguard Worker 57*1b3f573fSAndroid Build Coastguard Worker final file = File(arguments.first); 58*1b3f573fSAndroid Build Coastguard Worker AddressBook addressBook; 59*1b3f573fSAndroid Build Coastguard Worker if (!file.existsSync()) { 60*1b3f573fSAndroid Build Coastguard Worker print('File not found. Creating new file.'); 61*1b3f573fSAndroid Build Coastguard Worker addressBook = AddressBook(); 62*1b3f573fSAndroid Build Coastguard Worker } else { 63*1b3f573fSAndroid Build Coastguard Worker addressBook = AddressBook.fromBuffer(file.readAsBytesSync()); 64*1b3f573fSAndroid Build Coastguard Worker } 65*1b3f573fSAndroid Build Coastguard Worker addressBook.people.add(promptForAddress()); 66*1b3f573fSAndroid Build Coastguard Worker file.writeAsBytes(addressBook.writeToBuffer()); 67*1b3f573fSAndroid Build Coastguard Worker} 68