1*1b3f573fSAndroid Build Coastguard Worker#! /usr/bin/env python 2*1b3f573fSAndroid Build Coastguard Worker 3*1b3f573fSAndroid Build Coastguard Worker# See README.txt for information and build instructions. 4*1b3f573fSAndroid Build Coastguard Worker 5*1b3f573fSAndroid Build Coastguard Workerimport addressbook_pb2 6*1b3f573fSAndroid Build Coastguard Workerimport sys 7*1b3f573fSAndroid Build Coastguard Worker 8*1b3f573fSAndroid Build Coastguard Workertry: 9*1b3f573fSAndroid Build Coastguard Worker raw_input # Python 2 10*1b3f573fSAndroid Build Coastguard Workerexcept NameError: 11*1b3f573fSAndroid Build Coastguard Worker raw_input = input # Python 3 12*1b3f573fSAndroid Build Coastguard Worker 13*1b3f573fSAndroid Build Coastguard Worker 14*1b3f573fSAndroid Build Coastguard Worker# This function fills in a Person message based on user input. 15*1b3f573fSAndroid Build Coastguard Workerdef PromptForAddress(person): 16*1b3f573fSAndroid Build Coastguard Worker person.id = int(raw_input("Enter person ID number: ")) 17*1b3f573fSAndroid Build Coastguard Worker person.name = raw_input("Enter name: ") 18*1b3f573fSAndroid Build Coastguard Worker 19*1b3f573fSAndroid Build Coastguard Worker email = raw_input("Enter email address (blank for none): ") 20*1b3f573fSAndroid Build Coastguard Worker if email != "": 21*1b3f573fSAndroid Build Coastguard Worker person.email = email 22*1b3f573fSAndroid Build Coastguard Worker 23*1b3f573fSAndroid Build Coastguard Worker while True: 24*1b3f573fSAndroid Build Coastguard Worker number = raw_input("Enter a phone number (or leave blank to finish): ") 25*1b3f573fSAndroid Build Coastguard Worker if number == "": 26*1b3f573fSAndroid Build Coastguard Worker break 27*1b3f573fSAndroid Build Coastguard Worker 28*1b3f573fSAndroid Build Coastguard Worker phone_number = person.phones.add() 29*1b3f573fSAndroid Build Coastguard Worker phone_number.number = number 30*1b3f573fSAndroid Build Coastguard Worker 31*1b3f573fSAndroid Build Coastguard Worker type = raw_input("Is this a mobile, home, or work phone? ") 32*1b3f573fSAndroid Build Coastguard Worker if type == "mobile": 33*1b3f573fSAndroid Build Coastguard Worker phone_number.type = addressbook_pb2.Person.MOBILE 34*1b3f573fSAndroid Build Coastguard Worker elif type == "home": 35*1b3f573fSAndroid Build Coastguard Worker phone_number.type = addressbook_pb2.Person.HOME 36*1b3f573fSAndroid Build Coastguard Worker elif type == "work": 37*1b3f573fSAndroid Build Coastguard Worker phone_number.type = addressbook_pb2.Person.WORK 38*1b3f573fSAndroid Build Coastguard Worker else: 39*1b3f573fSAndroid Build Coastguard Worker print("Unknown phone type; leaving as default value.") 40*1b3f573fSAndroid Build Coastguard Worker 41*1b3f573fSAndroid Build Coastguard Worker 42*1b3f573fSAndroid Build Coastguard Worker# Main procedure: Reads the entire address book from a file, 43*1b3f573fSAndroid Build Coastguard Worker# adds one person based on user input, then writes it back out to the same 44*1b3f573fSAndroid Build Coastguard Worker# file. 45*1b3f573fSAndroid Build Coastguard Workerif len(sys.argv) != 2: 46*1b3f573fSAndroid Build Coastguard Worker print("Usage:", sys.argv[0], "ADDRESS_BOOK_FILE") 47*1b3f573fSAndroid Build Coastguard Worker sys.exit(-1) 48*1b3f573fSAndroid Build Coastguard Worker 49*1b3f573fSAndroid Build Coastguard Workeraddress_book = addressbook_pb2.AddressBook() 50*1b3f573fSAndroid Build Coastguard Worker 51*1b3f573fSAndroid Build Coastguard Worker# Read the existing address book. 52*1b3f573fSAndroid Build Coastguard Workertry: 53*1b3f573fSAndroid Build Coastguard Worker with open(sys.argv[1], "rb") as f: 54*1b3f573fSAndroid Build Coastguard Worker address_book.ParseFromString(f.read()) 55*1b3f573fSAndroid Build Coastguard Workerexcept IOError: 56*1b3f573fSAndroid Build Coastguard Worker print(sys.argv[1] + ": File not found. Creating a new file.") 57*1b3f573fSAndroid Build Coastguard Worker 58*1b3f573fSAndroid Build Coastguard Worker# Add an address. 59*1b3f573fSAndroid Build Coastguard WorkerPromptForAddress(address_book.people.add()) 60*1b3f573fSAndroid Build Coastguard Worker 61*1b3f573fSAndroid Build Coastguard Worker# Write the new address book back to disk. 62*1b3f573fSAndroid Build Coastguard Workerwith open(sys.argv[1], "wb") as f: 63*1b3f573fSAndroid Build Coastguard Worker f.write(address_book.SerializeToString()) 64