| OLD | NEW | 
|    1 #!/usr/bin/python |    1 #!/usr/bin/python | 
|    2  |    2  | 
|    3 import sys |    3 import dbus, flimflam, sys | 
|    4 import dbus |  | 
|    5  |    4  | 
|    6 bus = dbus.SystemBus() |    5 flim = flimflam.FlimFlam(dbus.SystemBus()) | 
|    7  |  | 
|    8 manager = dbus.Interface(bus.get_object("org.chromium.flimflam", "/"), |  | 
|    9 »       »       »       »       »       "org.chromium.flimflam.Manager") |  | 
|   10  |    6  | 
|   11 if len(sys.argv) < 2: |    7 if len(sys.argv) < 2: | 
|   12 »       print "Usage: %s <command>" % (sys.argv[0]) |    8     print "Usage: %s <command>" % (sys.argv[0]) | 
|   13 »       print "" |    9     print "  create <profile>" | 
|   14 »       print "  list" |   10     print "  list" | 
|   15 »       print "  name <profile> [name]" |   11     print "  name <profile> [name]" | 
|   16 »       print "" |   12     print "  pop [<profile>]" | 
|   17 »       print "  create <profile> [name]" |   13     print "  push <profile>" | 
|   18 »       print "  remove <profile>" |   14     print "  remove <profile>" | 
|   19 »       sys.exit(1) |   15     print "" | 
 |   16     print "where <profile> is of the form ident or ~user/ident" | 
 |   17     print "(beware that ~user may need shell quoting)" | 
 |   18     sys.exit(1) | 
|   20  |   19  | 
|   21 def print_profiles(profiles, active): |  | 
|   22         for path in profiles: |  | 
|   23                 profile = dbus.Interface(bus.get_object("org.chromium.flimflam",
      path), |  | 
|   24                                                 "org.chromium.flimflam.Profile") |  | 
|   25  |   20  | 
|   26 »       »       properties = profile.GetProperties() |   21 def print_profiles(): | 
 |   22     active = flim.GetActiveProfile() | 
 |   23     for profile in flim.GetObjectList("Profile"): | 
 |   24         if profile.object_path == active.object_path: | 
 |   25             isactive = "*" | 
 |   26         else: | 
 |   27             isactive = " " | 
|   27  |   28  | 
|   28 »       »       identifier = path[path.rfind("/") + 1:] |   29 »       # TODO(sleffler) handler ~user paths | 
 |   30         identifier = profile.object_path[profile.object_path.rfind("/") + 1:] | 
|   29  |   31  | 
|   30 »       »       if (path == active): |   32         properties = profile.GetProperties() | 
|   31 »       »       »       default = "*" |   33         name = properties.get("Name", "<unnamed>"); | 
|   32 »       »       else: |  | 
|   33 »       »       »       default = " " |  | 
|   34  |   34  | 
|   35 »       »       if "Name" in properties.keys(): |   35         print "%s %-12s %s" % (isactive, identifier, name) | 
|   36 »       »       »       name = properties["Name"] |  | 
|   37 »       »       else: |  | 
|   38 »       »       »       name = "<unnamed>" |  | 
|   39  |  | 
|   40 »       »       print "%s %-12s %s" % (default, identifier, name) |  | 
|   41  |   36  | 
|   42 if sys.argv[1] in ["list", "show"]: |   37 if sys.argv[1] in ["list", "show"]: | 
|   43 »       properties = manager.GetProperties() |   38     print_profiles() | 
|   44  |  | 
|   45 »       print_profiles(properties["Profiles"], properties["ActiveProfile"]) |  | 
|   46  |   39  | 
|   47 elif sys.argv[1] in ["name"]: |   40 elif sys.argv[1] in ["name"]: | 
|   48 »       if (len(sys.argv) < 3): |   41     if (len(sys.argv) < 3): | 
|   49 »       »       print "Need at least profile parameter" |   42         print "Need at least profile parameter" | 
|   50 »       »       sys.exit(1) |   43         sys.exit(1) | 
|   51  |   44  | 
|   52 »       path = "/profile/" + sys.argv[2] |   45     profile = flim.FindElementByNameSubstring('Profile', sys.argv[2]) | 
 |   46     if (len(sys.argv) > 3): | 
 |   47         profile.SetProperty("Name", sys.argv[3]); | 
 |   48     else: | 
 |   49         properties = profile.GetProperties() | 
 |   50         print "%s" % properties.get("Name", "<unnamed>") | 
