Updater script
This commit is contained in:
parent
380c32dee2
commit
84268cd43c
1 changed files with 71 additions and 2 deletions
73
update.py
73
update.py
|
@ -1,9 +1,78 @@
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
import json
|
||||||
|
import re
|
||||||
|
|
||||||
def update():
|
def update():
|
||||||
print("Updating not supported yet")
|
from Config import config
|
||||||
|
|
||||||
|
if getattr(sys, 'source_update_dir', False):
|
||||||
|
if not os.path.isdir(sys.source_update_dir):
|
||||||
|
os.makedirs(sys.source_update_dir)
|
||||||
|
source_path = sys.source_update_dir.rstrip("/")
|
||||||
|
else:
|
||||||
|
source_path = os.getcwd().rstrip("/")
|
||||||
|
|
||||||
|
updatesite_path = config.data_dir + "/" + config.updatesite
|
||||||
|
|
||||||
|
sites_json = json.load(open(config.data_dir + "/sites.json"))
|
||||||
|
updatesite_bad_files = sites_json.get(config.updatesite, {}).get("cache", {}).get("bad_files", {})
|
||||||
|
print(
|
||||||
|
"Update site path: %s, bad_files: %s, source path: %s, dist type: %s" %
|
||||||
|
(updatesite_path, len(updatesite_bad_files), source_path, config.dist_type)
|
||||||
|
)
|
||||||
|
|
||||||
|
inner_paths = json.load(open(updatesite_path + "/content.json"))["files"].keys()
|
||||||
|
|
||||||
|
# Keep file only in ZeroNet directory
|
||||||
|
inner_paths = [inner_path for inner_path in inner_paths if inner_path.startswith("core/")]
|
||||||
|
|
||||||
|
# Checking plugins
|
||||||
|
plugins_enabled = []
|
||||||
|
plugins_disabled = []
|
||||||
|
if os.path.isdir("%s/plugins" % source_path):
|
||||||
|
for dir in os.listdir("%s/plugins" % source_path):
|
||||||
|
if dir.startswith("disabled-"):
|
||||||
|
plugins_disabled.append(dir.replace("disabled-", ""))
|
||||||
|
else:
|
||||||
|
plugins_enabled.append(dir)
|
||||||
|
print("Plugins enabled:", plugins_enabled, "disabled:", plugins_disabled)
|
||||||
|
|
||||||
|
for inner_path in inner_paths:
|
||||||
|
if ".." in inner_path:
|
||||||
|
continue
|
||||||
|
inner_path = inner_path.replace("\\", "/") # Make sure we have unix path
|
||||||
|
print(".", end=" ")
|
||||||
|
dest_path = source_path + "/" + re.sub("^(core|platform/[^/]+/)/", "", inner_path)
|
||||||
|
dest_path = dest_path.lstrip("/")
|
||||||
|
if not dest_path:
|
||||||
|
continue
|
||||||
|
|
||||||
|
# Keep plugin disabled/enabled status
|
||||||
|
match = re.match("plugins/([^/]+)", dest_path)
|
||||||
|
if match:
|
||||||
|
plugin_name = match.group(1).replace("disabled-", "")
|
||||||
|
if plugin_name in plugins_enabled: # Plugin was enabled
|
||||||
|
dest_path = dest_path.replace("plugins/disabled-" + plugin_name, "plugins/" + plugin_name)
|
||||||
|
elif plugin_name in plugins_disabled: # Plugin was disabled
|
||||||
|
dest_path = dest_path.replace("plugins/" + plugin_name, "plugins/disabled-" + plugin_name)
|
||||||
|
print("P", end=" ")
|
||||||
|
|
||||||
|
dest_dir = os.path.dirname(dest_path)
|
||||||
|
print(updatesite_path + "/" + inner_path, "->", dest_path)
|
||||||
|
if dest_dir and not os.path.isdir(dest_dir):
|
||||||
|
os.makedirs(dest_dir)
|
||||||
|
|
||||||
|
if dest_dir != dest_path.strip("/"):
|
||||||
|
data = open(updatesite_path + "/" + inner_path, "rb").read()
|
||||||
|
|
||||||
|
try:
|
||||||
|
open(dest_path, 'wb').write(data)
|
||||||
|
except Exception as err:
|
||||||
|
print(dest_path, err)
|
||||||
|
|
||||||
|
print("Done.")
|
||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
Loading…
Reference in a new issue