linker.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import sys
  2. import urllib
  3. import urllib2
  4. import json
  5. def flush_data(address, data, username):
  6. if data:
  7. urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "set_input", "data": json.dumps(data), "username": username})), timeout=10).read()
  8. return []
  9. def link(address, username, objects):
  10. # Read out all symbol tables that are to be linked
  11. definers = {}
  12. users = {}
  13. data = []
  14. data.append(("V", '3'))
  15. data.append(("V", '"link_and_load"'))
  16. for obj in objects:
  17. data.append(("V", '"%s"' % obj))
  18. data.append(("V", '""'))
  19. # Call the main function
  20. data.append(("V", '"main"'))
  21. data = flush_data(address, data, username)
  22. v = urllib2.urlopen(urllib2.Request(address, urllib.urlencode({"op": "get_output", "username": username}))).read()
  23. if "OK" not in v:
  24. print(v)
  25. raise Exception("Linking error")
  26. if __name__ == "__main__":
  27. if len(sys.argv) == 1:
  28. print("No username defined")
  29. else:
  30. address = sys.argv[1]
  31. username = sys.argv[2]
  32. objects = set(sys.argv[3:])
  33. if objects:
  34. link(address, username, objects)
  35. else:
  36. print("No files to link defined")