|   53  |   51  | 
|   54 »       profile = dbus.Interface(bus.get_object("org.chromium.flimflam", path), |   52 elif sys.argv[1] in ["create"]: | 
|   55 »       »       »       »       »       »       "org.chromium.flimflam.Profile") |   53     if (len(sys.argv) < 3): | 
 |   54         print "Profile identifier required" | 
 |   55         sys.exit(1) | 
|   56  |   56  | 
|   57 »       if (len(sys.argv) > 3): |   57     flim = flimflam.FlimFlam(dbus.SystemBus()) | 
|   58 »       »       name = sys.argv[3] |   58     profile = flim.CreateProfile(sys.argv[2]) | 
 |   59     print "Created profile %s" % (profile.object_path) | 
|   59  |   60  | 
|   60 »       »       profile.SetProperty("Name", name); |   61 elif sys.argv[1] in ["remove"]: | 
 |   62     if (len(sys.argv) < 3): | 
 |   63         print "Profile identifier required" | 
 |   64         sys.exit(1) | 
|   61  |   65  | 
|   62 »       »       print "Name \"%s\" set for %s" % (name, sys.argv[2]) |   66     flim = flimflam.FlimFlam(dbus.SystemBus()) | 
|   63 »       else: |   67     flim.RemoveProfile(sys.argv[2]) | 
|   64 »       »       properties = profile.GetProperties() |   68     print "Removed profile %s" % (sys.argv[2]) | 
|   65  |   69  | 
|   66 »       »       if "Name" in properties.keys(): |   70 elif sys.argv[1] in ["push"]: | 
|   67 »       »       »       name = "\"" + properties["Name"] + "\"" |   71     if (len(sys.argv) < 3): | 
|   68 »       »       else: |   72         print "Profile identifier required" | 
|   69 »       »       »       name = "<unnamed>" |   73         sys.exit(1) | 
|   70  |   74  | 
|   71 »       »       print "Name for %s is %s" % (sys.argv[2], name) |   75     flim = flimflam.FlimFlam(dbus.SystemBus()) | 
 |   76     profile = flim.PushProfile(sys.argv[2]) | 
 |   77     print "Pushed profile %s" % (profile.object_path) | 
|   72  |   78  | 
|   73 elif sys.argv[1] in ["create", "add"]: |   79 elif sys.argv[1] in ["pop"]: | 
|   74 »       if (len(sys.argv) < 3): |   80     if (len(sys.argv) == 3): | 
|   75 »       »       print "Profile parameter required" |   81         flim.PopProfile(sys.argv[2]) | 
|   76 »       »       sys.exit(1) |   82     else: | 
|   77  |   83         flim.PopAnyProfile() | 
|   78 »       path = manager.CreateProfile(sys.argv[2]) |  | 
|   79  |  | 
|   80 »       print "New profile created at %s" % (path) |  | 
|   81  |  | 
|   82 »       profile = dbus.Interface(bus.get_object("org.chromium.flimflam", path), |  | 
|   83 »       »       »       »       »       »       "org.chromium.flimflam.Profile") |  | 
|   84  |  | 
|   85 »       if (len(sys.argv) > 3): |  | 
|   86 »       »       name = sys.argv[3] |  | 
|   87  |  | 
|   88 »       »       profile.SetProperty("Name", name); |  | 
|   89  |  | 
|   90 »       »       print "Name \"%s\" set for %s" % (name, sys.argv[2]) |  | 
|   91  |  | 
|   92 elif sys.argv[1] in ["remove", "delete", "del"]: |  | 
|   93 »       if (len(sys.argv) < 3): |  | 
|   94 »       »       print "Profile parameter required" |  | 
|   95 »       »       sys.exit(1) |  | 
|   96  |  | 
|   97 »       path = "/profile/" + sys.argv[2] |  | 
|   98  |  | 
|   99 »       manager.RemoveProfile(path) |  | 
|  100  |   84  | 
|  101 else: |   85 else: | 
|  102 »       print "Unknown command" |   86     print "Unknown command" | 
| OLD | NEW |