76 lines
2.3 KiB
Python
76 lines
2.3 KiB
Python
#!/usr/bin/python
|
|
# -*- coding: utf-8 -*-
|
|
##
|
|
## @author Edouard DUPIN
|
|
##
|
|
## @copyright 2012, Edouard DUPIN, all right reserved
|
|
##
|
|
## @license MPL v2.0 (see license file)
|
|
##
|
|
|
|
from maestro import debug
|
|
from maestro import tools
|
|
from maestro import env
|
|
from maestro import multiprocess
|
|
import os
|
|
from lxml import etree
|
|
|
|
|
|
def help():
|
|
return "plop"
|
|
|
|
def load_manifest(file):
|
|
tree = etree.parse(file)
|
|
debug.info("manifest:")
|
|
root = tree.getroot()
|
|
if root.tag != "manifest":
|
|
debug.error("in '" + str(file) + "' have not main xml node='manifest'")
|
|
for child in root:
|
|
if type(child) == etree._Comment:
|
|
debug.info(" comment='" + str(child.text) + "'");
|
|
else:
|
|
debug.info(" '" + str(child.tag) + "' values=" + str(child.attrib));
|
|
# inside data child.text
|
|
return "";
|
|
|
|
|
|
def execute(arguments):
|
|
debug.info("execute:")
|
|
for elem in arguments:
|
|
debug.info(" '" + str(elem.get_arg()) + "'")
|
|
if len(arguments) != 0:
|
|
debug.error("Sync have not parameter")
|
|
|
|
# check if .XXX exist (create it if needed)
|
|
base_path = os.path.join(tools.get_run_path(), "." + env.get_system_base_name())
|
|
base_config = os.path.join(base_path, "config.txt")
|
|
base_manifest_repo = os.path.join(base_path, "manifest")
|
|
if os.path.exists(base_path) == False \
|
|
or os.path.exists(base_config) == False \
|
|
or os.path.exists(base_manifest_repo) == False:
|
|
debug.error("System already init have an error: missing data: '" + str(base_path) + "'")
|
|
|
|
config_property = tools.file_read_data(base_config)
|
|
|
|
element_config = config_property.split("\n")
|
|
if len(element_config) != 3:
|
|
debug.error("error in configuration property")
|
|
if element_config[0][:5] != "repo=":
|
|
debug.error("error in configuration property (2)")
|
|
if element_config[1][:7] != "branch=":
|
|
debug.error("error in configuration property (3)")
|
|
if element_config[2][:5] != "file=":
|
|
debug.error("error in configuration property (4)")
|
|
configuration = {
|
|
"repo":element_config[0][5:],
|
|
"branch":element_config[1][7:],
|
|
"file":element_config[2][5:]
|
|
}
|
|
debug.info("configuration property: " + str(configuration))
|
|
|
|
file_source_manifest = os.path.join(base_manifest_repo, configuration["file"])
|
|
if os.path.exists(file_source_manifest) == False:
|
|
debug.error("Missing manifest file : '" + str(file_source_manifest) + "'")
|
|
|
|
manifest = load_manifest(file_source_manifest)
|
|
|