summaryrefslogtreecommitdiff
path: root/python/examples/version-switcher.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/examples/version-switcher.py')
-rw-r--r--python/examples/version-switcher.py74
1 files changed, 51 insertions, 23 deletions
diff --git a/python/examples/version-switcher.py b/python/examples/version-switcher.py
index da2942d4..a1936a52 100644
--- a/python/examples/version-switcher.py
+++ b/python/examples/version-switcher.py
@@ -5,26 +5,22 @@ import datetime
chandefault="private-beta"
channel=0
-up=0
versions=0
def load_channel(newchannel):
- global up
global channel
global versions
- if (newchannel == channel):
+ if (channel != 0 and newchannel == channel.name):
print "Same channel, not updating."
else:
try:
print "Loading channel %s" % newchannel
- up = binaryninja.UpdateChannel(newchannel, "", "")
- channel = newchannel
+ channel = binaryninja.UpdateChannel[newchannel]
print "Loading versions..."
- versions = up.versions
+ versions = channel.versions
except Exception:
print "%s is not a valid channel name. Defaulting to " % chandefault
- channel = chandefault
- up = binaryninja.UpdateChannel(channel, "", "")
+ channel = binaryninja.UpdateChannel[chandefault]
def select(version):
done = False
@@ -32,55 +28,87 @@ def select(version):
while not done:
print "Version:\t%s" % version.version
print "Updated:\t%s" % date
- print "Notes:\n\n%s" % version.notes
+ print "Notes:\n\n-----\n%s" % version.notes
print "-----"
- print "\t1)\tSwitch to version"
+ print "\t1)\tSwitch to version"
print "\t2)\tMain Menu"
- selection = int("0" + raw_input('Choice: '))
+ selection = raw_input('Choice: ')
+ if selection.isdigit():
+ selection = int(selection)
+ else:
+ selection = 0
if (selection == 2):
done = True
elif (selection == 1):
- print "Updating..."
- print version.update()
- #forward updating won't work without reloading
- sys.exit()
+ if (version.version == channel.latest_version.version):
+ print "Requesting update to latest version."
+ else:
+ print "Requesting update to prior version."
+ if binaryninja.are_auto_updates_enabled():
+ print "Disabling automatic updates."
+ binaryninja.set_auto_updates_enabled(False)
+ if (version.version == binaryninja.core_version):
+ print "Already running %s" % version.version
+ else:
+ print "version.version %s" % version.version
+ print "binaryninja.core_version %s" % binaryninja.core_version
+ print "Updating..."
+ print version.update()
+ #forward updating won't work without reloading
+ sys.exit()
else:
print "Invalid selection"
def list_channels():
done = False
+ print "\tSelect channel:\n"
while not done:
channel_list = binaryninja.UpdateChannel.list
for index, item in enumerate(channel_list):
print "\t%d)\t%s" % (index+1, item.name)
print "\t%d)\t%s" % (len(channel_list)+1, "Main Menu")
- selection = int("0" + raw_input('Choice: '))
+ selection = raw_input('Choice: ')
+ if selection.isdigit():
+ selection = int(selection)
+ else:
+ selection = 0
if (selection <= 0 or selection > len(channel_list)+1):
print "%s is an invalid choice." % selection
else:
- selection = int(selection)
done = True
if (selection != len(channel_list) + 1):
load_channel(channel_list[selection - 1].name)
+def toggle_updates():
+ binaryninja.set_auto_updates_enabled(not binaryninja.are_auto_updates_enabled())
+
def main():
+ global channel
done = False
load_channel(chandefault)
while not done:
print "\n\tBinary Ninja Version Switcher"
- print "\t\tCurrent Channel: %s" % channel
- print "\t\tCurrent Version: %s\n" % binaryninja.core_version
+ print "\t\tCurrent Channel:\t%s" % channel.name
+ print "\t\tCurrent Version:\t%s" % binaryninja.core_version
+ print "\t\tAuto-Updates On:\t%s\n" % binaryninja.are_auto_updates_enabled()
for index, version in enumerate(versions):
date = datetime.datetime.fromtimestamp(version.time).strftime('%c')
print "\t%d)\t%s (%s)" % (index + 1, version.version, date)
print "\t%d)\t%s" % (len(versions) + 1, "Switch Channel")
- print "\t%d)\t%s" % (len(versions) + 2, "Exit")
- selection = int("0" + raw_input('Choice: '))
- if (selection <= 0 or selection > len(versions) + 2):
+ print "\t%d)\t%s" % (len(versions) + 2, "Toggle Auto Updates")
+ print "\t%d)\t%s" % (len(versions) + 3, "Exit")
+ selection = raw_input('Choice: ')
+ if selection.isdigit():
+ selection = int(selection)
+ else:
+ selection = 0
+ if (selection <= 0 or selection > len(versions) + 3):
print "%d is an invalid choice.\n\n" % selection
else:
- if (selection == len(versions) + 2):
+ if (selection == len(versions) + 3):
done = True
+ elif (selection == len(versions) + 2):
+ toggle_updates()
elif (selection == len(versions) + 1):
list_channels()
else: