forked from protocolbuffers/protobuf
-
Notifications
You must be signed in to change notification settings - Fork 0
/
add_person.rb
executable file
·77 lines (62 loc) · 1.76 KB
/
add_person.rb
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
#! /usr/bin/env ruby
# See README.md for information and build instructions.
require './addressbook_pb'
require 'pry'
# creates Person object and fills it with data from user input
def prompt_for_address()
person = Tutorial::Person.newlD()
puts "Enter person ID number:"
person.id = STDIN.gets.chomp.to_i
puts "Enter name:"
person.name = STDIN.gets.chomp
puts "Enter email address (blank for none):"
email = STDIN.gets.chomp
if email != ""
person.email = email
end
loop do
puts "Enter a phone number (or leave blank to finish):"
number = STDIN.gets.chomp
if number == ""
break
end
phone_number = Tutorial::Person::PhoneNumber.new(number: number)
puts "Is this a mobile, home or work phone?"
type = STDIN.gets.chomp
case type
when "mobile"
phone_number.type = :MOBILE
when "home"
phone_number.type = :HOME
when "work"
phone_number.type = :WORK
else
puts "Unknown phone type; leaving as default value."
end
person.phones.push(phone_number)
end
person
end
# Main procedure: Reads the entire address book from a file,
# adds one person based on user input, then writes it back out to the same
# file.
if ARGV.length != 1
puts "Usage: #{$0} ADDRESS_BOOK_FILE"
exit(-1)
end
address_book = Tutorial::AddressBook.new()
if File.exist?(ARGV[0])
# Read the existing address book if it exists
f = File.open(ARGV[0], "rb")
address_book = Tutorial::AddressBook.decode(f.read)
f.close
else
puts "#{$PROGRAM_NAME}: File not found. Creating new file."
end
person = prompt_for_address
# Add an address.
address_book.people.push(person)
# Write the new address book back to disk.
f = File.open(ARGV[0], "wb")
f.write(Tutorial::AddressBook.encode(address_book))
f.close