summaryrefslogtreecommitdiff
path: root/python/examples/version_switcher.py
diff options
context:
space:
mode:
authorJordan Wiens <jordan@psifertex.com>2018-03-04 18:08:04 -0500
committerRyan Snyder <ryan@vector35.com>2018-07-10 18:11:08 -0400
commit8849fb2b2b8dc824bd3f17ce1026a04856477a94 (patch)
treee85f3db97d6d6b5fa2a21162c684fd08d47e4ab0 /python/examples/version_switcher.py
parent8028bd325bc94a385f99122d87ac906ba717ecbf (diff)
working division, prints, and metaclasses, but imports broken, still needs work
Diffstat (limited to 'python/examples/version_switcher.py')
-rw-r--r--python/examples/version_switcher.py150
1 files changed, 0 insertions, 150 deletions
diff --git a/python/examples/version_switcher.py b/python/examples/version_switcher.py
deleted file mode 100644
index 3e1cab40..00000000
--- a/python/examples/version_switcher.py
+++ /dev/null
@@ -1,150 +0,0 @@
-#!/usr/bin/env python
-# Copyright (c) 2015-2017 Vector 35 LLC
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to
-# deal in the Software without restriction, including without limitation the
-# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-# sell copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-# IN THE SOFTWARE.
-
-import sys
-
-from binaryninja.update import UpdateChannel, are_auto_updates_enabled, set_auto_updates_enabled, is_update_installation_pending, install_pending_update
-from binaryninja import core_version
-import datetime
-
-chandefault = UpdateChannel.list[0].name
-channel = None
-versions = []
-
-
-def load_channel(newchannel):
- global channel
- global versions
- if (channel is not None and newchannel == channel.name):
- print "Same channel, not updating."
- else:
- try:
- print "Loading channel %s" % newchannel
- channel = UpdateChannel[newchannel]
- print "Loading versions..."
- versions = channel.versions
- except Exception:
- print "%s is not a valid channel name. Defaulting to " % chandefault
- channel = UpdateChannel[chandefault]
-
-
-def select(version):
- done = False
- date = datetime.datetime.fromtimestamp(version.time).strftime('%c')
- while not done:
- print "Version:\t%s" % version.version
- print "Updated:\t%s" % date
- print "Notes:\n\n-----\n%s" % version.notes
- print "-----"
- print "\t1)\tSwitch to version"
- print "\t2)\tMain Menu"
- selection = raw_input('Choice: ')
- if selection.isdigit():
- selection = int(selection)
- else:
- selection = 0
- if (selection == 2):
- done = True
- elif (selection == 1):
- if (version.version == channel.latest_version.version):
- print "Requesting update to latest version."
- else:
- print "Requesting update to prior version."
- if are_auto_updates_enabled():
- print "Disabling automatic updates."
- set_auto_updates_enabled(False)
- if (version.version == core_version):
- print "Already running %s" % version.version
- else:
- print "version.version %s" % version.version
- print "core_version %s" % core_version
- print "Downloading..."
- print version.update()
- print "Installing..."
- if is_update_installation_pending:
- #note that the GUI will be launched after update but should still do the upgrade headless
- install_pending_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 = 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 = 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:
- done = True
- if (selection != len(channel_list) + 1):
- load_channel(channel_list[selection - 1].name)
-
-
-def toggle_updates():
- set_auto_updates_enabled(not 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:\t%s" % channel.name
- print "\t\tCurrent Version:\t%s" % core_version
- print "\t\tAuto-Updates On:\t%s\n" % 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, "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) + 3):
- done = True
- elif (selection == len(versions) + 2):
- toggle_updates()
- elif (selection == len(versions) + 1):
- list_channels()
- else:
- select(versions[selection - 1])
-
-
-if __name__ == "__main__":
- main()