1"""Interactive shell"""
2
3import sys
4import code
5import random
6import pylibmc
7
8tips = [
9    "Want to use 127.0.0.1? Just hit Enter immediately.",
10    "Hit Enter immediately and you'll connect to 127.0.0.1.",
11    "Did you know there's a --binary flag? Try it!",
12    "Want to use binary mode? Pass --binary as a sole argument."
13]
14
15def print_header(outf=sys.stdout):
16    outf.write("pylibmc interactive shell\n\n")
17    outf.write("Input list of servers, terminating by a blank line.\n")
18    outf.write(random.choice(tips) + "\n")
19
20def collect_servers():
21    try:
22        in_addr = raw_input("Address [127.0.0.1]: ")
23    except NameError:
24        in_addr = input("Address [127.0.0.1]: ")
25    if in_addr:
26        while in_addr:
27            yield in_addr
28            try:
29                in_addr = raw_input("Address [<stop>]: ")
30            except NameError:
31                in_addr = input("Address [<stop>]: ")
32    else:
33        yield "127.0.0.1"
34
35banner = "\nmc client available as `mc`\n"
36def interact(servers, banner=banner, binary=False):
37    mc = pylibmc.Client(servers, binary=binary)
38    local = {"pylibmc": pylibmc,
39             "mc": mc}
40    code.interact(banner=banner, local=local)
41
42def main():
43    binary = False
44    if sys.argv[1:] == ["--binary"]:
45        binary = True
46    print_header()
47    interact(list(collect_servers()), binary=binary)
48
49if __name__ == "__main__":
50    main()
51