xref: /aosp_15_r20/external/protobuf/examples/add_person.py (revision 1b3f573f81763fcece89efc2b6a5209149e44ab8)
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