[DEV] continue translation
This commit is contained in:
parent
85fb5f5c81
commit
1bb1c4638e
27
.classpath
27
.classpath
@ -5,16 +5,11 @@
|
||||
<attribute name="optional" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
|
||||
<classpathentry combineaccessrules="false" kind="src" path="/atriasoft-exml">
|
||||
<attributes>
|
||||
<attribute name="module" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5">
|
||||
<attributes>
|
||||
<attribute name="test" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry combineaccessrules="false" exported="true" kind="src" path="/scenarium-logger">
|
||||
<attributes>
|
||||
<attribute name="module" value="true"/>
|
||||
@ -25,5 +20,25 @@
|
||||
<attribute name="module" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry combineaccessrules="false" kind="src" path="/atriasoft-etk">
|
||||
<attributes>
|
||||
<attribute name="module" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
|
||||
<attributes>
|
||||
<attribute name="module" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="lib" path="lib/org.eclipse.jgit-5.12.0.202106070339-r.jar">
|
||||
<attributes>
|
||||
<attribute name="module" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5">
|
||||
<attributes>
|
||||
<attribute name="test" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="output" path="out/eclipse/classes"/>
|
||||
</classpath>
|
||||
|
BIN
lib/org.eclipse.jgit-5.12.0.202106070339-r.jar
Normal file
BIN
lib/org.eclipse.jgit-5.12.0.202106070339-r.jar
Normal file
Binary file not shown.
1
out/eclipse/.gitignore
vendored
Normal file
1
out/eclipse/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
/classes/
|
@ -4,10 +4,13 @@
|
||||
|
||||
open module org.atriasoft.island {
|
||||
exports org.atriasoft.island;
|
||||
//exports org.atriasoft.island.model;
|
||||
exports org.atriasoft.island.model;
|
||||
//exports org.atriasoft.island.actions;
|
||||
|
||||
requires transitive io.scenarium.logger;
|
||||
requires java.base;
|
||||
requires org.atriasoft.death;
|
||||
requires org.atriasoft.exml;
|
||||
requires org.atriasoft.etk;
|
||||
requires org.eclipse.jgit;
|
||||
}
|
||||
|
147
src/org/atriasoft/island/Actions.java
Normal file
147
src/org/atriasoft/island/Actions.java
Normal file
@ -0,0 +1,147 @@
|
||||
package org.atriasoft.island;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.atriasoft.death.ArgElement;
|
||||
import org.atriasoft.death.Arguments;
|
||||
import org.atriasoft.island.internal.Log;
|
||||
import org.atriasoft.island.model.ActionException;
|
||||
import org.atriasoft.island.model.ActionInterface;
|
||||
|
||||
public class Actions {
|
||||
private static Map<String, Class<ActionInterface>> actions = new HashMap<String,Class<ActionInterface>>();
|
||||
public static void addAction(String name, Class<ActionInterface> klass) {
|
||||
actions.put(name, klass);
|
||||
}
|
||||
/**
|
||||
* Get the wall list of action availlable
|
||||
* @return The list of action name
|
||||
*/
|
||||
public static Set<String> getListOfAction() {
|
||||
return actions.keySet();
|
||||
}
|
||||
|
||||
|
||||
///**
|
||||
// * Get a description of an action
|
||||
// * @param action_name (string) Name of the action
|
||||
// * @param function_name (string) Name of the fucntion to call
|
||||
// * @param default_value (*) Renurned value of the call if function does not exist
|
||||
// * @return (*) the getted value or the default_value
|
||||
// */
|
||||
//public void get_function_value(action_name, function_name, default_value = None):
|
||||
// global list_actions;
|
||||
// for elem in list_actions:
|
||||
// if elem["name"] == action_name:
|
||||
// // finish the parsing
|
||||
// sys.path.append(os.path.dirname(elem["path"]))
|
||||
// the_action = __import__(__base_action_name + action_name)
|
||||
// if function_name not in dir(the_action):
|
||||
// return default_value
|
||||
// method_to_call = getattr(the_action, function_name)
|
||||
// return method_to_call()
|
||||
// return default_value
|
||||
|
||||
/**
|
||||
* Get the global help value of a module
|
||||
* @param action_name (string) Name of the action
|
||||
* @return The first line of description
|
||||
* @throws ActionException
|
||||
*/
|
||||
private String getFullActionHelp(String action_name) throws ActionException {
|
||||
Class<ActionInterface> actionClass = actions.get(action_name);
|
||||
if (actionClass == null) {
|
||||
throw new ActionException("Action does not registered");
|
||||
}
|
||||
ActionInterface action;
|
||||
try {
|
||||
action = actionClass.getDeclaredConstructor().newInstance();
|
||||
} catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException
|
||||
| NoSuchMethodException | SecurityException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
throw new ActionException("Uneable to intanciate Action");
|
||||
}
|
||||
return action.help();
|
||||
}
|
||||
|
||||
private String getActionHelpExample(String action_name) throws ActionException {
|
||||
Class<ActionInterface> actionClass = actions.get(action_name);
|
||||
if (actionClass == null) {
|
||||
throw new ActionException("Action does not registered");
|
||||
}
|
||||
ActionInterface action;
|
||||
try {
|
||||
action = actionClass.getDeclaredConstructor().newInstance();
|
||||
} catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException
|
||||
| NoSuchMethodException | SecurityException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
throw new ActionException("Uneable to intanciate Action");
|
||||
}
|
||||
return action.helpExample();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the global help value of a module
|
||||
* @param action_name (string) Name of the action
|
||||
* @return The first line of description
|
||||
* @throws ActionException
|
||||
*/
|
||||
public String getActionHelp(String action_name) throws ActionException {
|
||||
return getFullActionHelp(action_name).split("\n")[0];
|
||||
}
|
||||
|
||||
public void usage(String action_name, Arguments arguments) throws ActionException {
|
||||
String help = getFullActionHelp(action_name);
|
||||
Log.print("Description:");
|
||||
Log.print("\t" + help);
|
||||
//TODO: ??? arguments.display(action_name);
|
||||
String helpExample = getActionHelpExample(action_name);
|
||||
if (helpExample != null) {
|
||||
Log.print("Example:");
|
||||
for (String elem : helpExample.split("\n")) {
|
||||
Log.print("\t" + elem);
|
||||
}
|
||||
}
|
||||
System.exit(0);
|
||||
}
|
||||
|
||||
public void execute(String action_name, List<String> arguments) throws ActionException {
|
||||
Class<ActionInterface> actionClass = actions.get(action_name);
|
||||
if (actionClass == null) {
|
||||
throw new ActionException("Action does not registered");
|
||||
}
|
||||
ActionInterface action = null;
|
||||
try {
|
||||
action = actionClass.getDeclaredConstructor().newInstance();
|
||||
} catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException
|
||||
| NoSuchMethodException | SecurityException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
throw new ActionException("Uneable to intanciate Action");
|
||||
}
|
||||
Log.info("action: " + action_name);
|
||||
Arguments my_under_args_parser = new Arguments();
|
||||
my_under_args_parser.add("h", "help", null, "Help of this action");
|
||||
action.addSpecificArguments(my_under_args_parser, action_name);
|
||||
boolean have_unknow_argument = action.haveUnknowArgument();
|
||||
List<ArgElement> my_under_args = my_under_args_parser.parse(arguments, have_unknow_argument);
|
||||
// search help if needed ==> permit to not duplicating code
|
||||
for (ArgElement elem : my_under_args) {
|
||||
if (elem.getOptionName() == "help") {
|
||||
usage(action_name, my_under_args_parser);
|
||||
System.exit(0);
|
||||
}
|
||||
}
|
||||
// now we can execute:
|
||||
Log.info("execute: " + action_name);
|
||||
for (ArgElement elem : my_under_args) {
|
||||
Log.debug(" " + elem.getOptionName() + "='" + elem.getArg() + "'");
|
||||
}
|
||||
action.execute(my_under_args);
|
||||
}
|
||||
}
|
13
src/org/atriasoft/island/Config.java
Normal file
13
src/org/atriasoft/island/Config.java
Normal file
@ -0,0 +1,13 @@
|
||||
package org.atriasoft.island;
|
||||
|
||||
import org.atriasoft.island.model.ConfigManifest;
|
||||
|
||||
public class Config {
|
||||
private static ConfigManifest config;
|
||||
public static ConfigManifest getUniqueConfig() {
|
||||
if (config == null) {
|
||||
config = ConfigManifest.load();
|
||||
}
|
||||
return config;
|
||||
}
|
||||
}
|
@ -18,82 +18,81 @@ import org.atriasoft.island.internal.Log;
|
||||
|
||||
public class Env {
|
||||
|
||||
public static final int ret_manifest_is_not_existing = -5;
|
||||
public static final int ret_action_is_not_existing = -10;
|
||||
public static final int ret_action_executing_system_error = -11;
|
||||
public static final int ret_action_wrong_parameters = -12;
|
||||
public static final int ret_action_partial_done = -13;
|
||||
public static final int ret_action_fail = -14;
|
||||
public static final int ret_manifest_is_not_existing = -5;
|
||||
public static final int ret_action_is_not_existing = -10;
|
||||
public static final int ret_action_executing_system_error = -11;
|
||||
public static final int ret_action_wrong_parameters = -12;
|
||||
public static final int ret_action_partial_done = -13;
|
||||
public static final int ret_action_fail = -14;
|
||||
|
||||
public static int ret_action_need_updtate = 15;
|
||||
|
||||
public static String system_base_name = "island";
|
||||
|
||||
public static int ret_action_need_updtate = 15;
|
||||
|
||||
public static String system_base_name = "island";
|
||||
|
||||
public static void set_system_base_name(String val) {
|
||||
system_base_name = val;
|
||||
public static void set_system_base_name(String val) {
|
||||
system_base_name = val;
|
||||
}
|
||||
public static String get_system_base_name() {
|
||||
return system_base_name;
|
||||
public static String get_system_base_name() {
|
||||
return system_base_name;
|
||||
}
|
||||
|
||||
public static String get_system_config_name() {
|
||||
return "." + system_base_name + "Config.json";
|
||||
}
|
||||
|
||||
private static boolean fetch_manifest = true;
|
||||
|
||||
public static void set_fetch_manifest(boolean val) {
|
||||
fetch_manifest = val;
|
||||
public static String get_system_config_name() {
|
||||
return "." + system_base_name + "Config.json";
|
||||
}
|
||||
public static boolean get_fetch_manifest() {
|
||||
return fetch_manifest;
|
||||
}
|
||||
|
||||
private static int wait_between_sever_command = 0;
|
||||
private static boolean fetch_manifest = true;
|
||||
|
||||
public static void set_wait_between_sever_command(int val) {
|
||||
wait_between_sever_command = val;
|
||||
}
|
||||
|
||||
public static int get_wait_between_sever_command() {
|
||||
return wait_between_sever_command;
|
||||
}
|
||||
public static String filter_command = "";
|
||||
|
||||
public static void set_filter_command(String val) {
|
||||
filter_command = val;
|
||||
public static void set_fetch_manifest(boolean val) {
|
||||
fetch_manifest = val;
|
||||
}
|
||||
public static String get_filter_command() {
|
||||
return filter_command;
|
||||
public static boolean get_fetch_manifest() {
|
||||
return fetch_manifest;
|
||||
}
|
||||
public static boolean need_process_with_filter(String data) {
|
||||
if (filter_command.equals("")) {
|
||||
return true;
|
||||
|
||||
private static int wait_between_sever_command = 0;
|
||||
|
||||
public static void set_wait_between_sever_command(int val) {
|
||||
wait_between_sever_command = val;
|
||||
}
|
||||
if (data.length() < filter_command.length()) {
|
||||
|
||||
public static int get_wait_between_sever_command() {
|
||||
return wait_between_sever_command;
|
||||
}
|
||||
public static String filter_command = "";
|
||||
|
||||
public static void set_filter_command(String val) {
|
||||
filter_command = val;
|
||||
}
|
||||
public static String get_filter_command() {
|
||||
return filter_command;
|
||||
}
|
||||
public static boolean need_process_with_filter(String data) {
|
||||
if (filter_command.equals("")) {
|
||||
return true;
|
||||
}
|
||||
if (data.length() < filter_command.length()) {
|
||||
return false;
|
||||
}
|
||||
if (data.substring(0,filter_command.length()).equals(filter_command)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
if (data.substring(0,filter_command.length()).equals(filter_command)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private static boolean display_folder_instead_of_git_name = true;
|
||||
|
||||
private static boolean display_folder_instead_of_git_name = true;
|
||||
|
||||
public static void set_display_folder_instead_of_git_name(boolean val) {
|
||||
display_folder_instead_of_git_name = val;
|
||||
public static void set_display_folder_instead_of_git_name(boolean val) {
|
||||
display_folder_instead_of_git_name = val;
|
||||
}
|
||||
public static boolean get_display_folder_instead_of_git_name() {
|
||||
return display_folder_instead_of_git_name;
|
||||
}
|
||||
public static boolean get_display_folder_instead_of_git_name() {
|
||||
return display_folder_instead_of_git_name;
|
||||
}
|
||||
|
||||
private static Path island_root_path = null;
|
||||
private static Path island_path_user_config = null;
|
||||
private static Path island_path = null;
|
||||
private static Path island_path_config_old = null;
|
||||
private static Path island_path_config = null;
|
||||
private static Path island_path_manifest = null;
|
||||
private static Path island_root_path = null;
|
||||
private static Path island_path_user_config = null;
|
||||
private static Path island_path = null;
|
||||
private static Path island_path_config = null;
|
||||
private static Path island_path_manifest = null;
|
||||
|
||||
|
||||
static {
|
||||
@ -110,42 +109,38 @@ private static Path island_path_manifest = null;
|
||||
island_root_path = tmpPath;
|
||||
island_path_user_config = island_root_path.resolve(get_system_config_name());
|
||||
island_path = island_root_path.resolve("." + get_system_base_name());
|
||||
island_path_config_old = island_path.resolve("config.txt");
|
||||
island_path_config = island_path.resolve("config.json");
|
||||
island_path_config = island_path.resolve("config.xml");
|
||||
island_path_manifest = island_path.resolve("manifest");
|
||||
}
|
||||
//#
|
||||
//# @brief to use later to know where the ".island" parent path is ...
|
||||
//# @return the parent path of the ".island"
|
||||
//#
|
||||
public static Path get_island_root_path() {
|
||||
return island_root_path;
|
||||
}
|
||||
public static Path get_island_path() {
|
||||
return island_path;
|
||||
}
|
||||
public static Path get_island_path_config() {
|
||||
return island_path_config;
|
||||
}
|
||||
public static Path get_island_path_config_old() {
|
||||
return island_path_config_old;
|
||||
}
|
||||
public static Path get_island_path_manifest() {
|
||||
return island_path_manifest;
|
||||
}
|
||||
public static Path get_island_path_user_config() {
|
||||
return island_path_user_config;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
Log.error("island_root_path = " + island_root_path.toAbsolutePath());
|
||||
Log.error("island_path_user_config = " + island_path_user_config.toAbsolutePath());
|
||||
Log.error("island_path = " + island_path.toAbsolutePath());
|
||||
Log.error("island_path_config_old = " + island_path_config_old.toAbsolutePath());
|
||||
Log.error("island_path_config = " + island_path_config.toAbsolutePath());
|
||||
Log.error("island_path_manifest = " + island_path_manifest.toAbsolutePath());
|
||||
/**
|
||||
* To use later to know where the ".island" parent path is ...
|
||||
* @return the parent path of the ".island"
|
||||
*/
|
||||
public static Path get_island_root_path() {
|
||||
return island_root_path;
|
||||
}
|
||||
public static Path get_island_path() {
|
||||
return island_path;
|
||||
}
|
||||
public static Path get_island_path_config() {
|
||||
return island_path_config;
|
||||
}
|
||||
|
||||
}
|
||||
public static Path get_island_path_manifest() {
|
||||
return island_path_manifest;
|
||||
}
|
||||
public static Path get_island_path_user_config() {
|
||||
return island_path_user_config;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
Log.error("island_root_path = " + island_root_path.toAbsolutePath());
|
||||
Log.error("island_path_user_config = " + island_path_user_config.toAbsolutePath());
|
||||
Log.error("island_path = " + island_path.toAbsolutePath());
|
||||
Log.error("island_path_config = " + island_path_config.toAbsolutePath());
|
||||
Log.error("island_path_manifest = " + island_path_manifest.toAbsolutePath());
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -1,36 +1,39 @@
|
||||
package org.atriasoft.island;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import org.atriasoft.death.ArgChoice;
|
||||
import org.atriasoft.death.Arguments;
|
||||
|
||||
public class MainIsland {
|
||||
private static Arguments my_args = new Arguments();
|
||||
|
||||
//debug.verbose("List of actions: " + str(actions.get_list_of_action()))
|
||||
//Log.verbose("List of actions: " + str(actions.get_list_of_action()))
|
||||
static {
|
||||
Arguments my_args = new Arguments();
|
||||
my_args.addSection("option", "Can be set one time in all case");
|
||||
my_args.add("h", "help", null, "Display this help");
|
||||
my_args.add("v", "verbose", {
|
||||
["0","None"],
|
||||
["1","error"],
|
||||
["2","warning"],
|
||||
["3","info"],
|
||||
["4","debug"],
|
||||
["5","verbose"],
|
||||
["6","extreme_verbose"],
|
||||
}, desc="display debug level (verbose) default =2")
|
||||
my_args.add("c", "color", desc="Display message in color")
|
||||
my_args.add("n", "no-fetch-manifest", haveParam=false, desc="Disable the fetch of the manifest")
|
||||
my_args.add("F", "filter", haveParam=true, desc="Filter the action on a list of path or subpath: -f library")
|
||||
my_args.add("f", "folder", haveParam=false, desc="Display the folder instead of the git repository name")
|
||||
my_args.add("w", "wait", haveParam=true, desc="Wait between 2 acces on the server (needed when the server is really slow to remove ssh connection) (default=" + str(env.get_wait_between_sever_command()) + ")")
|
||||
my_args.set_stop_at(actions.get_list_of_action())
|
||||
local_argument = my_args.parse()
|
||||
my_args.addSection("option", "Can be set one time in all case");
|
||||
my_args.add("h", "help", null, "Display this help");
|
||||
my_args.add("v", "verbose", Arrays.asList(
|
||||
new ArgChoice("0","None"),
|
||||
new ArgChoice("1","error"),
|
||||
new ArgChoice("2","warning"),
|
||||
new ArgChoice("3","info"),
|
||||
new ArgChoice("4","Log"),
|
||||
new ArgChoice("5","verbose"),
|
||||
new ArgChoice("6","extreme_verbose")), "display Log level (verbose) default =2");
|
||||
my_args.add("c", "color", null, "Display message in color");
|
||||
my_args.add("n", "no-fetch-manifest", null, "Disable the fetch of the manifest", false);
|
||||
my_args.add("F", "filter", null, "Filter the action on a list of path or subpath: -f library", true);
|
||||
my_args.add("f", "folder", null, "Display the folder instead of the git repository name", false);
|
||||
my_args.add("w", "wait", null, "Wait between 2 acces on the server (needed when the server is really slow to remove ssh connection) (default=" + str(env.get_wait_between_sever_command()) + ")", false);
|
||||
my_args.set_stop_at(new ArrayList<Actions.getListOfAction()));
|
||||
|
||||
local_argument = my_args.parse();
|
||||
|
||||
//
|
||||
// @brief Display the help of this makefile.
|
||||
//
|
||||
public void usage():
|
||||
color = debug.get_color_set()
|
||||
color = Log.get_color_set()
|
||||
// generic argument displayed :
|
||||
my_args.display()
|
||||
print(" Action availlable" )
|
||||
@ -59,42 +62,42 @@ public void check_boolean(value):
|
||||
return true
|
||||
return false
|
||||
|
||||
// preparse the argument to get the verbose element for debug mode
|
||||
// preparse the argument to get the verbose element for Log mode
|
||||
public void parse_generic_arg(argument, active):
|
||||
debug.extreme_verbose("parse arg : " + argument.get_option_name() + " " + argument.get_arg() + " active=" + str(active))
|
||||
if argument.get_option_name() == "help":
|
||||
Log.extreme_verbose("parse arg : " + argument.getOptionName() + " " + argument.getArg() + " active=" + str(active))
|
||||
if argument.getOptionName() == "help":
|
||||
if active == false:
|
||||
usage()
|
||||
return true
|
||||
elif argument.get_option_name()=="jobs":
|
||||
} else if argument.getOptionName()=="jobs":
|
||||
if active == true:
|
||||
//multiprocess.set_core_number(int(argument.get_arg()))
|
||||
//multiprocess.set_core_number(int(argument.getArg()))
|
||||
pass
|
||||
return true
|
||||
elif argument.get_option_name()=="wait":
|
||||
} else if argument.getOptionName()=="wait":
|
||||
if active == true:
|
||||
env.set_wait_between_sever_command(int(argument.get_arg()))
|
||||
env.set_wait_between_sever_command(int(argument.getArg()))
|
||||
return true
|
||||
elif argument.get_option_name() == "verbose":
|
||||
} else if argument.getOptionName() == "verbose":
|
||||
if active == true:
|
||||
debug.set_level(int(argument.get_arg()))
|
||||
Log.set_level(int(argument.getArg()))
|
||||
return true
|
||||
elif argument.get_option_name() == "folder":
|
||||
} else if argument.getOptionName() == "folder":
|
||||
if active == true:
|
||||
env.set_display_folder_instead_of_git_name(true)
|
||||
return true
|
||||
elif argument.get_option_name() == "color":
|
||||
} else if argument.getOptionName() == "color":
|
||||
if active == true:
|
||||
if check_boolean(argument.get_arg()) == true:
|
||||
debug.enable_color()
|
||||
if check_boolean(argument.getArg()) == true:
|
||||
Log.enable_color()
|
||||
else:
|
||||
debug.disable_color()
|
||||
Log.disable_color()
|
||||
return true
|
||||
elif argument.get_option_name() == "filter":
|
||||
} else if argument.getOptionName() == "filter":
|
||||
if active == true:
|
||||
env.set_filter_command(str(argument.get_arg()))
|
||||
env.set_filter_command(str(argument.getArg()))
|
||||
return true
|
||||
elif argument.get_option_name() == "no-fetch-manifest":
|
||||
} else if argument.getOptionName() == "no-fetch-manifest":
|
||||
if active == false:
|
||||
env.set_fetch_manifest(false)
|
||||
return true
|
||||
@ -104,38 +107,38 @@ public void parse_generic_arg(argument, active):
|
||||
config_file = env.get_island_path_user_config()
|
||||
if os.path.isfile(config_file) == true:
|
||||
sys.path.append(os.path.dirname(config_file))
|
||||
debug.debug("Find basic configuration file: '" + config_file + "'")
|
||||
Log.debug("Find basic configuration file: '" + config_file + "'")
|
||||
// the file exist, we can open it and get the initial configuration:
|
||||
configuration_file = __import__(env.get_system_config_name()[:-3])
|
||||
|
||||
if "get_exclude_path" in dir(configuration_file):
|
||||
data = configuration_file.get_exclude_path()
|
||||
debug.debug(" get default config 'get_exclude_path' val='" + str(data) + "'")
|
||||
Log.debug(" get default config 'get_exclude_path' val='" + str(data) + "'")
|
||||
env.set_exclude_search_path(data)
|
||||
|
||||
if "get_default_color" in dir(configuration_file):
|
||||
data = configuration_file.get_default_color()
|
||||
debug.debug(" get default config 'get_default_color' val='" + str(data) + "'")
|
||||
Log.debug(" get default config 'get_default_color' val='" + str(data) + "'")
|
||||
parse_generic_arg(arg_element.ArgElement("color", str(data)), true)
|
||||
|
||||
if "get_default_debug_level" in dir(configuration_file):
|
||||
data = configuration_file.get_default_debug_level()
|
||||
debug.debug(" get default config 'get_default_debug_level' val='" + str(data) + "'")
|
||||
if "get_default_Log_level" in dir(configuration_file):
|
||||
data = configuration_file.get_default_Log_level()
|
||||
Log.debug(" get default config 'get_default_debug_level' val='" + str(data) + "'")
|
||||
parse_generic_arg(arg_element.ArgElement("verbose", str(data)), true)
|
||||
|
||||
if "get_default_folder" in dir(configuration_file):
|
||||
data = configuration_file.get_default_folder()
|
||||
debug.debug(" get default config 'get_default_folder' val='" + str(data) + "'")
|
||||
Log.debug(" get default config 'get_default_folder' val='" + str(data) + "'")
|
||||
parse_generic_arg(arg_element.ArgElement("folder", str(data)), true)
|
||||
|
||||
if "get_default_wait" in dir(configuration_file):
|
||||
data = configuration_file.get_default_wait()
|
||||
debug.debug(" get default config 'get_default_wait' val='" + str(data) + "'")
|
||||
Log.debug(" get default config 'get_default_wait' val='" + str(data) + "'")
|
||||
parse_generic_arg(arg_element.ArgElement("wait", str(data)), true)
|
||||
|
||||
if "get_default_filter" in dir(configuration_file):
|
||||
data = configuration_file.get_default_filter()
|
||||
debug.debug(" get default config 'get_default_filter' val='" + str(data) + "'")
|
||||
Log.debug(" get default config 'get_default_filter' val='" + str(data) + "'")
|
||||
parse_generic_arg(arg_element.ArgElement("filter", str(data)), true)
|
||||
|
||||
|
||||
@ -153,27 +156,27 @@ for argument in local_argument:
|
||||
|
||||
// now the first argument is: the action:
|
||||
if len(new_argument_list) == 0:
|
||||
debug.warning("--------------------------------------")
|
||||
debug.warning("Missing the action to do ...")
|
||||
debug.warning("--------------------------------------")
|
||||
Log.warning("--------------------------------------")
|
||||
Log.warning("Missing the action to do ...")
|
||||
Log.warning("--------------------------------------")
|
||||
usage()
|
||||
|
||||
|
||||
// TODO : move tin in actions ...
|
||||
list_actions = actions.get_list_of_action();
|
||||
|
||||
action_to_do = new_argument_list[0].get_arg()
|
||||
action_to_do = new_argument_list[0].getArg()
|
||||
new_argument_list = new_argument_list[1:]
|
||||
if action_to_do not in list_actions:
|
||||
debug.warning("--------------------------------------")
|
||||
debug.warning("Wrong action type : '" + str(action_to_do) + "' availlable list: " + str(list_actions) )
|
||||
debug.warning("--------------------------------------")
|
||||
Log.warning("--------------------------------------")
|
||||
Log.warning("Wrong action type : '" + str(action_to_do) + "' availlable list: " + str(list_actions) )
|
||||
Log.warning("--------------------------------------")
|
||||
usage()
|
||||
|
||||
// todo : Remove this
|
||||
if action_to_do != "init" \
|
||||
and os.path.exists(env.get_island_path()) == false:
|
||||
debug.error("Can not execute a island cmd if we have not initialize a config: '" + str("." + env.get_system_base_name()) + "' in upper 6 parent path")
|
||||
Log.error("Can not execute a island cmd if we have not initialize a config: '" + str("." + env.get_system_base_name()) + "' in upper 6 parent path")
|
||||
exit(-1)
|
||||
|
||||
|
||||
|
536
src/org/atriasoft/island/Manifest.java
Normal file
536
src/org/atriasoft/island/Manifest.java
Normal file
@ -0,0 +1,536 @@
|
||||
package org.atriasoft.island;
|
||||
|
||||
import java.io.File;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.atriasoft.exml.Exml;
|
||||
import org.atriasoft.exml.model.XmlAttribute;
|
||||
import org.atriasoft.exml.model.XmlElement;
|
||||
import org.atriasoft.exml.model.XmlNode;
|
||||
import org.atriasoft.exml.model.XmlNodeType;
|
||||
import org.atriasoft.exml.parser.ParseXml;
|
||||
import org.atriasoft.island.internal.Log;
|
||||
import org.eclipse.jgit.api.Git;
|
||||
import org.eclipse.jgit.api.RemoteListCommand;
|
||||
|
||||
class RepositoryCongig {
|
||||
String remote = "origin";
|
||||
String revision = "master";
|
||||
boolean sync = false;
|
||||
}
|
||||
|
||||
record MirrorConfig(String name, String fetch) {
|
||||
}
|
||||
|
||||
record RemoteConfig(String name, String fetch, List<MirrorConfig> mirror) {
|
||||
}
|
||||
record IncludeConfig(String name, String path, Object manifest) {
|
||||
}
|
||||
|
||||
public class Manifest {
|
||||
public static boolean isInit() {
|
||||
if (!Files.exists(Env.get_island_path())){
|
||||
Log.verbose("Lutin is not init: path does not exist: '" + Env.get_island_path() + "'");
|
||||
return false;
|
||||
}
|
||||
if (!Files.exists(Env.get_island_path_config())) {
|
||||
Log.verbose("Lutin is not init: config does not exist: '" + Env.get_island_path_config() + "'");
|
||||
return false;
|
||||
}
|
||||
if (!Files.exists(Env.get_island_path_manifest())) {
|
||||
Log.verbose("Lutin is not init: Manifest does not exist: '" + Env.get_island_path_manifest() + "'");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
public static void checkIsInit() {
|
||||
// check if .XXX exist (create it if needed)
|
||||
if (!isInit()) {
|
||||
Log.error("System not init: missing config: '" + Env.get_island_path() + "'. Call <island init> first");
|
||||
System.exit(-1);
|
||||
}
|
||||
}
|
||||
|
||||
private String deliver_master = "master";
|
||||
private String deliver_develop = "develop";
|
||||
private String deliver_mode = "merge";
|
||||
private Path manifestXml;
|
||||
|
||||
List<Object> projects = new ArrayList<>();
|
||||
RepositoryCongig defaultWhat = null;
|
||||
RepositoryCongig default_base = new RepositoryCongig();
|
||||
List<RemoteConfig> remotes = new ArrayList<>();
|
||||
List<IncludeConfig> includes = new ArrayList<>();
|
||||
List<Object> links = new ArrayList<>();
|
||||
public Manifest(Path manifest_xml) {
|
||||
manifestXml = manifest_xml;
|
||||
// load the manifest
|
||||
load();
|
||||
// check error in manifest (double path ...)
|
||||
// TODO checkDoublePath();
|
||||
}
|
||||
|
||||
public List<Object> getLinks() {
|
||||
return this.links;
|
||||
}
|
||||
String removeEndSlash(String value) {
|
||||
while (value.length() > 1
|
||||
&& ( value.charAt(value.length()-1) == '\\'
|
||||
|| value.charAt(value.length()-1) == '/')) {
|
||||
value = value.substring(0, value.length()-1);
|
||||
}
|
||||
return value;
|
||||
}
|
||||
public void load() {
|
||||
XmlElement rootNode = Exml.parse(this.manifestXml);
|
||||
Log.debug("manifest : '" + this.manifestXml + "'");
|
||||
if (!rootNode.getValue().equals("manifest")) {
|
||||
Log.error(" in '" + this.manifestXml + "' have not main xml node='manifest'");
|
||||
}
|
||||
for (XmlNode child : rootNode.getNodes()) {
|
||||
if (child.getType() == XmlNodeType.COMMENT) {
|
||||
Log.verbose(" comment='" + child + "'");
|
||||
continue;
|
||||
}
|
||||
if (child.getValue().equals("remote")) {
|
||||
String name = "origin";
|
||||
String fetch = "";
|
||||
for (XmlAttribute attr : child.toElement().getAttributes()) {
|
||||
if (attr.getName().equals("name")) {
|
||||
name = attr.getValue();
|
||||
} else if (attr.getName().equals("fetch")) {
|
||||
fetch = attr.getValue();
|
||||
// When we use manifest with relative element of the manifest git.
|
||||
if (fetch.length() >= 2 && fetch.startsWith("..")) {
|
||||
// we have a relative island manifest ==> use local manifest origin to get the full origin
|
||||
Git git = Git.open(Env.get_island_path_manifest().toFile());
|
||||
RemoteListCommand remoteList = git.remoteList();
|
||||
|
||||
// cmd = "git remote get-url origin"
|
||||
// Log.verbose("execute : " + cmd)
|
||||
// base_origin = multiprocess.run_command(cmd, cwd=)
|
||||
// Log.verbose("base_origin=" + base_origin[1])
|
||||
// base_origin = base_origin[1]
|
||||
// while len(fetch) >= 2 \
|
||||
// and fetch[:2] == "..":
|
||||
// fetch = fetch[2:]
|
||||
// while len(fetch) >= 1 \
|
||||
// and ( fetch[0] == "/" \
|
||||
// or fetch[0] == "\\"):
|
||||
// fetch = fetch[1:]
|
||||
// offset_1 = base_origin.rfind('/')
|
||||
// offset_2 = base_origin.rfind(':')
|
||||
// if offset_1 > offset_2:
|
||||
// base_origin = base_origin[:offset_1]
|
||||
// else:
|
||||
// base_origin = base_origin[:offset_2]
|
||||
// Log.verbose("new base_origin=" + base_origin)
|
||||
// Log.verbose("tmp fetch=" + fetch)
|
||||
// if fetch != "":
|
||||
// fetch = base_origin + "/" + fetch
|
||||
// else:
|
||||
// fetch = base_origin
|
||||
Log.verbose("new fetch=" + fetch);
|
||||
}
|
||||
fetch = removeEndSlash(fetch);
|
||||
} else {
|
||||
Log.error("Parsing the manifest : Unknow '" + child.getName() + "' attibute : '" + attr.getName() + "', availlable:[name,fetch]")
|
||||
}
|
||||
}
|
||||
Log.debug(" find '" + child.getName() + "' : name='" + name + "' fetch='" + fetch + "'");
|
||||
// parse the sub global mirror list
|
||||
List<MirrorConfig> mirror_list = new ArrayList<>();
|
||||
for (XmlNode child_2 : child.toElement().getNodes()) {
|
||||
if (child_2.getValue().equals("mirror")):
|
||||
// find a new mirror
|
||||
String mirror_name = "";
|
||||
String mirror_fetch = "";
|
||||
for (XmlAttribute attr_2 : child_2.toElement().getAttributes()) {
|
||||
if (attr_2.getName().equals("name")) {
|
||||
mirror_name = attr_2.getValue();
|
||||
} else if (attr_2.getName().equals("fetch")) {
|
||||
mirror_fetch = attr_2.getValue();
|
||||
mirror_fetch = removeEndSlash(mirror_fetch);
|
||||
} else {
|
||||
Log.error("Parsing the manifest : Unknow '" + child_2.getValue() + "' attibute : '" + attr_2 + "', availlable:[name,fetch]");
|
||||
}
|
||||
}
|
||||
Log.debug("mirror: '" + mirror_name + "' '" + mirror_fetch + "'");
|
||||
if (mirror_name.isEmpty()) {
|
||||
Log.critical("Missing mirrot 'name'");
|
||||
}
|
||||
if (mirror_fetch.isEmpty()) {
|
||||
Log.critical("Missing mirror 'fetch'");
|
||||
}
|
||||
mirror_list.add(new MirrorConfig(mirror_name, mirror_fetch));
|
||||
} else {
|
||||
Log.critical("Parsing the manifest : Unknow '" + child_2.getName() + "', availlable:[mirror]");
|
||||
}
|
||||
this.remotes.add(new RemoteConfig(name, fetch, mirror_list));
|
||||
continue;
|
||||
}
|
||||
if (child.getName().equals("include") {
|
||||
String name = "";
|
||||
for (XmlAttribute attr : child.toElement.getAttributes()) {
|
||||
if (attr.getName().equals("name")) {
|
||||
name = attr.getValue();
|
||||
} else {
|
||||
Log.error("Parsing the manifest : Unknow '" + child.getName() + "' attibute : '" + attr + "', availlable:[name]")
|
||||
}
|
||||
}
|
||||
Log.debug(" find '" + child.getName() + "' : name='" + name + "'");
|
||||
// check if the file exist ...
|
||||
Path new_name_xml = this.manifest_xml.resolve(name);
|
||||
if (!Files.exists(new_name_xml)) {
|
||||
Log.critical("The file does not exist: " + new_name_xml)
|
||||
}
|
||||
this.includes.add(new IncludeConfig(name, new_name_xml, null));
|
||||
continue;
|
||||
}
|
||||
if (child.getName().equals("default") {
|
||||
String remote = "origin";
|
||||
String revision = "master";
|
||||
boolean sync = false;
|
||||
for (XmlAttribute attr : child.toElement.getAttributes()) {
|
||||
if (attr.getName().equals("remote")) {
|
||||
remote = attr.getValue();
|
||||
} else if (attr.getName().equals("revision")) {
|
||||
revision = attr.getValue();
|
||||
} else if (attr.getName().equals("sync-s")) { // synchronize submodule ... automaticaly
|
||||
sync = attr.getValue();
|
||||
if (sync.lower().equals("true")
|
||||
|| sync.equals("1")
|
||||
|| sync.lower().equals("yes")) {
|
||||
sync = true;
|
||||
} else if (sync.lower().equals("false")
|
||||
|| sync.equals("0")
|
||||
|| sync.lower().equals("no")) {
|
||||
sync = false
|
||||
} else {
|
||||
Log.critical("Parsing the manifest : Unknow '" + child.getName() + "' attibute : '" + attr + "', value:'" + sync + "' availlable:[true,1,yes,false,0,no]");
|
||||
}
|
||||
} else {
|
||||
Log.error("Parsing the manifest : Unknow '" + child.getName() + "' attibute : '" + attr + "', availlable:[remote,revision,sync-s]");
|
||||
}
|
||||
}
|
||||
if (this.defaultWhat != null) {
|
||||
Log.error("Parsing the manifest : Node '" + child.getName() + "' already set")
|
||||
}
|
||||
this.defaultWhat = new RepositoryCongig(remote, revision, sync));
|
||||
Log.debug(" find '" + child.getName() + "' : remote='" + remote + "' revision='" + revision + "' sync=" + sync);
|
||||
continue;
|
||||
}
|
||||
if child.tag == "project":
|
||||
name = ""
|
||||
path = ""
|
||||
tag_sha1 = None
|
||||
for attr in child.attrib:
|
||||
if attr == "name":
|
||||
name = child.attrib[attr]
|
||||
} else if attr == "path":
|
||||
path = child.attrib[attr]
|
||||
} else if attr == "tag":
|
||||
tag_sha1 = child.attrib[attr]
|
||||
else:
|
||||
Log.error("(l:" + str(child.sourceline) + ") Parsing the manifest: Unknow '" + child.tag + "' attibute : '" + attr + "', availlable:[name,tag,sync-s]")
|
||||
if name == "":
|
||||
Log.error("(l:" + str(child.sourceline) + ") Parsing the manifest: '" + child.tag + "' missing attribute: 'name' ==> specify the git to clone ...")
|
||||
this.projects.append({
|
||||
"name":name,
|
||||
"path":path,
|
||||
"tag":tag_sha1,
|
||||
})
|
||||
Log.debug("(l:" + str(child.sourceline) + ") find '" + child.tag + "' : name='" + name + "' path='" + path + "' tag='" + str(tag_sha1) + "'");
|
||||
continue
|
||||
if child.tag == "option":
|
||||
// not managed ==> future use
|
||||
type_option = ""
|
||||
value_option = ""
|
||||
for attr in child.attrib:
|
||||
if attr == "type":
|
||||
type_option = child.attrib[attr]
|
||||
} else if attr == "value":
|
||||
value_option = child.attrib[attr]
|
||||
else:
|
||||
Log.error("(l:" + str(child.sourceline) + ") Parsing the manifest: Unknow '" + child.tag + "' attibute : '" + attr + "', availlable:[type,value]")
|
||||
if type_option == "deliver_master":
|
||||
this.deliver_master = value_option
|
||||
} else if type_option == "deliver_develop":
|
||||
this.deliver_develop = value_option
|
||||
} else if type_option == "deliver_mode":
|
||||
this.deliver_mode = value_option
|
||||
if this.deliver_mode not in ["merge","fast_forward"]:
|
||||
Log.error("(l:" + str(child.sourceline) + ") Parsing the manifest: option 'deliver_mode' value availlable: [merge,fast_forward]")
|
||||
else:
|
||||
Log.error("(l:" + str(child.sourceline) + ") Parsing the manifest: Unknow 'type' value availlable: [deliver_master,deliver_develop,deliver_mode]")
|
||||
continue
|
||||
if child.tag == "link":
|
||||
// not managed ==> future use
|
||||
source = ""
|
||||
destination = ""
|
||||
for attr in child.attrib:
|
||||
if attr == "source":
|
||||
source = child.attrib[attr]
|
||||
} else if attr == "destination":
|
||||
destination = child.attrib[attr]
|
||||
else:
|
||||
Log.error("(l:" + str(child.sourceline) + ") Parsing the manifest: Unknow '" + child.tag + "' attibute : '" + attr + "', availlable:[source,destination]")
|
||||
if source == "":
|
||||
Log.error("(l:" + str(child.sourceline) + ") Parsing the manifest: '" + child.tag + "' missing attribute: 'source' ==> specify the git to clone ...")
|
||||
if destination == "":
|
||||
Log.error("(l:" + str(child.sourceline) + ") Parsing the manifest: '" + child.tag + "' missing attribute: 'destination' ==> specify the git to clone ...")
|
||||
this.links.append({
|
||||
"source":source,
|
||||
"destination":destination,
|
||||
})
|
||||
Log.debug("Add link: '" + str(destination) + "' ==> '" + str(source) + "'")
|
||||
continue
|
||||
Log.info("(l:" + str(child.sourceline) + ") '" + str(child.tag) + "' values=" + str(child.attrib));
|
||||
Log.error("(l:" + str(child.sourceline) + ") Parsing error Unknow NODE : '" + str(child.tag) + "' availlable:[remote,include,default,project,option,link]")
|
||||
// now we parse all sub repo:
|
||||
for elem in this.includes:
|
||||
elem["manifest"] = Manifest(elem["path"])
|
||||
|
||||
|
||||
// inside data child.text
|
||||
|
||||
|
||||
// public void _create_path_with_elem(this, element):
|
||||
// path = element["path"]
|
||||
// if path == "":
|
||||
// path = element["name"]
|
||||
// if len(path) >= 4 \
|
||||
// and path[-4:] == ".git":
|
||||
// path = path[:-4]
|
||||
// return path
|
||||
//
|
||||
// public void checkDoublePath(this, list_path = [], space=""):
|
||||
// Log.debug(space + "check path : '" + this.manifest_xml + "'")
|
||||
// for elem in this.projects:
|
||||
// path = this._create_path_with_elem(elem)
|
||||
// Log.debug(space + " check path:'" + str(path) + "'")
|
||||
// if path in list_path:
|
||||
// Log.error("Check Manifest error : double use of the path '" + str(path) + "'")
|
||||
// list_path.append(path)
|
||||
// for elem in this.includes:
|
||||
// elem["manifest"]._check_double_path(list_path, space + " ")
|
||||
//
|
||||
// public void get_all_configs(this, default=None, upper_remotes=[]):
|
||||
// out = []
|
||||
// if default == None:
|
||||
// if this.default != None:
|
||||
// default = copy.deepcopy(this.default)
|
||||
// else:
|
||||
// default = copy.deepcopy(this.default_base)
|
||||
// // Log.error(" this.default=" + str(this.default))
|
||||
// // add all local project
|
||||
// for elem in this.projects:
|
||||
// Log.verbose("parse element " + str(elem))
|
||||
// if Env.need_process_with_filter(elem["name"]) == false:
|
||||
// Log.info("Filter repository: " + str(elem["name"]))
|
||||
// continue
|
||||
// conf = repo_config.RepoConfig()
|
||||
// conf.name = elem["name"]
|
||||
// conf.tag = elem["tag"]
|
||||
// conf.path = this._create_path_with_elem(elem)
|
||||
//
|
||||
// // add default remote for the project (search in herited element)
|
||||
// for remote in this.remotes:
|
||||
// Log.verbose(" Local Remote: " + str(remote))
|
||||
// if remote["name"] == default["remote"]:
|
||||
// conf.remotes.append(remote)
|
||||
// if len(conf.remotes) == 0:
|
||||
// for remote in upper_remotes:
|
||||
// Log.verbose(" upper Remote: " + str(remote))
|
||||
// if remote["name"] == default["remote"]:
|
||||
// conf.remotes.append(remote)
|
||||
// if len(conf.remotes) == 0:
|
||||
// Log.error(" No remote detected: " + str(len(conf.remotes)) + " for " + conf.name + " with default remote name : " + default["remote"] + " this remote: " + str(this.remotes))
|
||||
//
|
||||
// // select default remote:
|
||||
// conf.select_remote = None
|
||||
// Log.debug(" remotes count: " + str(len(conf.remotes)))
|
||||
// for remote in conf.remotes:
|
||||
// Log.debug(" remote=" + str(remote))
|
||||
// Log.debug(" Ckeck remote : " + remote["name"] + " == " + default["remote"])
|
||||
// Log.verbose(" remote=" + str(remote))
|
||||
// Log.verbose(" default=" + str(default))
|
||||
// if remote["name"] == default["remote"]:
|
||||
// conf.select_remote = copy.deepcopy(remote)
|
||||
// Log.debug(" copy select=" + str(conf.select_remote))
|
||||
//
|
||||
// // copy the submodule synchronisation
|
||||
// conf.select_remote["sync"] = default["sync"]
|
||||
// break
|
||||
// if conf.select_remote == None:
|
||||
// Log.error("missing remote for project: " + str(conf.name))
|
||||
//
|
||||
// conf.branch = default["revision"]
|
||||
// out.append(conf)
|
||||
// // create a temporary variable to transmit the remote to includes
|
||||
// upper_remotes_forward = copy.deepcopy(upper_remotes)
|
||||
// for remote in this.remotes:
|
||||
// upper_remotes_forward.append(remote)
|
||||
// // add all include project
|
||||
// for elem in this.includes:
|
||||
// list_project = elem["manifest"].get_all_configs(default, upper_remotes_forward)
|
||||
// for elem_proj in list_project:
|
||||
// out.append(elem_proj)
|
||||
//
|
||||
// //# -------------------------------------------------------------
|
||||
// //# -- add Volatile ...
|
||||
// //# -------------------------------------------------------------
|
||||
// Log.verbose("include volatile config")
|
||||
// // TODO: maybe find a better way to do this...
|
||||
// conf_global = config.get_unique_config()
|
||||
// for elem in conf_global.get_volatile():
|
||||
// conf = repo_config.RepoConfig()
|
||||
// base_volatile, repo_volatile = repo_config.split_repo(elem["git_address"])
|
||||
// conf.name = repo_volatile
|
||||
// conf.path = elem["path"]
|
||||
// conf.branch = "master"
|
||||
// conf.volatile = true
|
||||
// conf.remotes = [
|
||||
// {
|
||||
// 'name': 'origin',
|
||||
// 'fetch': base_volatile,
|
||||
// 'mirror': []
|
||||
// }
|
||||
// ]
|
||||
// conf.select_remote = {
|
||||
// 'name': 'origin',
|
||||
// 'fetch': base_volatile,
|
||||
// 'sync': false,
|
||||
// 'mirror': []
|
||||
// }
|
||||
// out.append(conf)
|
||||
// //# -------------------------------------------------------------
|
||||
// if false:
|
||||
// Log.info("list of all repo:")
|
||||
// for elem in out:
|
||||
// Log.info(" '" + elem.name + "'")
|
||||
// Log.info(" path: " + elem.path)
|
||||
// Log.info(" remotes: " + str(elem.remotes))
|
||||
// Log.info(" select_remote: " + str(elem.select_remote))
|
||||
// Log.info(" branch: " + elem.branch)
|
||||
// return out
|
||||
//
|
||||
//
|
||||
//public void tag_manifest(manifest_xml_filename, all_tags):
|
||||
// tree = etree.parse(manifest_xml_filename)
|
||||
// Log.debug("manifest : '" + manifest_xml_filename + "'")
|
||||
// root = tree.getroot()
|
||||
// includes = []
|
||||
// if root.tag != "manifest":
|
||||
// Log.error("(l:" + str(child.sourceline) + ") in '" + str(file) + "' have not main xml node='manifest'")
|
||||
// return false
|
||||
// for child in root:
|
||||
// if type(child) == etree._Comment:
|
||||
// Log.verbose("(l:" + str(child.sourceline) + ") comment='" + str(child.text) + "'");
|
||||
// continue
|
||||
// if child.tag == "remote":
|
||||
// continue
|
||||
// if child.tag == "include":
|
||||
// name = ""
|
||||
// for attr in child.attrib:
|
||||
// if attr == "name":
|
||||
// name = child.attrib[attr]
|
||||
// else:
|
||||
// Log.error("(l:" + str(child.sourceline) + ") Parsing the manifest : Unknow '" + child.tag + "' attibute : '" + attr + "', availlable:[name]")
|
||||
// Log.debug("(l:" + str(child.sourceline) + ") find '" + child.tag + "' : name='" + name + "'");
|
||||
// // check if the file exist ...
|
||||
// new_name_xml = new Path(os.path.dirname(manifest_xml_filename),name)
|
||||
// if os.path.exists(new_name_xml) == false:
|
||||
// Log.error("(l:" + str(child.sourceline) + ") The file does not exist : '" + new_name_xml + "'")
|
||||
// includes.append({
|
||||
// "name":name,
|
||||
// "path":new_name_xml,
|
||||
// "manifest":None
|
||||
// })
|
||||
// continue
|
||||
// if child.tag == "default":
|
||||
// continue
|
||||
// if child.tag == "project":
|
||||
// name = ""
|
||||
// path = ""
|
||||
// tag_sha1 = None
|
||||
// for attr in child.attrib:
|
||||
// if attr == "name":
|
||||
// name = child.attrib[attr]
|
||||
// } else if attr == "path":
|
||||
// path = child.attrib[attr]
|
||||
// } else if attr == "tag":
|
||||
// tag_sha1 = child.attrib[attr]
|
||||
// else:
|
||||
// Log.error("(l:" + str(child.sourceline) + ") Parsing the manifest: Unknow '" + child.tag + "' attibute : '" + attr + "', availlable:[name,tag,sync-s]")
|
||||
// if name == "":
|
||||
// Log.error("(l:" + str(child.sourceline) + ") Parsing the manifest: '" + child.tag + "' missing attribute: 'name' ==> specify the git to clone ...")
|
||||
// for elem_tag in all_tags:
|
||||
// if elem_tag["name"] == name:
|
||||
// child.set("tag", elem_tag["tag"])
|
||||
// continue
|
||||
// if child.tag == "option":
|
||||
// // not managed ==> future use
|
||||
// continue
|
||||
// if child.tag == "link":
|
||||
// continue
|
||||
// Log.info("(l:" + str(child.sourceline) + ") '" + str(child.tag) + "' values=" + str(child.attrib));
|
||||
// Log.error("(l:" + str(child.sourceline) + ") Parsing error Unknow NODE : '" + str(child.tag) + "' availlable:[remote,include,default,project,option,link]")
|
||||
// tree.write(manifest_xml_filename, pretty_print=true, xml_declaration=true, encoding="utf-8")
|
||||
// // now we parse all sub repo:
|
||||
// for elem in includes:
|
||||
// tag_manifest(elem["path"], all_tags)
|
||||
//
|
||||
//
|
||||
//
|
||||
//public void tag_clear(manifest_xml_filename):
|
||||
// tree = etree.parse(manifest_xml_filename)
|
||||
// Log.debug("manifest : '" + manifest_xml_filename + "'")
|
||||
// root = tree.getroot()
|
||||
// includes = []
|
||||
// if root.tag != "manifest":
|
||||
// Log.error("(l:" + str(child.sourceline) + ") in '" + str(file) + "' have not main xml node='manifest'")
|
||||
// return false
|
||||
// for child in root:
|
||||
// if type(child) == etree._Comment:
|
||||
// Log.verbose("(l:" + str(child.sourceline) + ") comment='" + str(child.text) + "'");
|
||||
// continue
|
||||
// if child.tag == "remote":
|
||||
// continue
|
||||
// if child.tag == "include":
|
||||
// name = ""
|
||||
// for attr in child.attrib:
|
||||
// if attr == "name":
|
||||
// name = child.attrib[attr]
|
||||
// else:
|
||||
// Log.error("(l:" + str(child.sourceline) + ") Parsing the manifest : Unknow '" + child.tag + "' attibute : '" + attr + "', availlable:[name]")
|
||||
// Log.debug("(l:" + str(child.sourceline) + ") find '" + child.tag + "' : name='" + name + "'");
|
||||
// // check if the file exist ...
|
||||
// new_name_xml = new Path(os.path.dirname(manifest_xml_filename),name)
|
||||
// if os.path.exists(new_name_xml) == false:
|
||||
// Log.error("(l:" + str(child.sourceline) + ") The file does not exist : '" + new_name_xml + "'")
|
||||
// includes.append({
|
||||
// "name":name,
|
||||
// "path":new_name_xml,
|
||||
// "manifest":None
|
||||
// })
|
||||
// continue
|
||||
// if child.tag == "default":
|
||||
// continue
|
||||
// if child.tag == "project":
|
||||
// child.attrib.pop("tag", None)
|
||||
// continue
|
||||
// if child.tag == "option":
|
||||
// continue
|
||||
// if child.tag == "link":
|
||||
// continue
|
||||
// Log.info("(l:" + str(child.sourceline) + ") '" + str(child.tag) + "' values=" + str(child.attrib));
|
||||
// Log.error("(l:" + str(child.sourceline) + ") Parsing error Unknow NODE : '" + str(child.tag) + "' availlable:[remote,include,default,project,option,link]")
|
||||
// tree.write(manifest_xml_filename, pretty_print=true, xml_declaration=true, encoding="utf-8")
|
||||
// // now we parse all sub repo:
|
||||
// for elem in includes:
|
||||
// tag_clear(elem["path"])
|
||||
//
|
79
src/org/atriasoft/island/actions/islandActionCheckout.java
Normal file
79
src/org/atriasoft/island/actions/islandActionCheckout.java
Normal file
@ -0,0 +1,79 @@
|
||||
package org.atriasoft.island.actions;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.List;
|
||||
|
||||
import org.atriasoft.death.ArgElement;
|
||||
import org.atriasoft.death.Arguments;
|
||||
import org.atriasoft.island.Config;
|
||||
import org.atriasoft.island.Env;
|
||||
import org.atriasoft.island.Manifest;
|
||||
import org.atriasoft.island.internal.Log;
|
||||
import org.atriasoft.island.model.ActionException;
|
||||
import org.atriasoft.island.model.ActionInterface;
|
||||
import org.atriasoft.island.model.ConfigManifest;
|
||||
|
||||
public class islandActionCheckout implements ActionInterface {
|
||||
|
||||
@Override
|
||||
public String help() {
|
||||
return "Ckeckout a specific branch in all repository";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void add_specific_arguments(Arguments myArgs, String section) {
|
||||
myArgs.add("r", "remote", null, "Name of the remote server", true);
|
||||
myArgs.addArg("branch", false, "Branch to checkout (if '__TAG__' ==> checkout specific repository tags)");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String helpExample() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(List<ArgElement> _arguments) throws ActionException {
|
||||
|
||||
String argument_remote_name = "";
|
||||
String branch_to_checkout = "";
|
||||
for (ArgElement elem : _arguments) {
|
||||
if (elem.getOptionName().equals("remote")) {
|
||||
Log.info("find remote name: '" + elem.getArg() + "'");
|
||||
argument_remote_name = elem.getArg();
|
||||
} else if (elem.getOptionName().equals("branch")) {
|
||||
branch_to_checkout = elem.getArg()
|
||||
} else {
|
||||
Log.error("Wrong argument: '" + elem.getOptionName() + "' '" + elem.getArg() + "'");
|
||||
return;
|
||||
}
|
||||
}
|
||||
// check system is OK
|
||||
Manifest.checkIsInit();
|
||||
|
||||
ConfigManifest configuration = Config.getUniqueConfig();
|
||||
|
||||
// update the local configuration file:
|
||||
configuration.setBranch(branch_to_checkout);
|
||||
configuration.store();
|
||||
|
||||
Path file_source_manifest = Env.get_island_path_manifest().resolve(configuration.getManifestName());
|
||||
if (!Files.exists(file_source_manifest)) {
|
||||
Log.critical("Missing manifest file : '" + file_source_manifest.toAbsolutePath() + "'");
|
||||
}
|
||||
Manifest mani = new Manifest(file_source_manifest);
|
||||
|
||||
all_project = mani.getAllConfigs();
|
||||
Log.info("checkout of: " + str(len(all_project)) + " projects")
|
||||
id_element = 0
|
||||
have_error = false
|
||||
for elem in all_project:
|
||||
id_element += 1
|
||||
base_display = tools.get_list_base_display(id_element, len(all_project), elem)
|
||||
if status.checkout_elem(elem, argument_remote_name, branch_to_checkout, base_display) == false:
|
||||
have_error = true
|
||||
if have_error == true:
|
||||
return env.ret_action_fail
|
||||
}
|
||||
|
||||
}
|
30
src/org/atriasoft/island/actions/islandAction_checkout.java
Normal file
30
src/org/atriasoft/island/actions/islandAction_checkout.java
Normal file
@ -0,0 +1,30 @@
|
||||
|
||||
|
||||
//#
|
||||
//# @brief Get the global description of the current action
|
||||
//# @return (string) the description string (fist line if reserved for the overview, all is for the specific display)
|
||||
//#
|
||||
public void help():
|
||||
return
|
||||
|
||||
//#
|
||||
//# @brief Add argument to the specific action
|
||||
//# @param[in,out] my_args (death.Arguments) Argument manager
|
||||
//# @param[in] section Name of the currect action
|
||||
//#
|
||||
public void add_specific_arguments(my_args, section):
|
||||
|
||||
//#
|
||||
//# @brief Execute the action required.
|
||||
//#
|
||||
//# @return error value [0 .. 50] the <0 value is reserved system ==> else, what you want.
|
||||
//# None : No error (return program out 0)
|
||||
//# -10 : ACTION is not existing
|
||||
//# -11 : ACTION execution system error
|
||||
//# -12 : ACTION Wrong parameters
|
||||
//#
|
||||
public void execute(_arguments):
|
||||
|
||||
|
||||
|
||||
|
10
src/org/atriasoft/island/model/ActionException.java
Normal file
10
src/org/atriasoft/island/model/ActionException.java
Normal file
@ -0,0 +1,10 @@
|
||||
package org.atriasoft.island.model;
|
||||
|
||||
public class ActionException extends Exception {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public ActionException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
}
|
54
src/org/atriasoft/island/model/ActionInterface.java
Normal file
54
src/org/atriasoft/island/model/ActionInterface.java
Normal file
@ -0,0 +1,54 @@
|
||||
package org.atriasoft.island.model;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.atriasoft.death.ArgElement;
|
||||
import org.atriasoft.death.Arguments;
|
||||
|
||||
public interface ActionInterface {
|
||||
/**
|
||||
* Get the global description of the current action
|
||||
* @return the description string (fist line if reserved for the overview, all is for the specific display)
|
||||
*/
|
||||
String help();
|
||||
|
||||
/**
|
||||
* @brief Add argument to the specific action
|
||||
* @param[in,out] my_args (death.Arguments) Argument manager
|
||||
* @param[in] section Name of the currect action
|
||||
*/
|
||||
default void addSpecificArguments(Arguments myArgs, String section) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the option argument are not able to check if the argument are correct or not
|
||||
* @return Have parameter without arguments
|
||||
*/
|
||||
default boolean haveUnknowArgument() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add argument to the specific action
|
||||
* @param myArgs (death.Arguments) Argument manager
|
||||
* @param section Name of the current action
|
||||
*/
|
||||
void add_specific_arguments(Arguments myArgs, String section);
|
||||
|
||||
/**
|
||||
* Execute the action required.
|
||||
* @return error value [0 .. 50] the <0 value is reserved system ==> else, what you want.
|
||||
* None : No error (return program out 0)
|
||||
* -10 : ACTION is not existing
|
||||
* -11 : ACTION execution system error
|
||||
* -12 : ACTION Wrong parameters
|
||||
*/
|
||||
public void execute(List<ArgElement> _arguments) throws ActionException;
|
||||
|
||||
String helpExample();
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
204
src/org/atriasoft/island/model/ConfigManifest.java
Normal file
204
src/org/atriasoft/island/model/ConfigManifest.java
Normal file
@ -0,0 +1,204 @@
|
||||
package org.atriasoft.island.model;
|
||||
|
||||
import java.nio.file.Path;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.ListIterator;
|
||||
|
||||
import org.atriasoft.exml.Exml;
|
||||
import org.atriasoft.exml.exception.ExmlBuilderException;
|
||||
import org.atriasoft.island.Env;
|
||||
import org.atriasoft.island.internal.Log;
|
||||
public class ConfigManifest {
|
||||
|
||||
private String repo = "";
|
||||
private String branch = "master";
|
||||
private String manifestName = "default.xml";
|
||||
private List<Volatile> volatiles = new ArrayList<>();
|
||||
private List<Link> curentLink = new ArrayList<>();
|
||||
|
||||
public ConfigManifest() {
|
||||
}
|
||||
|
||||
public String getRepo() {
|
||||
return repo;
|
||||
}
|
||||
public void setRepo(String repo) {
|
||||
this.repo = repo;
|
||||
}
|
||||
public String getBranch() {
|
||||
return branch;
|
||||
}
|
||||
public void setBranch(String branch) {
|
||||
this.branch = branch;
|
||||
}
|
||||
public String getManifestName() {
|
||||
return manifestName;
|
||||
}
|
||||
public void setManifestName(String manifestName) {
|
||||
this.manifestName = manifestName;
|
||||
}
|
||||
public List<Volatile> getVolatiles() {
|
||||
return volatiles;
|
||||
}
|
||||
public void setVolatiles(List<Volatile> volatiles) {
|
||||
this.volatiles = volatiles;
|
||||
}
|
||||
public void addVolatile(String gitAddress, String path) {
|
||||
rmVolatile(path);
|
||||
this.volatiles.add(new Volatile(gitAddress, path));
|
||||
}
|
||||
private void rmVolatile(String path) {
|
||||
ListIterator<Volatile> it = volatiles.listIterator();
|
||||
while (it.hasNext()) {
|
||||
Volatile elem = it.next();
|
||||
if (elem.path.equals(path)) {
|
||||
it.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
public List<Link> getCurentLink() {
|
||||
return curentLink;
|
||||
}
|
||||
public void setCurentLink(List<Link> curentLink) {
|
||||
this.curentLink = curentLink;
|
||||
}
|
||||
public void addLink(String source, String destination) {
|
||||
rmLink(destination);
|
||||
this.curentLink.add(new Link(source, destination));
|
||||
}
|
||||
private void rmLink(String destination) {
|
||||
ListIterator<Link> it = curentLink.listIterator();
|
||||
while (it.hasNext()) {
|
||||
Link elem = it.next();
|
||||
if (elem.destination.equals(destination)) {
|
||||
it.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static ConfigManifest load() {
|
||||
return load(Env.get_island_path_config());
|
||||
}
|
||||
public static ConfigManifest load(Path path) {
|
||||
ConfigManifest[] root = null;
|
||||
try {
|
||||
root = Exml.parse(path, ConfigManifest.class, "config-island");
|
||||
} catch (ExmlBuilderException e) {
|
||||
Log.error("Can not parse the file.1. " + path);
|
||||
e.printStackTrace();
|
||||
}
|
||||
if (root.length != 1) {
|
||||
Log.error("Can not parse the file.2. " + path);
|
||||
}
|
||||
return root[0];
|
||||
}
|
||||
public void store() {
|
||||
store(Env.get_island_path_config());
|
||||
}
|
||||
public void store(Path path) {
|
||||
Log.todo("unimplemented model...");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// public void load():
|
||||
// // transform the old format of configuration (use json now ==> simple
|
||||
// if os.path.exists(env.get_island_path_config_old()) == true:
|
||||
// self.convert_config_file()
|
||||
// if os.path.exists(env.get_island_path_config()) == false:
|
||||
// return true
|
||||
// this.volatiles = []
|
||||
// this.curentLink = []
|
||||
// with open(env.get_island_path_config()) as json_file:
|
||||
// data = json.load(json_file)
|
||||
// if "repo" in data.keys():
|
||||
// this.repo = data["repo"]
|
||||
// if "branch" in data.keys():
|
||||
// this.branch = data["branch"]
|
||||
// if "manifest_name" in data.keys():
|
||||
// this.manifestName = data["manifest_name"]
|
||||
// if "volatiles" in data.keys():
|
||||
// for elem in data["
|
||||
// self.add_volatile(elem["git_address"], elem["path"])
|
||||
// if "link" in data.keys():
|
||||
// for elem in data["link"]:
|
||||
// if "source" in elem.keys() and "destination" in elem.keys():
|
||||
// self.add_link(elem["source"], elem["destination"])
|
||||
// return true
|
||||
// return false
|
||||
//
|
||||
// public void store(self):
|
||||
// data = {}
|
||||
// data["repo"] = this.repo
|
||||
// data["branch"] = this.branch
|
||||
// data["manifest_name"] = this.manifestName
|
||||
// data["volatiles"] = this.volatiles
|
||||
// data["link"] = this.curentLink
|
||||
// with open(env.get_island_path_config(), 'w') as outfile:
|
||||
// json.dump(data, outfile, indent=4)
|
||||
// return true
|
||||
// return false
|
||||
//
|
||||
// public void add_volatile(self, git_adress, local_path):
|
||||
// for elem in this.volatiles:
|
||||
// if elem["path"] == local_path:
|
||||
// Log.error("can not have multiple local repositoty on the same PATH", crash=false)
|
||||
// return false
|
||||
// this.volatiles.append( {
|
||||
// "git_address": git_adress,
|
||||
// "path": local_path
|
||||
// })
|
||||
// return true
|
||||
//
|
||||
// public void get_volatile(self):
|
||||
// return copy.deepcopy(this.volatiles)
|
||||
//
|
||||
//
|
||||
// public void get_links(self):
|
||||
// return this.curentLink
|
||||
//
|
||||
// public void add_link(self, source, destination):
|
||||
// for elem in this.curentLink:
|
||||
// if elem["destination"] == destination:
|
||||
// Log.error("can not have multiple destination folder in link " + destination, crash=false)
|
||||
// return false
|
||||
// this.curentLink.append( {
|
||||
// "source": source,
|
||||
// "destination": destination
|
||||
// })
|
||||
// return true
|
||||
//
|
||||
// public void remove_link(self, destination):
|
||||
// for elem in this.curentLink:
|
||||
// if elem["destination"] == destination:
|
||||
// del this.curentLink[elem]
|
||||
// return
|
||||
// Log.warning("Request remove link that does not exist")
|
||||
//
|
||||
// public void clear_links(self):
|
||||
// this.curentLink = []
|
||||
//
|
||||
//
|
||||
// public void get_manifest_config(self):
|
||||
// conf = repo_config.RepoConfig()
|
||||
// base_volatile, repo_volatile = repo_config.split_repo(self.get_manifest())
|
||||
// conf.name = repo_volatile
|
||||
// conf.path = new Path("." + env.get_system_base_name(), "manifest") //env.get_island_path_manifest()
|
||||
// conf.branch = "master"
|
||||
// conf.volatile = false
|
||||
// conf.remotes = [
|
||||
// {
|
||||
// 'name': 'origin',
|
||||
// 'fetch': base_volatile,
|
||||
// 'mirror': []
|
||||
// }
|
||||
// ]
|
||||
// conf.select_remote = {
|
||||
// 'name': 'origin',
|
||||
// 'fetch': base_volatile,
|
||||
// 'sync': false,
|
||||
// 'mirror': []
|
||||
// }
|
||||
// return conf
|
||||
|
15
src/org/atriasoft/island/model/Link.java
Normal file
15
src/org/atriasoft/island/model/Link.java
Normal file
@ -0,0 +1,15 @@
|
||||
package org.atriasoft.island.model;
|
||||
|
||||
class Link {
|
||||
public String source;
|
||||
public String destination;
|
||||
public Link(String source, String destination) {
|
||||
this.source = source;
|
||||
this.destination = destination;
|
||||
}
|
||||
public Link() {
|
||||
this.source = "";
|
||||
this.destination = "";
|
||||
}
|
||||
|
||||
}
|
10
src/org/atriasoft/island/model/Volatile.java
Normal file
10
src/org/atriasoft/island/model/Volatile.java
Normal file
@ -0,0 +1,10 @@
|
||||
package org.atriasoft.island.model;
|
||||
|
||||
class Volatile {
|
||||
public String gitAddress;
|
||||
public String path;
|
||||
public Volatile(String gitAddress, String path) {
|
||||
this.gitAddress = gitAddress;
|
||||
this.path = path;
|
||||
}
|
||||
}
|
@ -1,140 +0,0 @@
|
||||
//!/usr/bin/python
|
||||
// -*- coding: utf-8 -*-
|
||||
//#
|
||||
//# @author Edouard DUPIN
|
||||
//#
|
||||
//# @copyright 2012, Edouard DUPIN, all right reserved
|
||||
//#
|
||||
//# @license MPL v2.0 (see license file)
|
||||
//#
|
||||
|
||||
// Local import
|
||||
from realog import debug
|
||||
import os
|
||||
import sys
|
||||
from . import env
|
||||
import death.Arguments as arguments
|
||||
|
||||
list_actions = []
|
||||
|
||||
__base_action_name = env.get_system_base_name() + "Action_"
|
||||
|
||||
public void init(files):
|
||||
global list_actions;
|
||||
debug.verbose("List of action for island: " + str(len(files)))
|
||||
for elem_path in files :
|
||||
debug.verbose("parse file : " + elem_path)
|
||||
base_name = os.path.basename(elem_path)
|
||||
if len(base_name) <= 3 + len(__base_action_name):
|
||||
// reject it, too small
|
||||
continue
|
||||
base_name = base_name[:-3]
|
||||
if base_name[:len(__base_action_name)] != __base_action_name:
|
||||
// reject it, wrong start file
|
||||
continue
|
||||
name_action = base_name[len(__base_action_name):]
|
||||
debug.debug(" '" + os.path.basename(elem_path)[:-3] + "' file=" + elem_path)
|
||||
list_actions.append({
|
||||
"name":name_action,
|
||||
"path":elem_path,
|
||||
})
|
||||
|
||||
//#
|
||||
//# @brief Get the wall list of action availlable
|
||||
//# @return ([string]) the list of action name
|
||||
//#
|
||||
public void get_list_of_action():
|
||||
global list_actions;
|
||||
out = []
|
||||
for elem in list_actions:
|
||||
out.append(elem["name"])
|
||||
return out
|
||||
|
||||
//#
|
||||
//# @brief Get a description of an action
|
||||
//# @param[in] action_name (string) Name of the action
|
||||
//# @param[in] function_name (string) Name of the fucntion to call
|
||||
//# @param[in] default_value (*) Renurned value of the call if function does not exist
|
||||
//# @return (*) the getted value or the default_value
|
||||
//#
|
||||
public void get_function_value(action_name, function_name, default_value = None):
|
||||
global list_actions;
|
||||
for elem in list_actions:
|
||||
if elem["name"] == action_name:
|
||||
// finish the parsing
|
||||
sys.path.append(os.path.dirname(elem["path"]))
|
||||
the_action = __import__(__base_action_name + action_name)
|
||||
if function_name not in dir(the_action):
|
||||
return default_value
|
||||
method_to_call = getattr(the_action, function_name)
|
||||
return method_to_call()
|
||||
return default_value
|
||||
|
||||
//#
|
||||
//# @brief Get the global help value of a module
|
||||
//# @param[in] action_name (string) Name of the action
|
||||
//# @return The first line of description
|
||||
//#
|
||||
public void get_action_help(action_name):
|
||||
value = get_function_value(action_name, "help", "---")
|
||||
return value.split("\n")[0]
|
||||
|
||||
|
||||
public void usage(arguments, action_name):
|
||||
color = debug.get_color_set()
|
||||
// generic argument displayed for specific action:
|
||||
//print("Specific argument for the command: '" + action_name + "'" )
|
||||
//print(" " + get_desc(action_name))
|
||||
value = get_function_value(action_name, "help")
|
||||
debug.info("Description:")
|
||||
debug.info("\t" + str(value))
|
||||
arguments.display(action_name)
|
||||
value = get_function_value(action_name, "help_example")
|
||||
if value != None:
|
||||
debug.info("Example:")
|
||||
for elem in value.split("\n"):
|
||||
debug.info("\t" + value)
|
||||
exit(0)
|
||||
|
||||
public void execute(action_name, argument_start_id):
|
||||
global list_actions;
|
||||
// TODO: Move here the check if action is availlable
|
||||
|
||||
for elem in list_actions:
|
||||
if elem["name"] != action_name:
|
||||
continue
|
||||
debug.info("action: " + str(elem));
|
||||
// finish the parsing
|
||||
sys.path.append(os.path.dirname(elem["path"]))
|
||||
the_action = __import__(__base_action_name + action_name)
|
||||
my_under_args_parser = arguments.Arguments()
|
||||
my_under_args_parser.add("h", "help", desc="Help of this action")
|
||||
|
||||
if "add_specific_arguments" in dir(the_action):
|
||||
the_action.add_specific_arguments(my_under_args_parser, elem["name"])
|
||||
have_unknow_argument = false
|
||||
if "have_unknow_argument" in dir(the_action):
|
||||
have_unknow_argument = the_action.have_unknow_argument()
|
||||
my_under_args = my_under_args_parser.parse(argument_start_id, have_unknow_argument)
|
||||
// search help if needed ==> permit to not duplicating code
|
||||
for elem in my_under_args:
|
||||
if elem.get_option_name() == "help":
|
||||
usage(my_under_args_parser, action_name)
|
||||
return 0
|
||||
// now we can execute:
|
||||
if "execute" not in dir(the_action):
|
||||
debug.error("execute is not implmented for this action ... '" + str(action_name) + "'")
|
||||
return -11
|
||||
debug.info("execute: " + action_name)
|
||||
for elem in my_under_args:
|
||||
debug.debug(" " + str(elem.get_option_name()) + "='" + str(elem.get_arg()) + "'")
|
||||
ret = the_action.execute(my_under_args)
|
||||
if ret == None:
|
||||
return 0
|
||||
if ret < 0:
|
||||
debug.info(" ==========================")
|
||||
debug.info(" == Some error occured ==")
|
||||
debug.info(" ==========================")
|
||||
return ret
|
||||
debug.error("Can not do the action...")
|
||||
return -10
|
@ -1,88 +0,0 @@
|
||||
//!/usr/bin/python
|
||||
// -*- coding: utf-8 -*-
|
||||
//#
|
||||
//# @author Edouard DUPIN
|
||||
//#
|
||||
//# @copyright 2012, Edouard DUPIN, all right reserved
|
||||
//#
|
||||
//# @license MPL v2.0 (see license file)
|
||||
//#
|
||||
|
||||
from realog import debug
|
||||
from island import tools
|
||||
from island import env
|
||||
from island import config
|
||||
from island import multiprocess
|
||||
from island import manifest
|
||||
from island import commands
|
||||
import status
|
||||
import os
|
||||
|
||||
|
||||
//#
|
||||
//# @brief Get the global description of the current action
|
||||
//# @return (string) the description string (fist line if reserved for the overview, all is for the specific display)
|
||||
//#
|
||||
public void help():
|
||||
return "Ckeckout a specific branch in all repository"
|
||||
|
||||
//#
|
||||
//# @brief Add argument to the specific action
|
||||
//# @param[in,out] my_args (death.Arguments) Argument manager
|
||||
//# @param[in] section Name of the currect action
|
||||
//#
|
||||
public void add_specific_arguments(my_args, section):
|
||||
my_args.add("r", "remote", haveParam=true, desc="Name of the remote server")
|
||||
my_args.add_arg("branch", optionnal=false, desc="Branch to checkout (if '__TAG__' ==> checkout specific repository tags)")
|
||||
|
||||
//#
|
||||
//# @brief Execute the action required.
|
||||
//#
|
||||
//# @return error value [0 .. 50] the <0 value is reserved system ==> else, what you want.
|
||||
//# None : No error (return program out 0)
|
||||
//# -10 : ACTION is not existing
|
||||
//# -11 : ACTION execution system error
|
||||
//# -12 : ACTION Wrong parameters
|
||||
//#
|
||||
public void execute(_arguments):
|
||||
argument_remote_name = ""
|
||||
branch_to_checkout = ""
|
||||
for elem in _arguments:
|
||||
if elem.get_option_name() == "remote":
|
||||
debug.info("find remote name: '" + elem.get_arg() + "'")
|
||||
argument_remote_name = elem.get_arg()
|
||||
elif elem.get_option_name() == "branch":
|
||||
branch_to_checkout = elem.get_arg()
|
||||
else:
|
||||
debug.error("Wrong argument: '" + elem.get_option_name() + "' '" + elem.get_arg() + "'")
|
||||
|
||||
// check system is OK
|
||||
manifest.check_lutin_is_init()
|
||||
|
||||
configuration = config.get_unique_config()
|
||||
|
||||
// update the local configuration file:
|
||||
configuration.set_branch(branch_to_checkout)
|
||||
configuration.store()
|
||||
|
||||
file_source_manifest = new Path(env.get_island_path_manifest(), configuration.get_manifest_name())
|
||||
if os.path.exists(file_source_manifest) == false:
|
||||
debug.error("Missing manifest file : '" + str(file_source_manifest) + "'")
|
||||
|
||||
mani = manifest.Manifest(file_source_manifest)
|
||||
|
||||
all_project = mani.get_all_configs()
|
||||
debug.info("checkout of: " + str(len(all_project)) + " projects")
|
||||
id_element = 0
|
||||
have_error = false
|
||||
for elem in all_project:
|
||||
id_element += 1
|
||||
base_display = tools.get_list_base_display(id_element, len(all_project), elem)
|
||||
if status.checkout_elem(elem, argument_remote_name, branch_to_checkout, base_display) == false:
|
||||
have_error = true
|
||||
if have_error == true:
|
||||
return env.ret_action_fail
|
||||
|
||||
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
||||
//# @license MPL v2.0 (see license file)
|
||||
//#
|
||||
|
||||
from realog import debug
|
||||
from realog import Log
|
||||
from island import tools
|
||||
from island import env
|
||||
from island import multiprocess
|
||||
@ -44,8 +44,8 @@ public void have_unknow_argument():
|
||||
public void execute(_arguments):
|
||||
cmd = ""
|
||||
for elem in _arguments:
|
||||
debug.info("Get data element: " + str(elem.get_arg()))
|
||||
cmd += elem.get_arg() + " "
|
||||
Log.info("Get data element: " + str(elem.getArg()))
|
||||
cmd += elem.getArg() + " "
|
||||
|
||||
// check system is OK
|
||||
manifest.check_lutin_is_init()
|
||||
@ -54,30 +54,30 @@ public void execute(_arguments):
|
||||
|
||||
file_source_manifest = new Path(env.get_island_path_manifest(), configuration.get_manifest_name())
|
||||
if os.path.exists(file_source_manifest) == false:
|
||||
debug.error("Missing manifest file : '" + str(file_source_manifest) + "'")
|
||||
Log.error("Missing manifest file : '" + str(file_source_manifest) + "'")
|
||||
|
||||
mani = manifest.Manifest(file_source_manifest)
|
||||
|
||||
all_project = mani.get_all_configs()
|
||||
debug.info("status of: " + str(len(all_project)) + " projects")
|
||||
Log.info("status of: " + str(len(all_project)) + " projects")
|
||||
id_element = 0
|
||||
for elem in all_project:
|
||||
debug.info("------------------------------------------")
|
||||
Log.info("------------------------------------------")
|
||||
id_element += 1
|
||||
base_display = tools.get_list_base_display(id_element, len(all_project), elem)
|
||||
debug.info("execute command : " + base_display)
|
||||
Log.info("execute command : " + base_display)
|
||||
tools.wait_for_server_if_needed()
|
||||
//debug.debug("elem : " + str(elem))
|
||||
//Log.debug("elem : " + str(elem))
|
||||
git_repo_path = new Path(env.get_island_root_path(), elem.path)
|
||||
if os.path.exists(git_repo_path) == false:
|
||||
debug.info("" + base_display + "\r\t\t\t\t\t\t\t\t\t" + " (not download)")
|
||||
Log.info("" + base_display + "\r\t\t\t\t\t\t\t\t\t" + " (not download)")
|
||||
continue
|
||||
|
||||
debug.verbose("execute : " + cmd)
|
||||
Log.verbose("execute : " + cmd)
|
||||
ret = multiprocess.run_command(cmd, cwd=git_repo_path)
|
||||
if ret[0] == 0:
|
||||
debug.info("ret=" + ret[1])
|
||||
debug.info("err=" + ret[2])
|
||||
Log.info("ret=" + ret[1])
|
||||
Log.info("err=" + ret[2])
|
||||
else:
|
||||
debug.info("Execution ERROR")
|
||||
Log.info("Execution ERROR")
|
||||
|
@ -8,7 +8,7 @@
|
||||
//# @license MPL v2.0 (see license file)
|
||||
//#
|
||||
|
||||
from realog import debug
|
||||
from realog import Log
|
||||
from island import tools
|
||||
from island import env
|
||||
from island import config
|
||||
@ -49,15 +49,15 @@ public void execute(_arguments):
|
||||
argument_amend = ""
|
||||
argument_all = ""
|
||||
for elem in _arguments:
|
||||
if elem.get_option_name() == "message":
|
||||
debug.info("find message: '" + elem.get_arg() + "'")
|
||||
argument_message = " --message \"" + elem.get_arg() + "\" ";
|
||||
elif elem.get_option_name() == "all":
|
||||
if elem.getOptionName() == "message":
|
||||
Log.info("find message: '" + elem.getArg() + "'")
|
||||
argument_message = " --message \"" + elem.getArg() + "\" ";
|
||||
} else if elem.getOptionName() == "all":
|
||||
argument_all = " --all "
|
||||
elif elem.get_option_name() == "amend":
|
||||
} else if elem.getOptionName() == "amend":
|
||||
argument_amend = " --amend "
|
||||
else:
|
||||
debug.error("Wrong argument: '" + elem.get_option_name() + "' '" + elem.get_arg() + "'")
|
||||
Log.error("Wrong argument: '" + elem.getOptionName() + "' '" + elem.getArg() + "'")
|
||||
|
||||
// check system is OK
|
||||
manifest.check_lutin_is_init()
|
||||
@ -66,30 +66,30 @@ public void execute(_arguments):
|
||||
|
||||
file_source_manifest = new Path(env.get_island_path_manifest(), configuration.get_manifest_name())
|
||||
if os.path.exists(file_source_manifest) == false:
|
||||
debug.error("Missing manifest file : '" + str(file_source_manifest) + "'")
|
||||
Log.error("Missing manifest file : '" + str(file_source_manifest) + "'")
|
||||
mani = manifest.Manifest(file_source_manifest)
|
||||
|
||||
all_project = mani.get_all_configs()
|
||||
debug.info("commit : " + str(len(all_project)) + " projects")
|
||||
Log.info("commit : " + str(len(all_project)) + " projects")
|
||||
id_element = 0
|
||||
for elem in all_project:
|
||||
id_element += 1
|
||||
base_display = tools.get_list_base_display(id_element, len(all_project), elem)
|
||||
debug.info("commit: " + base_display)
|
||||
Log.info("commit: " + base_display)
|
||||
git_repo_path = new Path(env.get_island_root_path(), elem.path)
|
||||
if os.path.exists(git_repo_path) == false:
|
||||
debug.error("can not commit project that not exist")
|
||||
Log.error("can not commit project that not exist")
|
||||
continue
|
||||
|
||||
if os.path.exists(new Path(git_repo_path,".git")) == false:
|
||||
// path already exist but it is not used to as a git repo ==> this is an error
|
||||
debug.warning("path '" + git_repo_path + "' is already existing but not used for a git repository. Clean it and restart")
|
||||
Log.warning("path '" + git_repo_path + "' is already existing but not used for a git repository. Clean it and restart")
|
||||
continue;
|
||||
|
||||
// simply update the repository ...
|
||||
debug.verbose("commit in project:")
|
||||
Log.verbose("commit in project:")
|
||||
// fetch the repository
|
||||
cmd = "git commit " + argument_amend + argument_all + argument_message
|
||||
debug.debug("execute : " + cmd)
|
||||
Log.debug("execute : " + cmd)
|
||||
multiprocess.run_command_direct(cmd, cwd=git_repo_path)
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
||||
//# @license MPL v2.0 (see license file)
|
||||
//#
|
||||
|
||||
from realog import debug
|
||||
from realog import Log
|
||||
from island import tools
|
||||
from island import env
|
||||
from island import config
|
||||
@ -45,11 +45,11 @@ public void add_specific_arguments(my_args, section):
|
||||
public void execute(_arguments):
|
||||
argument_remote_name = ""
|
||||
for elem in _arguments:
|
||||
if elem.get_option_name() == "remote":
|
||||
debug.info("find remote name: '" + elem.get_arg() + "'")
|
||||
argument_remote_name = elem.get_arg()
|
||||
if elem.getOptionName() == "remote":
|
||||
Log.info("find remote name: '" + elem.getArg() + "'")
|
||||
argument_remote_name = elem.getArg()
|
||||
else:
|
||||
debug.error("Wrong argument: '" + elem.get_option_name() + "' '" + elem.get_arg() + "'")
|
||||
Log.error("Wrong argument: '" + elem.getOptionName() + "' '" + elem.getArg() + "'")
|
||||
|
||||
// check system is OK
|
||||
manifest.check_lutin_is_init()
|
||||
@ -58,14 +58,14 @@ public void execute(_arguments):
|
||||
|
||||
file_source_manifest = new Path(env.get_island_path_manifest(), configuration.get_manifest_name())
|
||||
if os.path.exists(file_source_manifest) == false:
|
||||
debug.error("Missing manifest file : '" + str(file_source_manifest) + "'")
|
||||
Log.error("Missing manifest file : '" + str(file_source_manifest) + "'")
|
||||
mani = manifest.Manifest(file_source_manifest)
|
||||
|
||||
destination_branch = mani.deliver_master
|
||||
source_branch = mani.deliver_develop
|
||||
|
||||
all_project = mani.get_all_configs()
|
||||
debug.info("fetch : " + str(len(all_project)) + " projects")
|
||||
Log.info("fetch : " + str(len(all_project)) + " projects")
|
||||
id_element = 0
|
||||
for elem in all_project:
|
||||
id_element += 1
|
||||
@ -73,7 +73,7 @@ public void execute(_arguments):
|
||||
if argument_remote_name == "":
|
||||
argument_remote_name = elem.select_remote["name"]
|
||||
base_display = tools.get_list_base_display(id_element, len(all_project), elem)
|
||||
debug.info("deliver-push: " + base_display)
|
||||
Log.info("deliver-push: " + base_display)
|
||||
tools.wait_for_server_if_needed()
|
||||
status.deliver_push(elem, argument_remote_name, destination_branch, source_branch, base_display)
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
||||
//# @license MPL v2.0 (see license file)
|
||||
//#
|
||||
|
||||
from realog import debug
|
||||
from realog import Log
|
||||
from island import tools
|
||||
from island import env
|
||||
from island import multiprocess
|
||||
@ -48,14 +48,14 @@ public void execute(_arguments):
|
||||
argument_from = None
|
||||
argument_to = None
|
||||
for elem in _arguments:
|
||||
if elem.get_option_name() == "from":
|
||||
debug.info("find source branch name: '" + elem.get_arg() + "'")
|
||||
argument_from = elem.get_arg()
|
||||
elif elem.get_option_name() == "to":
|
||||
debug.info("find destination branch name: '" + elem.get_arg() + "'")
|
||||
argument_to = elem.get_arg()
|
||||
if elem.getOptionName() == "from":
|
||||
Log.info("find source branch name: '" + elem.getArg() + "'")
|
||||
argument_from = elem.getArg()
|
||||
} else if elem.getOptionName() == "to":
|
||||
Log.info("find destination branch name: '" + elem.getArg() + "'")
|
||||
argument_to = elem.getArg()
|
||||
else:
|
||||
debug.error("Wrong argument: '" + elem.get_option_name() + "' '" + elem.get_arg() + "'")
|
||||
Log.error("Wrong argument: '" + elem.getOptionName() + "' '" + elem.getArg() + "'")
|
||||
|
||||
// check system is OK
|
||||
manifest.check_lutin_is_init()
|
||||
@ -64,7 +64,7 @@ public void execute(_arguments):
|
||||
|
||||
file_source_manifest = new Path(env.get_island_path_manifest(), configuration.get_manifest_name())
|
||||
if os.path.exists(file_source_manifest) == false:
|
||||
debug.error("Missing manifest file : '" + str(file_source_manifest) + "'")
|
||||
Log.error("Missing manifest file : '" + str(file_source_manifest) + "'")
|
||||
|
||||
mani = manifest.Manifest(file_source_manifest)
|
||||
|
||||
@ -76,33 +76,33 @@ public void execute(_arguments):
|
||||
destination_branch = argument_to
|
||||
|
||||
all_project = mani.get_all_configs()
|
||||
debug.info("Check if all project are on master: " + str(len(all_project)) + " projects")
|
||||
Log.info("Check if all project are on master: " + str(len(all_project)) + " projects")
|
||||
id_element = 0
|
||||
deliver_availlable = true
|
||||
for elem in all_project:
|
||||
id_element += 1
|
||||
base_display = tools.get_list_base_display(id_element, len(all_project), elem)
|
||||
debug.verbose("deliver-ckeck: " + base_display)
|
||||
Log.verbose("deliver-ckeck: " + base_display)
|
||||
if status.deliver_check(elem, argument_remote_name, id_element, base_display, source_branch, destination_branch) == false:
|
||||
deliver_availlable = false
|
||||
if deliver_availlable == false:
|
||||
debug.error("deliver-ckeck: Correct the warning to validate the Merge")
|
||||
Log.error("deliver-ckeck: Correct the warning to validate the Merge")
|
||||
return
|
||||
debug.info("deliver-ckeck: ==> All is OK")
|
||||
Log.info("deliver-ckeck: ==> All is OK")
|
||||
id_element = 0
|
||||
for elem in all_project:
|
||||
id_element += 1
|
||||
base_display = tools.get_list_base_display(id_element, len(all_project), elem)
|
||||
debug.info("deliver: ========================================================================")
|
||||
debug.info("deliver: == " + base_display)
|
||||
debug.info("deliver: ========================================================================")
|
||||
Log.info("deliver: ========================================================================")
|
||||
Log.info("deliver: == " + base_display)
|
||||
Log.info("deliver: ========================================================================")
|
||||
|
||||
git_repo_path = new Path(env.get_island_root_path(), elem.path)
|
||||
// Check the validity of the version,
|
||||
version_description, add_in_version_management = status.get_current_version_repo(git_repo_path)
|
||||
if version_description == None:
|
||||
continue
|
||||
debug.info("deliver: ==> version: " + str(version_description))
|
||||
Log.info("deliver: ==> version: " + str(version_description))
|
||||
|
||||
// go to the dev branch
|
||||
select_branch = commands.get_current_branch(git_repo_path)
|
||||
@ -112,7 +112,7 @@ public void execute(_arguments):
|
||||
|
||||
// create new repo tag
|
||||
new_version_description = status.create_new_version_repo(git_repo_path, version_description, add_in_version_management, source_branch, destination_branch)
|
||||
debug.info("new version: " + str(new_version_description))
|
||||
Log.info("new version: " + str(new_version_description))
|
||||
if new_version_description == None:
|
||||
continue
|
||||
// merge branch
|
||||
|
@ -8,7 +8,7 @@
|
||||
//# @license MPL v2.0 (see license file)
|
||||
//#
|
||||
|
||||
from realog import debug
|
||||
from realog import Log
|
||||
from island import tools
|
||||
from island import env
|
||||
from island import config
|
||||
@ -45,26 +45,26 @@ public void add_specific_arguments(my_args, section):
|
||||
public void execute(_arguments):
|
||||
argument_remote_name = ""
|
||||
for elem in _arguments:
|
||||
if elem.get_option_name() == "remote":
|
||||
debug.info("find remote name: '" + elem.get_arg() + "'")
|
||||
argument_remote_name = elem.get_arg()
|
||||
if elem.getOptionName() == "remote":
|
||||
Log.info("find remote name: '" + elem.getArg() + "'")
|
||||
argument_remote_name = elem.getArg()
|
||||
else:
|
||||
debug.error("Wrong argument: '" + elem.get_option_name() + "' '" + elem.get_arg() + "'")
|
||||
Log.error("Wrong argument: '" + elem.getOptionName() + "' '" + elem.getArg() + "'")
|
||||
|
||||
// check system is OK
|
||||
manifest.check_lutin_is_init()
|
||||
|
||||
debug.info("fetch manifest : '" + str(env.get_island_path_manifest()) + "'")
|
||||
Log.info("fetch manifest : '" + str(env.get_island_path_manifest()) + "'")
|
||||
commands.fetch(env.get_island_path_manifest(), "origin")
|
||||
|
||||
configuration = config.get_unique_config()
|
||||
file_source_manifest = new Path(env.get_island_path_manifest(), configuration.get_manifest_name())
|
||||
if os.path.exists(file_source_manifest) == false:
|
||||
debug.error("Missing manifest file : '" + str(file_source_manifest) + "'")
|
||||
Log.error("Missing manifest file : '" + str(file_source_manifest) + "'")
|
||||
mani = manifest.Manifest(file_source_manifest)
|
||||
|
||||
all_project = mani.get_all_configs()
|
||||
debug.info("fetch : " + str(len(all_project)) + " projects")
|
||||
Log.info("fetch : " + str(len(all_project)) + " projects")
|
||||
id_element = 0
|
||||
for elem in all_project:
|
||||
id_element += 1
|
||||
@ -73,20 +73,20 @@ public void execute(_arguments):
|
||||
argument_remote_name = elem.select_remote["name"]
|
||||
|
||||
base_display = tools.get_list_base_display(id_element, len(all_project), elem)
|
||||
debug.info("fetch: " + base_display)
|
||||
Log.info("fetch: " + base_display)
|
||||
tools.wait_for_server_if_needed()
|
||||
//debug.debug("elem : " + str(elem))
|
||||
//Log.debug("elem : " + str(elem))
|
||||
git_repo_path = new Path(env.get_island_root_path(), elem.path)
|
||||
if os.path.exists(git_repo_path) == false:
|
||||
debug.error("can not fetch project that not exist")
|
||||
Log.error("can not fetch project that not exist")
|
||||
continue
|
||||
|
||||
if os.path.exists(new Path(git_repo_path,".git")) == false:
|
||||
// path already exist but it is not used to as a git repo ==> this is an error
|
||||
debug.error("path '" + git_repo_path + "' is already existing but not used for a git repository. Clean it and restart")
|
||||
Log.error("path '" + git_repo_path + "' is already existing but not used for a git repository. Clean it and restart")
|
||||
|
||||
// simply update the repository ...
|
||||
debug.verbose("Fetching project: ")
|
||||
Log.verbose("Fetching project: ")
|
||||
|
||||
commands.fetch(git_repo_path, argument_remote_name)
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
||||
//# @license MPL v2.0 (see license file)
|
||||
//#
|
||||
|
||||
from realog import debug
|
||||
from realog import Log
|
||||
from island import tools
|
||||
from island import env
|
||||
from island import config
|
||||
@ -44,35 +44,35 @@ public void add_specific_arguments(my_args, section):
|
||||
//#
|
||||
public void execute(_arguments):
|
||||
if len(_arguments) == 0:
|
||||
debug.error("Missing argument to execute the current action ...")
|
||||
Log.error("Missing argument to execute the current action ...")
|
||||
|
||||
// the configuration availlable:
|
||||
branch = "master"
|
||||
manifest_name = "default.xml"
|
||||
address_manifest = ""
|
||||
for elem in _arguments:
|
||||
if elem.get_option_name() == "branch":
|
||||
debug.info("find branch name: '" + elem.get_arg() + "'")
|
||||
branch = elem.get_arg()
|
||||
elif elem.get_option_name() == "manifest":
|
||||
debug.info("find mmanifest name: '" + elem.get_arg() + "'")
|
||||
manifest_name = elem.get_arg()
|
||||
elif elem.get_option_name() == "":
|
||||
if elem.getOptionName() == "branch":
|
||||
Log.info("find branch name: '" + elem.getArg() + "'")
|
||||
branch = elem.getArg()
|
||||
} else if elem.getOptionName() == "manifest":
|
||||
Log.info("find mmanifest name: '" + elem.getArg() + "'")
|
||||
manifest_name = elem.getArg()
|
||||
} else if elem.getOptionName() == "":
|
||||
if address_manifest != "":
|
||||
debug.error("Manifest adress already set : '" + address_manifest + "' !!! '" + elem.get_arg() + "'")
|
||||
address_manifest = elem.get_arg()
|
||||
Log.error("Manifest adress already set : '" + address_manifest + "' !!! '" + elem.getArg() + "'")
|
||||
address_manifest = elem.getArg()
|
||||
else:
|
||||
debug.error("Wrong argument: '" + elem.get_option_name() + "' '" + elem.get_arg() + "'")
|
||||
Log.error("Wrong argument: '" + elem.getOptionName() + "' '" + elem.getArg() + "'")
|
||||
|
||||
if address_manifest == "":
|
||||
debug.error("Init: Missing manifest name")
|
||||
Log.error("Init: Missing manifest name")
|
||||
|
||||
debug.info("Init with: '" + address_manifest + "' branch='" + branch + "' name of manifest='" + manifest_name + "'")
|
||||
Log.info("Init with: '" + address_manifest + "' branch='" + branch + "' name of manifest='" + manifest_name + "'")
|
||||
|
||||
|
||||
// check if .XXX exist (create it if needed)
|
||||
if manifest.is_lutin_init() == true:
|
||||
debug.error("System already init: path already exist: '" + str(env.get_island_path()) + "'")
|
||||
Log.error("System already init: path already exist: '" + str(env.get_island_path()) + "'")
|
||||
|
||||
tools.create_directory(env.get_island_path())
|
||||
// check if the git of the manifest if availlable
|
||||
@ -84,15 +84,15 @@ public void execute(_arguments):
|
||||
conf.set_manifest_name(manifest_name)
|
||||
conf.store()
|
||||
|
||||
debug.info("Clone the manifest")
|
||||
Log.info("Clone the manifest")
|
||||
ret_values = commands.clone(env.get_island_path_manifest(), address_manifest, branch_name=branch)
|
||||
|
||||
if ret_values == false:
|
||||
debug.info("'" + str(ret_values) + "'")
|
||||
debug.error("Init does not work")
|
||||
Log.info("'" + str(ret_values) + "'")
|
||||
Log.error("Init does not work")
|
||||
return false
|
||||
|
||||
debug.info("Init done correctly ...")
|
||||
Log.info("Init done correctly ...")
|
||||
|
||||
return None
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
||||
//# @license MPL v2.0 (see license file)
|
||||
//#
|
||||
|
||||
from realog import debug
|
||||
from realog import Log
|
||||
from island import tools
|
||||
from island import env
|
||||
from island import config
|
||||
@ -48,13 +48,13 @@ public void execute(_arguments):
|
||||
argument_remote_name = ""
|
||||
branch_to_checkout = ""
|
||||
for elem in _arguments:
|
||||
if elem.get_option_name() == "remote":
|
||||
debug.info("find remote name: '" + elem.get_arg() + "'")
|
||||
argument_remote_name = elem.get_arg()
|
||||
elif elem.get_option_name() == "branch":
|
||||
branch_to_checkout = elem.get_arg()
|
||||
if elem.getOptionName() == "remote":
|
||||
Log.info("find remote name: '" + elem.getArg() + "'")
|
||||
argument_remote_name = elem.getArg()
|
||||
} else if elem.getOptionName() == "branch":
|
||||
branch_to_checkout = elem.getArg()
|
||||
else:
|
||||
debug.error("Wrong argument: '" + elem.get_option_name() + "' '" + elem.get_arg() + "'")
|
||||
Log.error("Wrong argument: '" + elem.getOptionName() + "' '" + elem.getArg() + "'")
|
||||
|
||||
// check system is OK
|
||||
manifest.check_lutin_is_init()
|
||||
|
@ -8,7 +8,7 @@
|
||||
//# @license MPL v2.0 (see license file)
|
||||
//#
|
||||
|
||||
from realog import debug
|
||||
from realog import Log
|
||||
from island import tools
|
||||
from island import env
|
||||
from island import config
|
||||
@ -45,7 +45,7 @@ public void add_specific_arguments(my_args, section):
|
||||
//#
|
||||
public void execute(_arguments):
|
||||
for elem in _arguments:
|
||||
debug.error("pull Wrong argument: '" + elem.get_option_name() + "' '" + elem.get_arg() + "'")
|
||||
Log.error("pull Wrong argument: '" + elem.getOptionName() + "' '" + elem.getArg() + "'")
|
||||
|
||||
// check system is OK
|
||||
manifest.check_lutin_is_init()
|
||||
@ -54,7 +54,7 @@ public void execute(_arguments):
|
||||
|
||||
file_source_manifest = new Path(env.get_island_path_manifest(), configuration.get_manifest_name())
|
||||
if os.path.exists(file_source_manifest) == false:
|
||||
debug.error("Missing manifest file : '" + str(file_source_manifest) + "'")
|
||||
Log.error("Missing manifest file : '" + str(file_source_manifest) + "'")
|
||||
|
||||
|
||||
elem = configuration.get_manifest_config()
|
||||
|
@ -8,7 +8,7 @@
|
||||
//# @license MPL v2.0 (see license file)
|
||||
//#
|
||||
|
||||
from realog import debug
|
||||
from realog import Log
|
||||
from island import tools
|
||||
from island import env
|
||||
from island import config
|
||||
@ -49,7 +49,7 @@ public void add_specific_arguments(my_args, section):
|
||||
public void execute(_arguments):
|
||||
argument_remote_name = ""
|
||||
for elem in _arguments:
|
||||
debug.error("pull Wrong argument: '" + elem.get_option_name() + "' '" + elem.get_arg() + "'")
|
||||
Log.error("pull Wrong argument: '" + elem.getOptionName() + "' '" + elem.getArg() + "'")
|
||||
|
||||
// check system is OK
|
||||
manifest.check_lutin_is_init()
|
||||
@ -58,7 +58,7 @@ public void execute(_arguments):
|
||||
|
||||
file_source_manifest = new Path(env.get_island_path_manifest(), configuration.get_manifest_name())
|
||||
if os.path.exists(file_source_manifest) == false:
|
||||
debug.error("Missing manifest file : '" + str(file_source_manifest) + "'")
|
||||
Log.error("Missing manifest file : '" + str(file_source_manifest) + "'")
|
||||
|
||||
elem = configuration.get_manifest_config()
|
||||
|
||||
@ -69,31 +69,31 @@ public void execute(_arguments):
|
||||
|
||||
// Check the manifest is up to date ...
|
||||
base_display = tools.get_list_base_display(0, 0, elem)
|
||||
debug.verbose("deliver-ckeck: " + base_display)
|
||||
Log.verbose("deliver-ckeck: " + base_display)
|
||||
if status.deliver_check(elem, argument_remote_name, 0, base_display, source_branch, destination_branch) == false:
|
||||
debug.error("Can not deliver a MANIFEST that is not ready to merge", crash=false)
|
||||
Log.error("Can not deliver a MANIFEST that is not ready to merge", crash=false)
|
||||
return env.ret_action_fail
|
||||
|
||||
|
||||
all_tags = check_all_tags(mani)
|
||||
if all_tags == None:
|
||||
debug.error("Need the Tags are set in sub-repository", crash=false)
|
||||
Log.error("Need the Tags are set in sub-repository", crash=false)
|
||||
return env.ret_action_fail
|
||||
|
||||
|
||||
// deliver the manifest (if Needed ...)
|
||||
base_display = tools.get_list_base_display(0, 0, elem)
|
||||
|
||||
debug.info("manifest-deliver: ========================================================================")
|
||||
debug.info("manifest-deliver: == " + base_display)
|
||||
debug.info("manifest-deliver: ========================================================================")
|
||||
Log.info("manifest-deliver: ========================================================================")
|
||||
Log.info("manifest-deliver: == " + base_display)
|
||||
Log.info("manifest-deliver: ========================================================================")
|
||||
|
||||
git_repo_path = new Path(env.get_island_root_path(), elem.path)
|
||||
// Check the validity of the version,
|
||||
version_description, add_in_version_management = status.get_current_version_repo(git_repo_path)
|
||||
if version_description == None:
|
||||
return env.ret_action_fail
|
||||
debug.info("manifest-deliver: ==> version: " + str(version_description))
|
||||
Log.info("manifest-deliver: ==> version: " + str(version_description))
|
||||
|
||||
// go to the dev branch
|
||||
select_branch = commands.get_current_branch(git_repo_path)
|
||||
@ -101,7 +101,7 @@ public void execute(_arguments):
|
||||
|
||||
// create new repo tag
|
||||
new_version_description = status.create_new_version_repo(git_repo_path, version_description, add_in_version_management, source_branch, destination_branch)
|
||||
debug.info("new version: " + str(new_version_description))
|
||||
Log.info("new version: " + str(new_version_description))
|
||||
if new_version_description == None:
|
||||
return
|
||||
// merge branch
|
||||
@ -130,13 +130,13 @@ public void execute(_arguments):
|
||||
commands.checkout(git_repo_path, destination_branch)
|
||||
|
||||
|
||||
debug.info("manifest-deliver: ==> DONE")
|
||||
Log.info("manifest-deliver: ==> DONE")
|
||||
|
||||
|
||||
|
||||
public void check_all_tags(mani):
|
||||
all_project = mani.get_all_configs()
|
||||
debug.info("Check all: " + str(len(all_project)) + " projects have a current tag ...")
|
||||
Log.info("Check all: " + str(len(all_project)) + " projects have a current tag ...")
|
||||
id_element = 0
|
||||
check_have_error = false
|
||||
list_tags = []
|
||||
@ -144,16 +144,16 @@ public void check_all_tags(mani):
|
||||
id_element += 1
|
||||
base_display = tools.get_list_base_display(id_element, len(all_project), elem)
|
||||
if elem.volatile == true:
|
||||
debug.info(base_display + "\r\t\t\t\t\t\t\t\t\t" + " (Not Managed)")
|
||||
Log.info(base_display + "\r\t\t\t\t\t\t\t\t\t" + " (Not Managed)")
|
||||
continue
|
||||
tags_comment = ""
|
||||
git_repo_path = new Path(env.get_island_root_path(), elem.path)
|
||||
if os.path.exists(git_repo_path) == false:
|
||||
debug.error(base_display + volatile + "\r\t\t\t\t\t\t\t\t\t" + " (not download)", crash=false)
|
||||
Log.error(base_display + volatile + "\r\t\t\t\t\t\t\t\t\t" + " (not download)", crash=false)
|
||||
check_have_error = true
|
||||
continue
|
||||
ret_current_tags = commands.get_tags_current(git_repo_path)
|
||||
debug.verbose("tags found: " + str(ret_current_tags))
|
||||
Log.verbose("tags found: " + str(ret_current_tags))
|
||||
if len(ret_current_tags) == 0:
|
||||
list_tags.append({
|
||||
"name":elem.name,
|
||||
@ -169,11 +169,11 @@ public void check_all_tags(mani):
|
||||
tags_comment += ","
|
||||
tags_comment += elem_tag
|
||||
if len(ret_current_tags) == 0:
|
||||
debug.error(base_display + "\r\t\t\t\t\t\t\t\t\t" + " (NO TAG DETECTED)", crash=false)
|
||||
Log.error(base_display + "\r\t\t\t\t\t\t\t\t\t" + " (NO TAG DETECTED)", crash=false)
|
||||
check_have_error = true
|
||||
continue
|
||||
else:
|
||||
debug.info(base_display + "\r\t\t\t\t\t\t\t\t\t" + " " + tags_comment)
|
||||
Log.info(base_display + "\r\t\t\t\t\t\t\t\t\t" + " " + tags_comment)
|
||||
if check_have_error == true:
|
||||
return None
|
||||
return list_tags
|
||||
|
@ -8,7 +8,7 @@
|
||||
//# @license MPL v2.0 (see license file)
|
||||
//#
|
||||
|
||||
from realog import debug
|
||||
from realog import Log
|
||||
from island import tools
|
||||
from island import env
|
||||
from island import config
|
||||
@ -47,10 +47,10 @@ public void execute(_arguments):
|
||||
argument_remote_name = ""
|
||||
argument_display_tag = false
|
||||
for elem in _arguments:
|
||||
if elem.get_option_name() == "tags":
|
||||
if elem.getOptionName() == "tags":
|
||||
argument_display_tag = true
|
||||
else:
|
||||
debug.error("Wrong argument: '" + elem.get_option_name() + "' '" + elem.get_arg() + "'")
|
||||
Log.error("Wrong argument: '" + elem.getOptionName() + "' '" + elem.getArg() + "'")
|
||||
|
||||
// check system is OK
|
||||
manifest.check_lutin_is_init()
|
||||
|
@ -8,7 +8,7 @@
|
||||
//# @license MPL v2.0 (see license file)
|
||||
//#
|
||||
|
||||
from realog import debug
|
||||
from realog import Log
|
||||
from island import tools
|
||||
from island import env
|
||||
from island import config
|
||||
@ -44,14 +44,14 @@ public void add_specific_arguments(my_args, section):
|
||||
//#
|
||||
public void execute(_arguments):
|
||||
for elem in _arguments:
|
||||
debug.error("pull Wrong argument: '" + elem.get_option_name() + "' '" + elem.get_arg() + "'")
|
||||
Log.error("pull Wrong argument: '" + elem.getOptionName() + "' '" + elem.getArg() + "'")
|
||||
|
||||
// check system is OK
|
||||
manifest.check_lutin_is_init()
|
||||
|
||||
configuration = config.get_unique_config()
|
||||
|
||||
debug.info("update manifest : '" + str(env.get_island_path_manifest()) + "'")
|
||||
Log.info("update manifest : '" + str(env.get_island_path_manifest()) + "'")
|
||||
is_modify_manifest = commands.check_repository_is_modify(env.get_island_path_manifest())
|
||||
if is_modify_manifest == true:
|
||||
commands.fetch(env.get_island_path_manifest(), "origin")
|
||||
|
@ -8,7 +8,7 @@
|
||||
//# @license MPL v2.0 (see license file)
|
||||
//#
|
||||
|
||||
from realog import debug
|
||||
from realog import Log
|
||||
from island import tools
|
||||
from island import env
|
||||
from island import config
|
||||
@ -45,11 +45,11 @@ public void add_specific_arguments(_my_args, _section):
|
||||
public void execute(_arguments):
|
||||
argument_remote_name = ""
|
||||
for elem in _arguments:
|
||||
if elem.get_option_name() == "remote":
|
||||
debug.info("find remote name: '" + elem.get_arg() + "'")
|
||||
argument_remote_name = elem.get_arg()
|
||||
if elem.getOptionName() == "remote":
|
||||
Log.info("find remote name: '" + elem.getArg() + "'")
|
||||
argument_remote_name = elem.getArg()
|
||||
else:
|
||||
debug.error("Wrong argument: '" + elem.get_option_name() + "' '" + elem.get_arg() + "'")
|
||||
Log.error("Wrong argument: '" + elem.getOptionName() + "' '" + elem.getArg() + "'")
|
||||
|
||||
// check system is OK
|
||||
manifest.check_lutin_is_init()
|
||||
@ -58,31 +58,31 @@ public void execute(_arguments):
|
||||
|
||||
file_source_manifest = new Path(env.get_island_path_manifest(), configuration.get_manifest_name())
|
||||
if os.path.exists(file_source_manifest) == false:
|
||||
debug.error("Missing manifest file : '" + str(file_source_manifest) + "'")
|
||||
Log.error("Missing manifest file : '" + str(file_source_manifest) + "'")
|
||||
mani = manifest.Manifest(file_source_manifest)
|
||||
|
||||
all_project = mani.get_all_configs()
|
||||
debug.info("fetch : " + str(len(all_project)) + " projects")
|
||||
Log.info("fetch : " + str(len(all_project)) + " projects")
|
||||
id_element = 0
|
||||
for elem in all_project:
|
||||
id_element += 1
|
||||
base_display = tools.get_list_base_display(id_element, len(all_project), elem)
|
||||
debug.info("push: " + base_display)
|
||||
Log.info("push: " + base_display)
|
||||
tools.wait_for_server_if_needed()
|
||||
//debug.debug("elem : " + str(elem))
|
||||
//Log.debug("elem : " + str(elem))
|
||||
git_repo_path = new Path(env.get_island_root_path(), elem.path)
|
||||
if os.path.exists(git_repo_path) == false:
|
||||
debug.error("can not push project that not exist")
|
||||
Log.error("can not push project that not exist")
|
||||
continue
|
||||
|
||||
if os.path.exists(new Path(git_repo_path,".git")) == false:
|
||||
// path already exist but it is not used to as a git repo ==> this is an error
|
||||
debug.error("path '" + git_repo_path + "' exist but not used for a git repository. Clean it and restart")
|
||||
Log.error("path '" + git_repo_path + "' exist but not used for a git repository. Clean it and restart")
|
||||
|
||||
// get the current branch:
|
||||
// get local branch
|
||||
cmd = "git branch -a"
|
||||
debug.verbose("execute : " + cmd)
|
||||
Log.verbose("execute : " + cmd)
|
||||
ret_branch = multiprocess.run_command(cmd, cwd=git_repo_path)
|
||||
list_branch = ret_branch[1].split('\n')
|
||||
list_branch2 = []
|
||||
@ -101,7 +101,7 @@ public void execute(_arguments):
|
||||
list_branch3.append(elem_branch[2:])
|
||||
|
||||
// simply update the repository ...
|
||||
debug.verbose("Push project: ")
|
||||
Log.verbose("Push project: ")
|
||||
// fetch the repository
|
||||
cmd = "git push"
|
||||
if argument_remote_name != "":
|
||||
@ -109,6 +109,6 @@ public void execute(_arguments):
|
||||
else:
|
||||
cmd += " " + elem.select_remote["name"]
|
||||
cmd += " " + select_branch + ":" + select_branch
|
||||
debug.info("execute : " + cmd)
|
||||
Log.info("execute : " + cmd)
|
||||
multiprocess.run_command_direct(cmd, cwd=git_repo_path)
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
||||
//# @license MPL v2.0 (see license file)
|
||||
//#
|
||||
|
||||
from realog import debug
|
||||
from realog import Log
|
||||
from island import tools
|
||||
from island import env
|
||||
from island import multiprocess
|
||||
@ -48,13 +48,13 @@ public void execute(_arguments):
|
||||
argument_remote_name = ""
|
||||
argument_display_tag = false
|
||||
for elem in _arguments:
|
||||
if elem.get_option_name() == "remote":
|
||||
debug.info("find remote name: '" + elem.get_arg() + "'")
|
||||
argument_remote_name = elem.get_arg()
|
||||
elif elem.get_option_name() == "tags":
|
||||
if elem.getOptionName() == "remote":
|
||||
Log.info("find remote name: '" + elem.getArg() + "'")
|
||||
argument_remote_name = elem.getArg()
|
||||
} else if elem.getOptionName() == "tags":
|
||||
argument_display_tag = true
|
||||
else:
|
||||
debug.error("Wrong argument: '" + elem.get_option_name() + "' '" + elem.get_arg() + "'")
|
||||
Log.error("Wrong argument: '" + elem.getOptionName() + "' '" + elem.getArg() + "'")
|
||||
|
||||
// check system is OK
|
||||
manifest.check_lutin_is_init()
|
||||
@ -62,16 +62,16 @@ public void execute(_arguments):
|
||||
|
||||
file_source_manifest = new Path(env.get_island_path_manifest(), configuration.get_manifest_name())
|
||||
if os.path.exists(file_source_manifest) == false:
|
||||
debug.error("Missing manifest file : '" + str(file_source_manifest) + "'")
|
||||
Log.error("Missing manifest file : '" + str(file_source_manifest) + "'")
|
||||
|
||||
mani = manifest.Manifest(file_source_manifest)
|
||||
is_modify_manifest = commands.check_repository_is_modify(env.get_island_path_manifest())
|
||||
if is_modify_manifest == true:
|
||||
debug.info("!!!!!!!!!!!! MANIFEST is modify !!!!!!!!")
|
||||
Log.info("!!!!!!!!!!!! MANIFEST is modify !!!!!!!!")
|
||||
|
||||
|
||||
all_project = mani.get_all_configs()
|
||||
debug.info("status of: " + str(len(all_project)) + " projects")
|
||||
Log.info("status of: " + str(len(all_project)) + " projects")
|
||||
id_element = 0
|
||||
|
||||
elem = configuration.get_manifest_config()
|
||||
|
@ -8,7 +8,7 @@
|
||||
//# @license MPL v2.0 (see license file)
|
||||
//#
|
||||
|
||||
from realog import debug
|
||||
from realog import Log
|
||||
from island import tools
|
||||
from island import env
|
||||
from island import config
|
||||
@ -48,106 +48,106 @@ public void add_specific_arguments(my_args, section):
|
||||
public void execute(_arguments):
|
||||
reset_instead_of_rebase = false
|
||||
for elem in _arguments:
|
||||
if elem.get_option_name() == "rebase":
|
||||
if elem.getOptionName() == "rebase":
|
||||
reset_instead_of_rebase = true
|
||||
debug.info("==> Request reset instead of rebase")
|
||||
Log.info("==> Request reset instead of rebase")
|
||||
else:
|
||||
debug.error("SYNC Wrong argument: '" + elem.get_option_name() + "' '" + elem.get_arg() + "'", ret_value=env.ret_action_wrong_parameters)
|
||||
Log.error("SYNC Wrong argument: '" + elem.getOptionName() + "' '" + elem.getArg() + "'", ret_value=env.ret_action_wrong_parameters)
|
||||
|
||||
// check system is OK
|
||||
manifest.check_lutin_is_init()
|
||||
|
||||
configuration = config.get_unique_config()
|
||||
|
||||
debug.info("update manifest : '" + str(env.get_island_path_manifest()) + "'")
|
||||
Log.info("update manifest : '" + str(env.get_island_path_manifest()) + "'")
|
||||
is_modify_manifest = commands.check_repository_is_modify(env.get_island_path_manifest())
|
||||
if is_modify_manifest == true:
|
||||
debug.warning("Manifest is modify")
|
||||
Log.warning("Manifest is modify")
|
||||
else:
|
||||
ret_track = commands.get_current_tracking_branch(env.get_island_path_manifest())
|
||||
is_forward = commands.is_forward(env.get_island_path_manifest(), ret_track)
|
||||
if is_forward == true:
|
||||
// fetch the repository
|
||||
debug.warning("sync-local: Not update ==> the MANIFEST is forward the remote branch " + str(commands.get_forward(env.get_island_path_manifest(), ret_track)))
|
||||
Log.warning("sync-local: Not update ==> the MANIFEST is forward the remote branch " + str(commands.get_forward(env.get_island_path_manifest(), ret_track)))
|
||||
else:
|
||||
debug.verbose("Check behind:")
|
||||
Log.verbose("Check behind:")
|
||||
is_behind = commands.is_behind(env.get_island_path_manifest(), ret_track)
|
||||
if is_behind == false:
|
||||
// fetch the repository
|
||||
debug.info("sync-local: MANIFEST is up-to-date")
|
||||
Log.info("sync-local: MANIFEST is up-to-date")
|
||||
else:
|
||||
if reset_instead_of_rebase == true:
|
||||
debug.info("sync-local: MANIFEST Reset to " + ret_track)
|
||||
Log.info("sync-local: MANIFEST Reset to " + ret_track)
|
||||
commands.reset_hard(env.get_island_path_manifest(), ret_track)
|
||||
else:
|
||||
debug.info("sync-local: MANIFEST Rebase to " + ret_track)
|
||||
Log.info("sync-local: MANIFEST Rebase to " + ret_track)
|
||||
commands.rebase(env.get_island_path_manifest(), ret_track)
|
||||
|
||||
file_source_manifest = new Path(env.get_island_path_manifest(), configuration.get_manifest_name())
|
||||
if os.path.exists(file_source_manifest) == false:
|
||||
debug.error("Missing manifest file : '" + str(file_source_manifest) + "'", ret_value=env.ret_manifest_is_not_existing)
|
||||
Log.error("Missing manifest file : '" + str(file_source_manifest) + "'", ret_value=env.ret_manifest_is_not_existing)
|
||||
|
||||
mani = manifest.Manifest(file_source_manifest)
|
||||
|
||||
all_project = mani.get_all_configs()
|
||||
debug.info("synchronize : " + str(len(all_project)) + " projects")
|
||||
Log.info("synchronize : " + str(len(all_project)) + " projects")
|
||||
id_element = 0
|
||||
count_error = 0
|
||||
for elem in all_project:
|
||||
id_element += 1
|
||||
base_display = tools.get_list_base_display(id_element, len(all_project), elem)
|
||||
debug.info("----------------------------------------------------------------")
|
||||
debug.info("sync-local: " + base_display)
|
||||
//debug.debug("elem : " + str(elem))
|
||||
Log.info("----------------------------------------------------------------")
|
||||
Log.info("sync-local: " + base_display)
|
||||
//Log.debug("elem : " + str(elem))
|
||||
git_repo_path = new Path(env.get_island_root_path(), elem.path)
|
||||
if os.path.exists(git_repo_path) == false:
|
||||
// The Repository does not exist ==> Nothing to do...
|
||||
debug.warning("sync-local: ==> Not download")
|
||||
Log.warning("sync-local: ==> Not download")
|
||||
count_error += 1
|
||||
continue
|
||||
|
||||
if os.path.exists(new Path(git_repo_path,".git")) == false:
|
||||
// path already exist but it is not used to as a git repo ==> this is an error
|
||||
debug.warning("sync-local: is already existing but not used for a git repository. Remove it and sync")
|
||||
Log.warning("sync-local: is already existing but not used for a git repository. Remove it and sync")
|
||||
count_error += 1
|
||||
continue
|
||||
|
||||
// simply update the repository ...
|
||||
debug.verbose("Check modify:")
|
||||
Log.verbose("Check modify:")
|
||||
is_modify = commands.check_repository_is_modify(git_repo_path)
|
||||
if is_modify == true:
|
||||
// fetch the repository
|
||||
debug.warning("sync-local: Not update ==> the repository is modified (pass through)")
|
||||
Log.warning("sync-local: Not update ==> the repository is modified (pass through)")
|
||||
count_error += 1
|
||||
continue
|
||||
debug.verbose("Check tracking and local branch:")
|
||||
Log.verbose("Check tracking and local branch:")
|
||||
// get tracking branch
|
||||
ret_track = commands.get_current_tracking_branch(git_repo_path)
|
||||
select_branch = commands.get_current_branch(git_repo_path)
|
||||
debug.debug("sync-local: check: " + select_branch + " ==> " + ret_track)
|
||||
debug.verbose("Check forward:")
|
||||
Log.debug("sync-local: check: " + select_branch + " ==> " + ret_track)
|
||||
Log.verbose("Check forward:")
|
||||
is_forward = commands.is_forward(git_repo_path, ret_track)
|
||||
if is_forward == true:
|
||||
// fetch the repository
|
||||
debug.warning("sync-local: Not update ==> the repository is forward the remote branch " + str(commands.get_forward(git_repo_path, ret_track)))
|
||||
Log.warning("sync-local: Not update ==> the repository is forward the remote branch " + str(commands.get_forward(git_repo_path, ret_track)))
|
||||
count_error += 1
|
||||
continue
|
||||
debug.verbose("Check behind:")
|
||||
Log.verbose("Check behind:")
|
||||
is_behind = commands.is_behind(git_repo_path, ret_track)
|
||||
if is_behind == false:
|
||||
// fetch the repository
|
||||
debug.info("sync-local: Nothing to do.")
|
||||
Log.info("sync-local: Nothing to do.")
|
||||
continue
|
||||
if reset_instead_of_rebase == true:
|
||||
debug.info("sync-local: Reset to " + ret_track)
|
||||
Log.info("sync-local: Reset to " + ret_track)
|
||||
commands.reset_hard(git_repo_path, ret_track)
|
||||
else:
|
||||
debug.info("sync-local: Reset to " + ret_track)
|
||||
Log.info("sync-local: Reset to " + ret_track)
|
||||
commands.rebase(git_repo_path, ret_track)
|
||||
if count_error != 0:
|
||||
debug.info(" ***********************************************************")
|
||||
debug.info(" ** local sync partial warning on " + str(count_error) + " repository")
|
||||
debug.info(" ***********************************************************")
|
||||
Log.info(" ***********************************************************")
|
||||
Log.info(" ** local sync partial warning on " + str(count_error) + " repository")
|
||||
Log.info(" ***********************************************************")
|
||||
return env.ret_action_partial_done
|
||||
|
||||
//# Update the links:
|
||||
|
@ -8,7 +8,7 @@
|
||||
//# @license MPL v2.0 (see license file)
|
||||
//#
|
||||
|
||||
from realog import debug
|
||||
from realog import Log
|
||||
from island import tools
|
||||
from island import env
|
||||
from island import config
|
||||
@ -52,11 +52,11 @@ public void add_specific_arguments(my_args, section):
|
||||
public void execute(_arguments):
|
||||
just_download = false
|
||||
for elem in _arguments:
|
||||
if elem.get_option_name() == "download":
|
||||
if elem.getOptionName() == "download":
|
||||
just_download = true
|
||||
debug.info("find remote name: '" + elem.get_arg() + "'")
|
||||
Log.info("find remote name: '" + elem.getArg() + "'")
|
||||
else:
|
||||
debug.error("SYNC Wrong argument: '" + elem.get_option_name() + "' '" + elem.get_arg() + "'")
|
||||
Log.error("SYNC Wrong argument: '" + elem.getOptionName() + "' '" + elem.getArg() + "'")
|
||||
|
||||
// check system is OK
|
||||
manifest.check_lutin_is_init()
|
||||
@ -65,7 +65,7 @@ public void execute(_arguments):
|
||||
|
||||
// TODO: Load Old manifect to check diff ...
|
||||
|
||||
debug.info("update manifest : '" + str(env.get_island_path_manifest()) + "'")
|
||||
Log.info("update manifest : '" + str(env.get_island_path_manifest()) + "'")
|
||||
is_modify_manifest = commands.check_repository_is_modify(env.get_island_path_manifest())
|
||||
if is_modify_manifest == true:
|
||||
commands.fetch(env.get_island_path_manifest(), "origin")
|
||||
@ -74,22 +74,22 @@ public void execute(_arguments):
|
||||
|
||||
file_source_manifest = new Path(env.get_island_path_manifest(), configuration.get_manifest_name())
|
||||
if os.path.exists(file_source_manifest) == false:
|
||||
debug.error("Missing manifest file : '" + str(file_source_manifest) + "'")
|
||||
Log.error("Missing manifest file : '" + str(file_source_manifest) + "'")
|
||||
|
||||
mani = manifest.Manifest(file_source_manifest)
|
||||
|
||||
all_project = mani.get_all_configs()
|
||||
debug.info("synchronize : " + str(len(all_project)) + " projects")
|
||||
Log.info("synchronize : " + str(len(all_project)) + " projects")
|
||||
id_element = 0
|
||||
for elem in all_project:
|
||||
id_element += 1
|
||||
base_display = tools.get_list_base_display(id_element, len(all_project), elem)
|
||||
debug.info("sync : " + base_display)
|
||||
Log.info("sync : " + base_display)
|
||||
tools.wait_for_server_if_needed()
|
||||
//debug.debug("elem : " + str(elem))
|
||||
//Log.debug("elem : " + str(elem))
|
||||
git_repo_path = new Path(env.get_island_root_path(), elem.path)
|
||||
if elem.tag != None:
|
||||
debug.warning("Need to select a specific tag version ... " + elem.tag)
|
||||
Log.warning("Need to select a specific tag version ... " + elem.tag)
|
||||
if os.path.exists(git_repo_path) == false:
|
||||
// this is a new clone ==> this is easy ...
|
||||
//clone the manifest repository
|
||||
@ -102,17 +102,17 @@ public void execute(_arguments):
|
||||
else:
|
||||
address_manifest += "/"
|
||||
address_manifest += elem.name
|
||||
debug.info("clone the repo")
|
||||
Log.info("clone the repo")
|
||||
ret = commands.clone(git_repo_path, address_manifest, branch_name=elem.branch, origin=elem.select_remote["name"])
|
||||
if ret[0] != "" \
|
||||
and ret[0] != false:
|
||||
// all is good, ready to get the system work corectly
|
||||
debug.info("'" + str(ret) + "'")
|
||||
debug.error("Clone repository does not work ... ")
|
||||
Log.info("'" + str(ret) + "'")
|
||||
Log.error("Clone repository does not work ... ")
|
||||
continue
|
||||
// add global mirror list
|
||||
for mirror in elem.select_remote["mirror"]:
|
||||
debug.verbose("Add global mirror: " + str(mirror))
|
||||
Log.verbose("Add global mirror: " + str(mirror))
|
||||
cmd = "git remote add " + mirror["name"] + " " + mirror["fetch"]
|
||||
if mirror["fetch"][0:4] == "git@":
|
||||
cmd += ":"
|
||||
@ -123,46 +123,46 @@ public void execute(_arguments):
|
||||
if ret != "" \
|
||||
and ret != false:
|
||||
// all is good, ready to get the system work corectly
|
||||
debug.info("'" + str(ret) + "'")
|
||||
debug.warning("Can not add global mirror ... ")
|
||||
Log.info("'" + str(ret) + "'")
|
||||
Log.warning("Can not add global mirror ... ")
|
||||
continue
|
||||
debug.verbose("Add global mirror: " + str(mirror) + " (done)")
|
||||
//debug.info("plop " + str(elem.select_remote.keys()))
|
||||
Log.verbose("Add global mirror: " + str(mirror) + " (done)")
|
||||
//Log.info("plop " + str(elem.select_remote.keys()))
|
||||
// check submodule if requested:
|
||||
if elem.select_remote["sync"] == true \
|
||||
and os.path.exists(new Path(git_repo_path, ".gitmodules")) == true:
|
||||
debug.info(" ==> update submodule")
|
||||
Log.info(" ==> update submodule")
|
||||
cmd = "git submodule init"
|
||||
ret = multiprocess.run_command_direct(cmd, cwd=git_repo_path)
|
||||
if ret != "" \
|
||||
and ret != false:
|
||||
// all is good, ready to get the system work corectly
|
||||
debug.info("'" + str(ret) + "'")
|
||||
debug.error("Can not init submodules ... ")
|
||||
Log.info("'" + str(ret) + "'")
|
||||
Log.error("Can not init submodules ... ")
|
||||
continue
|
||||
cmd = "git submodule update"
|
||||
ret = multiprocess.run_command_direct(cmd, cwd=git_repo_path)
|
||||
if ret[:16] == "Submodule path '":
|
||||
//all is good ...
|
||||
debug.info(" " + ret)
|
||||
elif ret != "" \
|
||||
Log.info(" " + ret)
|
||||
} else if ret != "" \
|
||||
and ret != false:
|
||||
// all is good, ready to get the system work corectly
|
||||
debug.info("'" + str(ret) + "'")
|
||||
debug.error("Can not init submodules ... ")
|
||||
Log.info("'" + str(ret) + "'")
|
||||
Log.error("Can not init submodules ... ")
|
||||
continue
|
||||
continue
|
||||
|
||||
if just_download == true:
|
||||
debug.info("SYNC: Already downloaded")
|
||||
Log.info("SYNC: Already downloaded")
|
||||
continue
|
||||
|
||||
if os.path.exists(new Path(git_repo_path,".git")) == false:
|
||||
// path already exist but it is not used to as a git repo ==> this is an error
|
||||
debug.error("path '" + git_repo_path + "' is already existing but not used for a git repository. Clean it and restart")
|
||||
Log.error("path '" + git_repo_path + "' is already existing but not used for a git repository. Clean it and restart")
|
||||
|
||||
// simply update the repository ...
|
||||
debug.verbose("Fetching project: ")
|
||||
Log.verbose("Fetching project: ")
|
||||
|
||||
// get tracking branch
|
||||
ret_track = commands.get_current_tracking_branch(git_repo_path)
|
||||
@ -172,15 +172,15 @@ public void execute(_arguments):
|
||||
if is_modify == true:
|
||||
// fetch the repository
|
||||
commands.fetch(git_repo_path, elem.select_remote["name"])
|
||||
debug.warning("[" + elem.name + "] Not update ==> the repository is modified (just fetch)")
|
||||
Log.warning("[" + elem.name + "] Not update ==> the repository is modified (just fetch)")
|
||||
continue
|
||||
commands.pull(git_repo_path, elem.select_remote["name"])
|
||||
|
||||
debug.verbose("select branch = '" + select_branch + "' track: '" + str(ret_track) + "'")
|
||||
Log.verbose("select branch = '" + select_branch + "' track: '" + str(ret_track) + "'")
|
||||
// check submodule if requested:
|
||||
if elem.select_remote["sync"] == true \
|
||||
and os.path.exists(new Path(git_repo_path, ".gitmodules")) == true:
|
||||
debug.info(" ==> sync submodule")
|
||||
Log.info(" ==> sync submodule")
|
||||
commands.submodule_sync(git_repo_path)
|
||||
|
||||
//# Update the links:
|
||||
|
@ -8,7 +8,7 @@
|
||||
//# @license MPL v2.0 (see license file)
|
||||
//#
|
||||
|
||||
from realog import debug
|
||||
from realog import Log
|
||||
from island import tools
|
||||
from island import env
|
||||
from island import config
|
||||
@ -53,23 +53,23 @@ public void help_example():
|
||||
//#
|
||||
public void execute(_arguments):
|
||||
if len(_arguments) == 0:
|
||||
debug.error("Missing argument to execute the current action [git repository] [path]")
|
||||
Log.error("Missing argument to execute the current action [git repository] [path]")
|
||||
|
||||
// the configuration availlable:
|
||||
path = ""
|
||||
address_git = ""
|
||||
for elem in _arguments:
|
||||
if elem.get_option_name() == "git repository":
|
||||
address_git = elem.get_arg()
|
||||
elif elem.get_option_name() == "path":
|
||||
path = elem.get_arg()
|
||||
if elem.getOptionName() == "git repository":
|
||||
address_git = elem.getArg()
|
||||
} else if elem.getOptionName() == "path":
|
||||
path = elem.getArg()
|
||||
else:
|
||||
debug.error("Wrong argument: '" + elem.get_option_name() + "' '" + elem.get_arg() + "'")
|
||||
Log.error("Wrong argument: '" + elem.getOptionName() + "' '" + elem.getArg() + "'")
|
||||
|
||||
if address_git == "":
|
||||
debug.error("volatile-add: Missing git repository address", env.ret_action_wrong_parameters)
|
||||
Log.error("volatile-add: Missing git repository address", env.ret_action_wrong_parameters)
|
||||
|
||||
debug.info("Add 'volatile' repository: '" + address_git + "' path='" + path + "'")
|
||||
Log.info("Add 'volatile' repository: '" + address_git + "' path='" + path + "'")
|
||||
|
||||
// check system is OK
|
||||
manifest.check_lutin_is_init()
|
||||
|
@ -8,7 +8,7 @@
|
||||
//# @license MPL v2.0 (see license file)
|
||||
//#
|
||||
|
||||
from realog import debug
|
||||
from realog import Log
|
||||
from island import tools
|
||||
from island import env
|
||||
from island import config
|
||||
@ -37,16 +37,16 @@ public void help():
|
||||
//#
|
||||
public void execute(_arguments):
|
||||
for elem in _arguments:
|
||||
debug.error("Wrong argument: '" + elem.get_option_name() + "' '" + elem.get_arg() + "'")
|
||||
Log.error("Wrong argument: '" + elem.getOptionName() + "' '" + elem.getArg() + "'")
|
||||
|
||||
// check system is OK
|
||||
manifest.check_lutin_is_init()
|
||||
|
||||
conf = config.get_unique_config()
|
||||
volatiles = conf.get_volatile()
|
||||
debug.info("List of all volatiles repository: ")
|
||||
Log.info("List of all volatiles repository: ")
|
||||
for elem in volatiles:
|
||||
debug.info("\t" + elem["path"] + "\r\t\t\t\t" + elem["git_address"])
|
||||
Log.info("\t" + elem["path"] + "\r\t\t\t\t" + elem["git_address"])
|
||||
|
||||
return None
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
||||
//# @license MPL v2.0 (see license file)
|
||||
//#
|
||||
|
||||
from realog import debug
|
||||
from realog import Log
|
||||
from island import tools
|
||||
from island import env
|
||||
from island import config
|
||||
@ -28,22 +28,22 @@ public void display_status(elem, argument_remote_name, argument_display_tag, id_
|
||||
volatile = ""
|
||||
if elem.volatile == true:
|
||||
volatile = " (volatile)"
|
||||
debug.verbose("status : " + base_display)
|
||||
//debug.debug("elem : " + str(elem))
|
||||
Log.verbose("status : " + base_display)
|
||||
//Log.debug("elem : " + str(elem))
|
||||
git_repo_path = new Path(env.get_island_root_path(), elem.path)
|
||||
if os.path.exists(git_repo_path) == false:
|
||||
debug.info(base_display + volatile + "\r\t\t\t\t\t\t\t\t\t" + " (not download)")
|
||||
Log.info(base_display + volatile + "\r\t\t\t\t\t\t\t\t\t" + " (not download)")
|
||||
return
|
||||
|
||||
is_modify = commands.check_repository_is_modify(git_repo_path)
|
||||
list_branch = commands.get_list_branch_all(git_repo_path)
|
||||
select_branch = commands.get_current_branch(git_repo_path)
|
||||
debug.verbose("List all branch: " + str(list_branch))
|
||||
Log.verbose("List all branch: " + str(list_branch))
|
||||
if select_branch[:len(base_name_of_a_tagged_branch)] != base_name_of_a_tagged_branch:
|
||||
// get tracking branch
|
||||
tracking_remote_branch = commands.get_tracking_branch(git_repo_path, argument_remote_name, select_branch)
|
||||
if tracking_remote_branch == None:
|
||||
debug.info(base_display + volatile + "\r\t\t\t\t\t\t\t (NO BRANCH)")
|
||||
Log.info(base_display + volatile + "\r\t\t\t\t\t\t\t (NO BRANCH)")
|
||||
return
|
||||
else:
|
||||
tracking_remote_branch = select_branch[len(base_name_of_a_tagged_branch):]
|
||||
@ -51,7 +51,7 @@ public void display_status(elem, argument_remote_name, argument_display_tag, id_
|
||||
if is_modify == true:
|
||||
modify_status = " *** "
|
||||
|
||||
debug.verbose("select branch = '" + select_branch + "' is modify : " + str(is_modify) + " track: '" + str(tracking_remote_branch) + "'")
|
||||
Log.verbose("select branch = '" + select_branch + "' is modify : " + str(is_modify) + " track: '" + str(tracking_remote_branch) + "'")
|
||||
|
||||
ret_current_branch_sha1 = commands.get_revision_list_to_branch(git_repo_path, select_branch)
|
||||
ret_track_branch_sha1 = commands.get_revision_list_to_branch(git_repo_path, tracking_remote_branch)
|
||||
@ -80,7 +80,7 @@ public void display_status(elem, argument_remote_name, argument_display_tag, id_
|
||||
// check the current tags of the repository
|
||||
if argument_display_tag == true:
|
||||
ret_current_tags = commands.get_tags_current(git_repo_path)
|
||||
debug.verbose("tags found: " + str(ret_current_tags))
|
||||
Log.verbose("tags found: " + str(ret_current_tags))
|
||||
for elem_tag in ret_current_tags:
|
||||
if len(tags_comment) != 0:
|
||||
tags_comment += ","
|
||||
@ -89,46 +89,46 @@ public void display_status(elem, argument_remote_name, argument_display_tag, id_
|
||||
tags_comment = "\r\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[" + tags_comment + "]"
|
||||
else:
|
||||
tags_comment = "\r\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t- - - - -"
|
||||
debug.info(base_display + volatile + "\r\t\t\t\t\t\t\t" + modify_status + "(" + select_branch + " -> " + tracking_remote_branch + ")" + behind_forward_comment + tags_comment)
|
||||
Log.info(base_display + volatile + "\r\t\t\t\t\t\t\t" + modify_status + "(" + select_branch + " -> " + tracking_remote_branch + ")" + behind_forward_comment + tags_comment)
|
||||
if is_modify == true:
|
||||
cmd = "git status --short"
|
||||
debug.verbose("execute : " + cmd)
|
||||
Log.verbose("execute : " + cmd)
|
||||
ret_diff = multiprocess.run_command(cmd, cwd=git_repo_path)
|
||||
tmp_color_red = "\033[31m"
|
||||
tmp_color_default= "\033[00m"
|
||||
debug.info(tmp_color_red + ret_diff[1] + tmp_color_default)
|
||||
Log.info(tmp_color_red + ret_diff[1] + tmp_color_default)
|
||||
return in_behind
|
||||
|
||||
|
||||
|
||||
public void deliver_check(elem, argument_remote_name, id_element, base_display, source_branch, destination_branch):
|
||||
deliver_availlable = true
|
||||
debug.debug("deliver-ckeck: " + base_display)
|
||||
debug.debug(" ==> check repo exist")
|
||||
Log.debug("deliver-ckeck: " + base_display)
|
||||
Log.debug(" ==> check repo exist")
|
||||
// Check the repo exist
|
||||
git_repo_path = new Path(env.get_island_root_path(), elem.path)
|
||||
if os.path.exists(git_repo_path) == false:
|
||||
debug.warning("deliver-ckeck: " + base_display + " ==> MUST be download")
|
||||
Log.warning("deliver-ckeck: " + base_display + " ==> MUST be download")
|
||||
return false
|
||||
debug.debug(" ==> check is modify")
|
||||
Log.debug(" ==> check is modify")
|
||||
// check if the curent repo is modify
|
||||
is_modify = commands.check_repository_is_modify(git_repo_path)
|
||||
if is_modify == true:
|
||||
debug.warning("deliver-ckeck: " + base_display + " ==> MUST not be modify")
|
||||
Log.warning("deliver-ckeck: " + base_display + " ==> MUST not be modify")
|
||||
return false
|
||||
|
||||
|
||||
debug.debug(" ==> check current branch is '" + source_branch + "'")
|
||||
Log.debug(" ==> check current branch is '" + source_branch + "'")
|
||||
// check if we are on source_branch
|
||||
select_branch = commands.get_current_branch(git_repo_path)
|
||||
if select_branch != source_branch:
|
||||
debug.warning("deliver-ckeck: " + base_display + " ==> MUST be on source branch: '" + source_branch + "' and is: '" + select_branch + "'")
|
||||
Log.warning("deliver-ckeck: " + base_display + " ==> MUST be on source branch: '" + source_branch + "' and is: '" + select_branch + "'")
|
||||
return false
|
||||
debug.debug(" ==> check have tracking branch")
|
||||
Log.debug(" ==> check have tracking branch")
|
||||
// check if we have a remote traking branch
|
||||
tracking_remote_branch = commands.get_tracking_branch(git_repo_path, argument_remote_name, select_branch)
|
||||
if tracking_remote_branch == None:
|
||||
debug.warning("deliver-ckeck: " + base_display + " ==> MUST have a remote tracking branch")
|
||||
Log.warning("deliver-ckeck: " + base_display + " ==> MUST have a remote tracking branch")
|
||||
deliver_availlable = false
|
||||
|
||||
|
||||
@ -136,17 +136,17 @@ public void deliver_check(elem, argument_remote_name, id_element, base_display,
|
||||
commands.checkout(git_repo_path, destination_branch)
|
||||
// TODO: check return value
|
||||
|
||||
debug.debug(" ==> check current branch is '" + source_branch + "'")
|
||||
Log.debug(" ==> check current branch is '" + source_branch + "'")
|
||||
// check if we are on "master"
|
||||
select_branch = commands.get_current_branch(git_repo_path)
|
||||
if select_branch != destination_branch:
|
||||
debug.warning("deliver-ckeck: " + base_display + " ==> Can not checkout branch: '" + destination_branch + "' and is: '" + select_branch + "'")
|
||||
Log.warning("deliver-ckeck: " + base_display + " ==> Can not checkout branch: '" + destination_branch + "' and is: '" + select_branch + "'")
|
||||
deliver_availlable = false
|
||||
debug.debug(" ==> check have tracking branch")
|
||||
Log.debug(" ==> check have tracking branch")
|
||||
// check if we have a remote traking branch
|
||||
tracking_remote_branch = commands.get_tracking_branch(git_repo_path, argument_remote_name, select_branch)
|
||||
if tracking_remote_branch == None:
|
||||
debug.warning("deliver-ckeck: " + base_display + " ==> MUST have a remote tracking branch")
|
||||
Log.warning("deliver-ckeck: " + base_display + " ==> MUST have a remote tracking branch")
|
||||
deliver_availlable = false
|
||||
|
||||
|
||||
@ -155,7 +155,7 @@ public void deliver_check(elem, argument_remote_name, id_element, base_display,
|
||||
// check if we have a local branch
|
||||
list_branch_local = commands.get_list_branch_local(git_repo_path)
|
||||
if destination_branch not in list_branch_local:
|
||||
debug.warning("deliver-ckeck: " + base_display + " ==> MUST have local branch named '" + destination_branch + "'")
|
||||
Log.warning("deliver-ckeck: " + base_display + " ==> MUST have local branch named '" + destination_branch + "'")
|
||||
deliver_availlable = false
|
||||
// TODO: check source_branch is up to date
|
||||
|
||||
@ -170,16 +170,16 @@ public void deliver_check(elem, argument_remote_name, id_element, base_display,
|
||||
|
||||
|
||||
public void checkout_elem(elem, argument_remote_name, branch_to_checkout, base_display):
|
||||
debug.verbose("checkout : " + base_display)
|
||||
Log.verbose("checkout : " + base_display)
|
||||
git_repo_path = new Path(env.get_island_root_path(), elem.path)
|
||||
if os.path.exists(git_repo_path) == false:
|
||||
debug.warning("checkout " + base_display + " ==> repository does not exist ...")
|
||||
Log.warning("checkout " + base_display + " ==> repository does not exist ...")
|
||||
return false
|
||||
|
||||
// check if the repository is modify
|
||||
is_modify = commands.check_repository_is_modify(git_repo_path)
|
||||
if is_modify == true:
|
||||
debug.warning("checkout " + base_display + " ==> modify data can not checkout new branch")
|
||||
Log.warning("checkout " + base_display + " ==> modify data can not checkout new branch")
|
||||
return false
|
||||
|
||||
list_branch_local = commands.get_list_branch_local(git_repo_path)
|
||||
@ -190,29 +190,29 @@ public void checkout_elem(elem, argument_remote_name, branch_to_checkout, base_d
|
||||
branch_to_checkout = base_name_of_a_tagged_branch + str(elem.tag)
|
||||
is_tag = true
|
||||
if elem.volatile == true:
|
||||
debug.info("checkout " + base_display + " ==> Can not checkout for 'volatile' repository")
|
||||
Log.info("checkout " + base_display + " ==> Can not checkout for 'volatile' repository")
|
||||
return true
|
||||
if elem.tag == None:
|
||||
debug.info("checkout " + base_display + " ==> Can not checkout for '''None''' Tag")
|
||||
Log.info("checkout " + base_display + " ==> Can not checkout for '''None''' Tag")
|
||||
return true
|
||||
// check if we are on the good branch:
|
||||
if branch_to_checkout == select_branch:
|
||||
debug.info("checkout " + base_display + " ==> No change already on good branch")
|
||||
Log.info("checkout " + base_display + " ==> No change already on good branch")
|
||||
return true
|
||||
|
||||
// check if we have already checkout the branch before
|
||||
debug.verbose(" check : " + branch_to_checkout + " in " + str(list_branch_local))
|
||||
Log.verbose(" check : " + branch_to_checkout + " in " + str(list_branch_local))
|
||||
if branch_to_checkout in list_branch_local:
|
||||
cmd = "git checkout " + branch_to_checkout
|
||||
debug.verbose("execute : " + cmd)
|
||||
Log.verbose("execute : " + cmd)
|
||||
ret = multiprocess.run_command(cmd, cwd=git_repo_path)
|
||||
if ret[0] != 0 \
|
||||
and ret[1] != "" \
|
||||
and ret != false:
|
||||
debug.info("'" + str(ret) + "'")
|
||||
debug.error("checkout " + base_display + " ==> Can not checkout to the correct branch")
|
||||
Log.info("'" + str(ret) + "'")
|
||||
Log.error("checkout " + base_display + " ==> Can not checkout to the correct branch")
|
||||
return false
|
||||
debug.info("checkout " + base_display + " ==> switch branch")
|
||||
Log.info("checkout " + base_display + " ==> switch branch")
|
||||
// TODO : Check the number of commit to the origin/XXX branch ....
|
||||
return true
|
||||
|
||||
@ -227,39 +227,39 @@ public void checkout_elem(elem, argument_remote_name, branch_to_checkout, base_d
|
||||
if is_tag == false:
|
||||
list_branch_remote = commands.get_list_branch_remote(git_repo_path)
|
||||
if elem.select_remote["name"] + "/" + branch_to_checkout in list_branch_remote:
|
||||
debug.info(" ==> find ...")
|
||||
Log.info(" ==> find ...")
|
||||
else:
|
||||
debug.info("checkout " + base_display + " ==> NO remote branch")
|
||||
Log.info("checkout " + base_display + " ==> NO remote branch")
|
||||
return true
|
||||
// checkout the new branch:
|
||||
cmd = "git checkout --quiet " + elem.select_remote["name"] + "/" + branch_to_checkout + " -b " + branch_to_checkout
|
||||
// + " --track " + elem.select_remote["name"] + "/" + branch_to_checkout
|
||||
debug.verbose("execute : " + cmd)
|
||||
Log.verbose("execute : " + cmd)
|
||||
ret = multiprocess.run_command(cmd, cwd=git_repo_path)
|
||||
if ret[1] != "" \
|
||||
and ret != false:
|
||||
debug.info("'" + str(ret) + "'")
|
||||
debug.error("checkout " + base_display + " ==> Can not checkout to the correct branch")
|
||||
Log.info("'" + str(ret) + "'")
|
||||
Log.error("checkout " + base_display + " ==> Can not checkout to the correct branch")
|
||||
return false
|
||||
debug.info("checkout " + base_display + " ==> create new branch")
|
||||
Log.info("checkout " + base_display + " ==> create new branch")
|
||||
return true
|
||||
// Checkout a specific tags:
|
||||
if elem.tag in list_tags:
|
||||
debug.info(" ==> find ...")
|
||||
Log.info(" ==> find ...")
|
||||
else:
|
||||
debug.info("checkout " + base_display + " ==> NO remote tags")
|
||||
Log.info("checkout " + base_display + " ==> NO remote tags")
|
||||
return true
|
||||
// checkout the new branch:
|
||||
cmd = "git checkout --quiet " + elem.tag + " -b " + branch_to_checkout
|
||||
// + " --track " + elem.select_remote["name"] + "/" + branch_to_checkout
|
||||
debug.verbose("execute : " + cmd)
|
||||
Log.verbose("execute : " + cmd)
|
||||
ret = multiprocess.run_command(cmd, cwd=git_repo_path)
|
||||
if ret[1] != "" \
|
||||
and ret != false:
|
||||
debug.info("'" + str(ret) + "'")
|
||||
debug.error("checkout " + base_display + " ==> Can not checkout to the correct tags")
|
||||
Log.info("'" + str(ret) + "'")
|
||||
Log.error("checkout " + base_display + " ==> Can not checkout to the correct tags")
|
||||
return false
|
||||
debug.info("checkout " + base_display + " ==> create new branch: " + branch_to_checkout)
|
||||
Log.info("checkout " + base_display + " ==> create new branch: " + branch_to_checkout)
|
||||
return true
|
||||
|
||||
|
||||
@ -268,26 +268,26 @@ public void get_current_version_repo(git_repo_path):
|
||||
add_in_version_management = false
|
||||
version_description = None
|
||||
if os.path.exists(version_path_file) == false:
|
||||
debug.info("deliver: ==> No 'version.txt' file ==> not manage release version....")
|
||||
Log.info("deliver: ==> No 'version.txt' file ==> not manage release version....")
|
||||
// Action to do:
|
||||
valid = false
|
||||
while valid == false:
|
||||
debug.info("Create a new version: (0.0.0)")
|
||||
debug.info(" (1) Add in managing version")
|
||||
debug.info(" (2) Do NOTHING & continue")
|
||||
Log.info("Create a new version: (0.0.0)")
|
||||
Log.info(" (1) Add in managing version")
|
||||
Log.info(" (2) Do NOTHING & continue")
|
||||
input1 = input()
|
||||
if input1 in ["1", "2"]:
|
||||
valid = true
|
||||
else:
|
||||
debug.info("!!! Must select in range " + str(["1", "2"]))
|
||||
Log.info("!!! Must select in range " + str(["1", "2"]))
|
||||
if input1 == "1":
|
||||
version_description = [0, 0, 0]
|
||||
add_in_version_management = true
|
||||
elif input1 == "2":
|
||||
debug.info("Continue Not managing for this repository")
|
||||
} else if input1 == "2":
|
||||
Log.info("Continue Not managing for this repository")
|
||||
return (None, None)
|
||||
else:
|
||||
debug.warning("An error occured for this repository")
|
||||
Log.warning("An error occured for this repository")
|
||||
return (None, None)
|
||||
else:
|
||||
version_description = tools.version_string_to_list(tools.file_read_data(version_path_file))
|
||||
@ -304,10 +304,10 @@ public void create_new_version_repo(git_repo_path, version_description, add_in_v
|
||||
for elem_sha1 in ret_destination_branch_sha1:
|
||||
if elem_sha1 not in ret_source_branch_sha1:
|
||||
message = commands.get_specific_commit_message(git_repo_path, elem_sha1)
|
||||
debug.warning("deliver: Forward commit: '" + message + "'")
|
||||
Log.warning("deliver: Forward commit: '" + message + "'")
|
||||
have_forward = true
|
||||
if have_forward == true:
|
||||
debug.error("'" + destination_branch + "' branch must not be forward '" + source_branch + "' branch")
|
||||
Log.error("'" + destination_branch + "' branch must not be forward '" + source_branch + "' branch")
|
||||
return None
|
||||
behind_message = ""
|
||||
behind_count = 0
|
||||
@ -317,30 +317,30 @@ public void create_new_version_repo(git_repo_path, version_description, add_in_v
|
||||
behind_count += 1
|
||||
behind_message = message
|
||||
if behind_count == 0 and add_in_version_management == false:
|
||||
debug.info("deliver: ==> Nothing to do (1).")
|
||||
Log.info("deliver: ==> Nothing to do (1).")
|
||||
return None
|
||||
if behind_count == 1 \
|
||||
and ( behind_message == default_behind_message
|
||||
or behind_message == default_update_message):
|
||||
debug.info("deliver: ==> Nothing to do (2).")
|
||||
Log.info("deliver: ==> Nothing to do (2).")
|
||||
return None
|
||||
for elem_sha1 in ret_source_branch_sha1:
|
||||
if elem_sha1 not in ret_destination_branch_sha1:
|
||||
message = commands.get_specific_commit_message(git_repo_path, elem_sha1)
|
||||
debug.info("deliver: Behind commit: '" + message + "'")
|
||||
Log.info("deliver: Behind commit: '" + message + "'")
|
||||
// Choice of the new version:
|
||||
valid = false
|
||||
while valid == false:
|
||||
debug.info("update version: curent: " + str(version_description))
|
||||
debug.info(" (1) Major version (change API)")
|
||||
debug.info(" (2) Medium version (add feature)")
|
||||
debug.info(" (3) Minor version (Bug fix & doc)")
|
||||
debug.info(" (4) Do not release & continue")
|
||||
Log.info("update version: curent: " + str(version_description))
|
||||
Log.info(" (1) Major version (change API)")
|
||||
Log.info(" (2) Medium version (add feature)")
|
||||
Log.info(" (3) Minor version (Bug fix & doc)")
|
||||
Log.info(" (4) Do not release & continue")
|
||||
input1 = input()
|
||||
if input1 in ["1", "2", "3", "4"]:
|
||||
valid = true
|
||||
else:
|
||||
debug.info("!!! Must select in range " + str(["1", "2", "3", "4"]))
|
||||
Log.info("!!! Must select in range " + str(["1", "2", "3", "4"]))
|
||||
// limit and force at 3 the nuber of variables
|
||||
version_description_tmp = version_description
|
||||
version_description = []
|
||||
@ -356,24 +356,24 @@ public void create_new_version_repo(git_repo_path, version_description, add_in_v
|
||||
version_description.append(version_description_tmp[2])
|
||||
else:
|
||||
version_description.append(0)
|
||||
debug.info("update version: curent: " + str(version_description))
|
||||
Log.info("update version: curent: " + str(version_description))
|
||||
// increment the version
|
||||
if input1 == "1":
|
||||
version_description[0] += 1
|
||||
version_description[1] = 0
|
||||
version_description[2] = 0
|
||||
elif input1 == "2":
|
||||
} else if input1 == "2":
|
||||
version_description[1] += 1
|
||||
version_description[2] = 0
|
||||
elif input1 == "3":
|
||||
} else if input1 == "3":
|
||||
version_description[2] += 1
|
||||
elif input1 == "4":
|
||||
debug.info("No release for this repository")
|
||||
} else if input1 == "4":
|
||||
Log.info("No release for this repository")
|
||||
return None
|
||||
else:
|
||||
debug.warning("An error occured for this repository")
|
||||
Log.warning("An error occured for this repository")
|
||||
return None
|
||||
debug.info("update version: curent: " + str(version_description))
|
||||
Log.info("update version: curent: " + str(version_description))
|
||||
return version_description
|
||||
|
||||
|
||||
@ -381,59 +381,59 @@ public void deliver_push(elem, argument_remote_name, destination_branch, source_
|
||||
// Check the repo exist
|
||||
git_repo_path = new Path(env.get_island_root_path(), elem.path)
|
||||
if os.path.exists(git_repo_path) == false:
|
||||
debug.warning("deliver-push: " + base_display + " ==> MUST be download")
|
||||
Log.warning("deliver-push: " + base_display + " ==> MUST be download")
|
||||
return
|
||||
// check if we are on destination_branch
|
||||
select_branch = commands.get_current_branch(git_repo_path)
|
||||
if select_branch != destination_branch:
|
||||
debug.warning("deliver-push: " + base_display + " ==> MUST be on '" + destination_branch + "'")
|
||||
Log.warning("deliver-push: " + base_display + " ==> MUST be on '" + destination_branch + "'")
|
||||
return
|
||||
// check if we have a local branch
|
||||
list_branch_local = commands.get_list_branch_local(git_repo_path)
|
||||
if source_branch not in list_branch_local:
|
||||
debug.warning("deliver-push: " + base_display + " ==> No '" + source_branch + "' (not managed)")
|
||||
Log.warning("deliver-push: " + base_display + " ==> No '" + source_branch + "' (not managed)")
|
||||
return
|
||||
if destination_branch not in list_branch_local:
|
||||
debug.warning("deliver-push: " + base_display + " ==> No '" + destination_branch + "' (not managed)")
|
||||
Log.warning("deliver-push: " + base_display + " ==> No '" + destination_branch + "' (not managed)")
|
||||
return
|
||||
list_of_element_to_push = []
|
||||
// check sha1 of destination_branch
|
||||
sha_1_destination = commands.get_sha1_for_branch(git_repo_path, destination_branch)
|
||||
tracking_remote_branch = commands.get_tracking_branch(git_repo_path, argument_remote_name, destination_branch)
|
||||
if tracking_remote_branch == None:
|
||||
debug.warning("deliver-push: " + base_display + " ==> '" + destination_branch + "' have no tracking branch")
|
||||
Log.warning("deliver-push: " + base_display + " ==> '" + destination_branch + "' have no tracking branch")
|
||||
deliver_availlable = false
|
||||
sha_1_destination_tracking = commands.get_sha1_for_branch(git_repo_path, tracking_remote_branch)
|
||||
if sha_1_destination == sha_1_destination_tracking:
|
||||
debug.info("deliver-push: " + base_display + " ==> '" + destination_branch + "' && '" + tracking_remote_branch + "' have the same sha1")
|
||||
Log.info("deliver-push: " + base_display + " ==> '" + destination_branch + "' && '" + tracking_remote_branch + "' have the same sha1")
|
||||
else:
|
||||
list_of_element_to_push.append(destination_branch)
|
||||
// check sha1 of source_branch
|
||||
sha_1_source = commands.get_sha1_for_branch(git_repo_path, source_branch)
|
||||
tracking_remote_branch = commands.get_tracking_branch(git_repo_path, argument_remote_name, source_branch)
|
||||
if tracking_remote_branch == None:
|
||||
debug.info("deliver-push: " + base_display + " ==> '" + source_branch + "' have no tracking branch")
|
||||
Log.info("deliver-push: " + base_display + " ==> '" + source_branch + "' have no tracking branch")
|
||||
deliver_availlable = false
|
||||
sha_1_source_tracking = commands.get_sha1_for_branch(git_repo_path, tracking_remote_branch)
|
||||
if sha_1_source == sha_1_source_tracking:
|
||||
debug.info("deliver-push: " + base_display + " ==> '" + source_branch + "' && '" + tracking_remote_branch + "' have the same sha1")
|
||||
Log.info("deliver-push: " + base_display + " ==> '" + source_branch + "' && '" + tracking_remote_branch + "' have the same sha1")
|
||||
else:
|
||||
list_of_element_to_push.append(source_branch)
|
||||
ret_current_tags = commands.get_tags_current(git_repo_path)
|
||||
if len(ret_current_tags) == 0:
|
||||
debug.info("deliver-push: " + base_display + " ==> No tag on the current '" + destination_branch + "'")
|
||||
Log.info("deliver-push: " + base_display + " ==> No tag on the current '" + destination_branch + "'")
|
||||
return
|
||||
if len(ret_current_tags) > 1:
|
||||
debug.info("deliver-push: " + base_display + " ==> Too mush tags on the current '" + destination_branch + "' : " + str(ret_current_tags) + " ==> only support 1")
|
||||
Log.info("deliver-push: " + base_display + " ==> Too mush tags on the current '" + destination_branch + "' : " + str(ret_current_tags) + " ==> only support 1")
|
||||
return
|
||||
list_remote_tags = commands.get_tags_remote(git_repo_path, argument_remote_name)
|
||||
debug.verbose("remote tags: " + str(list_remote_tags))
|
||||
Log.verbose("remote tags: " + str(list_remote_tags))
|
||||
if ret_current_tags[0] not in list_remote_tags:
|
||||
debug.info("deliver-push: " + base_display + " ==> tag already exist.")
|
||||
Log.info("deliver-push: " + base_display + " ==> tag already exist.")
|
||||
list_of_element_to_push.append(ret_current_tags[0])
|
||||
if len(list_of_element_to_push) == 0:
|
||||
debug.info("deliver-push: " + base_display + " ==> Everything up-to-date")
|
||||
Log.info("deliver-push: " + base_display + " ==> Everything up-to-date")
|
||||
return
|
||||
debug.info("deliver-push: " + base_display + " ==> element to push:" + str(list_of_element_to_push))
|
||||
Log.info("deliver-push: " + base_display + " ==> element to push:" + str(list_of_element_to_push))
|
||||
//push all on the server:
|
||||
commands.push(git_repo_path, argument_remote_name, list_of_element_to_push)
|
||||
|
@ -8,7 +8,7 @@
|
||||
//# @license MPL v2.0 (see license file)
|
||||
//#
|
||||
|
||||
from realog import debug
|
||||
from realog import Log
|
||||
from island import tools
|
||||
from island import env
|
||||
import os
|
||||
@ -18,23 +18,23 @@ public void update(configuration, mani, type_call):
|
||||
// TODO: do not remove link when not needed
|
||||
if len(configuration.get_links()) != 0 \
|
||||
or len(mani.get_links()) != 0:
|
||||
debug.info(type_call + ": remove old links ...")
|
||||
Log.info(type_call + ": remove old links ...")
|
||||
for elem in configuration.get_links():
|
||||
base_path = new Path(env.get_island_root_path(), elem["destination"])
|
||||
debug.info(type_call + ": link: " + str(base_path))
|
||||
Log.info(type_call + ": link: " + str(base_path))
|
||||
if os.path.islink(base_path) == true:
|
||||
os.unlink(base_path)
|
||||
else:
|
||||
debug.error(type_call + ": remove link is not authorised ==> not a link", crash=false)
|
||||
Log.error(type_call + ": remove link is not authorised ==> not a link", crash=false)
|
||||
have_error = true
|
||||
configuration.clear_links()
|
||||
debug.info(type_call + ": add new links ...")
|
||||
Log.info(type_call + ": add new links ...")
|
||||
for elem in mani.get_links():
|
||||
base_path = new Path(env.get_island_root_path(), elem["destination"])
|
||||
source_path = new Path(env.get_island_root_path(), elem["source"])
|
||||
debug.info(type_call + ": link: " + str(base_path))
|
||||
Log.info(type_call + ": link: " + str(base_path))
|
||||
if os.path.exists(base_path) == true:
|
||||
debug.error(type_call + ": create link is not possible ==> path already exist", crash=false)
|
||||
Log.error(type_call + ": create link is not possible ==> path already exist", crash=false)
|
||||
have_error = true
|
||||
else:
|
||||
tools.create_directory_of_file(base_path)
|
||||
|
@ -14,10 +14,10 @@ import errno
|
||||
import fnmatch
|
||||
import stat
|
||||
// Local import
|
||||
from realog import debug
|
||||
from realog import Log
|
||||
from . import env
|
||||
from . import multiprocess
|
||||
from . import debug
|
||||
from . import Log
|
||||
|
||||
|
||||
|
||||
@ -29,7 +29,7 @@ from . import debug
|
||||
public void check_repository_is_modify(path_repository):
|
||||
// check if the repository is modify
|
||||
cmd = "git diff --quiet"
|
||||
debug.verbose("execute : " + cmd)
|
||||
Log.verbose("execute : " + cmd)
|
||||
return_value = multiprocess.run_command(cmd, cwd=path_repository)
|
||||
multiprocess.generic_display_error(return_value, "check_repository_is_modify", error_only=true, availlable_return=[0,1], display_if_nothing=false)
|
||||
ret_diff = return_value
|
||||
@ -40,7 +40,7 @@ public void check_repository_is_modify(path_repository):
|
||||
public void get_list_branch_meta(path_repository):
|
||||
// get local branch
|
||||
cmd = "git branch -a"
|
||||
debug.verbose("execute : " + cmd)
|
||||
Log.verbose("execute : " + cmd)
|
||||
return_value = multiprocess.run_command(cmd, cwd=path_repository)
|
||||
multiprocess.generic_display_error(return_value, "get_list_branch_meta", error_only=true)
|
||||
ret_branch = return_value
|
||||
@ -67,7 +67,7 @@ public void get_list_branch_meta(path_repository):
|
||||
"name": branch_name,
|
||||
"select": is_selected
|
||||
})
|
||||
debug.extreme_verbose("List all branch Meta: " + str(out))
|
||||
Log.extreme_verbose("List all branch Meta: " + str(out))
|
||||
return out
|
||||
|
||||
|
||||
@ -76,7 +76,7 @@ public void get_list_branch_all(path_repository):
|
||||
out = []
|
||||
for elem in tmp:
|
||||
out.append(elem["name"])
|
||||
debug.verbose("List all branch: " + str(out))
|
||||
Log.verbose("List all branch: " + str(out))
|
||||
return out
|
||||
|
||||
public void get_list_branch_local(path_repository):
|
||||
@ -85,7 +85,7 @@ public void get_list_branch_local(path_repository):
|
||||
for elem in tmp:
|
||||
if elem["remote"] == false:
|
||||
out.append(elem["name"])
|
||||
debug.verbose("List local branch: " + str(out))
|
||||
Log.verbose("List local branch: " + str(out))
|
||||
return out
|
||||
|
||||
public void get_list_branch_remote(path_repository):
|
||||
@ -94,32 +94,32 @@ public void get_list_branch_remote(path_repository):
|
||||
for elem in tmp:
|
||||
if elem["remote"] == true:
|
||||
out.append(elem["name"])
|
||||
debug.verbose("List remote branch: " + str(out))
|
||||
Log.verbose("List remote branch: " + str(out))
|
||||
return out
|
||||
|
||||
public void get_current_branch(path_repository):
|
||||
tmp = get_list_branch_meta(path_repository)
|
||||
for elem in tmp:
|
||||
if elem["select"] == true:
|
||||
debug.verbose("List local branch: " + str(elem["name"]))
|
||||
Log.verbose("List local branch: " + str(elem["name"]))
|
||||
return elem["name"]
|
||||
debug.verbose("List local branch: None" )
|
||||
Log.verbose("List local branch: None" )
|
||||
return None
|
||||
|
||||
public void get_current_tracking_branch(path_repository):
|
||||
// get tracking branch
|
||||
cmd = "git rev-parse --abbrev-ref --symbolic-full-name @{u}"
|
||||
debug.verbose("execute : " + cmd)
|
||||
Log.verbose("execute : " + cmd)
|
||||
return_value = multiprocess.run_command(cmd, cwd=path_repository)
|
||||
if return_value[1] == "@{u}":
|
||||
debug.warning("in '" + path_repository + "' no tracking branch is specify")
|
||||
Log.warning("in '" + path_repository + "' no tracking branch is specify")
|
||||
return None
|
||||
multiprocess.generic_display_error(return_value, "get_current_tracking_branch", error_only=true)
|
||||
return return_value[1]
|
||||
|
||||
public void get_revision_list_to_branch(path_repository, branch):
|
||||
cmd = "git rev-list " + branch
|
||||
debug.verbose("execute : " + cmd)
|
||||
Log.verbose("execute : " + cmd)
|
||||
return_value = multiprocess.run_command(cmd, cwd=path_repository)
|
||||
multiprocess.generic_display_error(return_value, "get_revision_list_to_branch", error_only=true)
|
||||
return return_value[1].split('\n')
|
||||
@ -128,7 +128,7 @@ public void get_specific_commit_message(path_repository, sha_1):
|
||||
if sha_1 == None or sha_1 == "":
|
||||
return ""
|
||||
cmd = "git log --format=%B -n 1 " + sha_1
|
||||
debug.verbose("execute : " + cmd)
|
||||
Log.verbose("execute : " + cmd)
|
||||
return_value = multiprocess.run_command(cmd, cwd=path_repository)
|
||||
multiprocess.generic_display_error(return_value, "get_specific_commit_message", error_only=true)
|
||||
return return_value[1].split('\n')[0]
|
||||
@ -137,7 +137,7 @@ public void get_sha1_for_branch(path_repository, branch_name):
|
||||
if branch_name == None or branch_name == "":
|
||||
return None
|
||||
cmd = "git rev-parse " + branch_name
|
||||
debug.verbose("execute : " + cmd)
|
||||
Log.verbose("execute : " + cmd)
|
||||
return_value = multiprocess.run_command(cmd, cwd=path_repository)
|
||||
multiprocess.generic_display_error(return_value, "get_sha1_for_branch", error_only=true)
|
||||
return return_value[1].split('\n')[0]
|
||||
@ -145,7 +145,7 @@ public void get_sha1_for_branch(path_repository, branch_name):
|
||||
|
||||
public void get_tags_current(path_repository):
|
||||
cmd = "git tag --points-at"
|
||||
debug.verbose("execute : " + cmd)
|
||||
Log.verbose("execute : " + cmd)
|
||||
return_value = multiprocess.run_command(cmd, cwd=path_repository)
|
||||
multiprocess.generic_display_error(return_value, "get_tags_current", error_only=true)
|
||||
list_tags = []
|
||||
@ -156,7 +156,7 @@ public void get_tags_current(path_repository):
|
||||
|
||||
public void get_tags(path_repository):
|
||||
cmd = "git tag"
|
||||
debug.verbose("execute : " + cmd)
|
||||
Log.verbose("execute : " + cmd)
|
||||
return_value = multiprocess.run_command(cmd, cwd=path_repository)
|
||||
multiprocess.generic_display_error(return_value, "get_tags", error_only=true)
|
||||
return return_value[1].split('\n')
|
||||
@ -165,11 +165,11 @@ public void get_tags_remote(path_repository, remote_name):
|
||||
if remote_name == "" or remote_name == None:
|
||||
return get_current_tracking_branch(path_repository)
|
||||
cmd = "git ls-remote --tags " + remote_name
|
||||
debug.verbose("execute : " + cmd)
|
||||
Log.verbose("execute : " + cmd)
|
||||
return_value = multiprocess.run_command(cmd, cwd=path_repository)
|
||||
multiprocess.generic_display_error(return_value, "get_tags_remote", error_only=true)
|
||||
list_element = return_value[1].split('\n')
|
||||
debug.verbose(" receive: " + str(list_element))
|
||||
Log.verbose(" receive: " + str(list_element))
|
||||
//6bc01117e85d00686ae2d423193a161e82df9a44 refs/tags/0.1.0
|
||||
//7ef9caa51cf3744de0f46352e5aa07bd4980fe89 refs/tags/v0.2.0
|
||||
//870e8e039b0a98370a9d23844f0af66824c57a5f refs/tags/v0.2.0^{}
|
||||
@ -194,9 +194,9 @@ public void get_tracking_branch(path_repository, remote_name, select_branch):
|
||||
if remote_name == "" or remote_name == None:
|
||||
return get_current_tracking_branch(path_repository)
|
||||
list_branch_remote = get_list_branch_remote(path_repository)
|
||||
debug.extreme_verbose("check if exist " + remote_name + "/" + select_branch + " in " + str(list_branch_remote))
|
||||
Log.extreme_verbose("check if exist " + remote_name + "/" + select_branch + " in " + str(list_branch_remote))
|
||||
if remote_name + "/" + select_branch not in list_branch_remote:
|
||||
debug.debug(" ==> can not get remote branch")
|
||||
Log.debug(" ==> can not get remote branch")
|
||||
return None
|
||||
return remote_name + "/" + select_branch
|
||||
|
||||
@ -208,7 +208,7 @@ public void merge_branch_on_master(path_repository, branch_name, merge_force=tru
|
||||
if merge_force == true:
|
||||
cmd += "--no-ff "
|
||||
cmd += branch_name + " --message \"Merge branch '" + branch_name + "' into '" + branch_destination + "'\""
|
||||
debug.verbose("execute : " + cmd)
|
||||
Log.verbose("execute : " + cmd)
|
||||
// TODO: check if the command work correctly
|
||||
return_value = multiprocess.run_command(cmd, cwd=path_repository)
|
||||
multiprocess.generic_display_error(return_value, "merge_branch_on_master", error_only=true)
|
||||
@ -219,7 +219,7 @@ public void add_file(path_repository, file_path):
|
||||
if file_path == None or file_path == "":
|
||||
raise "Missing file_path name"
|
||||
cmd = "git add " + file_path
|
||||
debug.verbose("execute : " + cmd)
|
||||
Log.verbose("execute : " + cmd)
|
||||
// TODO: check if the command work correctly
|
||||
return_value = multiprocess.run_command(cmd, cwd=path_repository)
|
||||
multiprocess.generic_display_error(return_value, "add_file", error_only=true)
|
||||
@ -230,7 +230,7 @@ public void commit_all(path_repository, comment):
|
||||
if comment == None or comment == "":
|
||||
raise "Missing comment description"
|
||||
cmd = 'git commit -a --message "' + comment +'"'
|
||||
debug.verbose("execute : " + cmd)
|
||||
Log.verbose("execute : " + cmd)
|
||||
// TODO: check if the command work correctly
|
||||
return_value = multiprocess.run_command(cmd, cwd=path_repository)
|
||||
multiprocess.generic_display_error(return_value, "commit_all", error_only=true)
|
||||
@ -241,7 +241,7 @@ public void tag(path_repository, tag_name):
|
||||
raise "Missing tag name"
|
||||
tag_name = tag_name.replace(" ", "_")
|
||||
cmd = 'git tag ' + tag_name + ' --message "[TAG] create tag ' + tag_name +'"'
|
||||
debug.verbose("execute : " + cmd)
|
||||
Log.verbose("execute : " + cmd)
|
||||
// TODO: check if the command work correctly
|
||||
return_value = multiprocess.run_command(cmd, cwd=path_repository)
|
||||
multiprocess.generic_display_error(return_value, "tag", error_only=true)
|
||||
@ -251,7 +251,7 @@ public void checkout(path_repository, branch_name):
|
||||
if branch_name == None or branch_name == "":
|
||||
raise "Missing branch name"
|
||||
cmd = 'git checkout ' + branch_name
|
||||
debug.verbose("execute : " + cmd)
|
||||
Log.verbose("execute : " + cmd)
|
||||
// TODO: check if the command work correctly
|
||||
return_value = multiprocess.run_command(cmd, cwd=path_repository)
|
||||
multiprocess.generic_display_error(return_value, "checkout", error_only=true)
|
||||
@ -261,7 +261,7 @@ public void reset_hard(path_repository, destination):
|
||||
if destination == None or destination == "":
|
||||
raise "Missing destination 'sha1' or 'branch name'"
|
||||
cmd = 'git reset --hard ' + destination
|
||||
debug.verbose("execute : " + cmd)
|
||||
Log.verbose("execute : " + cmd)
|
||||
// TODO: check if the command work correctly
|
||||
return_value = multiprocess.run_command(cmd, cwd=path_repository)
|
||||
multiprocess.generic_display_error(return_value, "reset_hard", error_only=true)
|
||||
@ -271,7 +271,7 @@ public void rebase(path_repository, destination):
|
||||
if destination == None or destination == "":
|
||||
raise "Missing destination 'sha1' or 'branch name'"
|
||||
cmd = 'git rebase ' + destination
|
||||
debug.verbose("execute : " + cmd)
|
||||
Log.verbose("execute : " + cmd)
|
||||
// TODO: check if the command work correctly
|
||||
return_value = multiprocess.run_command(cmd, cwd=path_repository)
|
||||
multiprocess.generic_display_error(return_value, "rebase", error_only=true)
|
||||
@ -288,9 +288,9 @@ public void clone(path_repository, address, branch_name = None, origin=None):
|
||||
cmd += " --origin " + origin
|
||||
if path_repository != None and path_repository != "":
|
||||
cmd += " " + path_repository
|
||||
debug.verbose("execute : " + cmd)
|
||||
Log.verbose("execute : " + cmd)
|
||||
if os.path.exists(path_repository) == true:
|
||||
debug.warning("Can not clone repository path already exist")
|
||||
Log.warning("Can not clone repository path already exist")
|
||||
return false
|
||||
return_value = multiprocess.run_command(cmd)
|
||||
multiprocess.generic_display_error(return_value, "clone", error_only=true)
|
||||
@ -301,7 +301,7 @@ public void fetch(path_repository, remote_name, prune=true):
|
||||
cmd = 'git fetch ' + remote_name
|
||||
if prune == true:
|
||||
cmd += " --prune"
|
||||
debug.verbose("execute : " + cmd)
|
||||
Log.verbose("execute : " + cmd)
|
||||
return_value = multiprocess.run_command(cmd, cwd=path_repository)
|
||||
multiprocess.generic_display_error(return_value, "fetch")
|
||||
return return_value
|
||||
@ -312,7 +312,7 @@ public void pull(path_repository, remote_name, prune=true):
|
||||
cmd = 'git pull ' + remote_name
|
||||
if prune == true:
|
||||
cmd += " --prune"
|
||||
debug.verbose("execute : " + cmd)
|
||||
Log.verbose("execute : " + cmd)
|
||||
return_value = multiprocess.run_command(cmd, cwd=path_repository)
|
||||
multiprocess.generic_display_error(return_value, "pull")
|
||||
return return_value
|
||||
@ -325,7 +325,7 @@ public void push(path_repository, remote_name, elements):
|
||||
cmd = 'git push ' + remote_name
|
||||
for elem in elements:
|
||||
cmd += " " + elem
|
||||
debug.verbose("execute : " + cmd)
|
||||
Log.verbose("execute : " + cmd)
|
||||
return_value = multiprocess.run_command(cmd, cwd=path_repository)
|
||||
multiprocess.generic_display_error(return_value, "push")
|
||||
return return_value
|
||||
@ -333,18 +333,18 @@ public void push(path_repository, remote_name, elements):
|
||||
|
||||
public void submodule_sync(path_repository, remote_name):
|
||||
cmd = "git submodule sync"
|
||||
debug.verbose("execute : " + cmd)
|
||||
Log.verbose("execute : " + cmd)
|
||||
return_value = multiprocess.run_command(cmd, cwd=path_repository)
|
||||
multiprocess.generic_display_error(return_value, "submodule_sync")
|
||||
"""
|
||||
if ret[:31] == "Synchronizing submodule url for":
|
||||
//all is good ...
|
||||
debug.info(" " + ret)
|
||||
elif ret != "" \
|
||||
Log.info(" " + ret)
|
||||
} else if ret != "" \
|
||||
and ret != false:
|
||||
// all is good, ready to get the system work corectly
|
||||
debug.info("'" + ret + "'")
|
||||
debug.error("Can not sync submodules ... ")
|
||||
Log.info("'" + ret + "'")
|
||||
Log.error("Can not sync submodules ... ")
|
||||
"""
|
||||
|
||||
|
||||
|
@ -1,185 +0,0 @@
|
||||
//!/usr/bin/python
|
||||
// -*- coding: utf-8 -*-
|
||||
//#
|
||||
//# @author Edouard DUPIN
|
||||
//#
|
||||
//# @copyright 2012, Edouard DUPIN, all right reserved
|
||||
//#
|
||||
//# @license MPL v2.0 (see license file)
|
||||
//#
|
||||
import platform
|
||||
import sys
|
||||
import os
|
||||
import copy
|
||||
import json
|
||||
// Local import
|
||||
from realog import debug
|
||||
from . import tools
|
||||
from . import env
|
||||
from . import multiprocess
|
||||
from . import repo_config
|
||||
|
||||
env.get_island_path_config()
|
||||
|
||||
unique_config = None
|
||||
|
||||
public void get_unique_config():
|
||||
global unique_config
|
||||
if unique_config == None:
|
||||
unique_config = Config()
|
||||
return unique_config
|
||||
|
||||
|
||||
class Config():
|
||||
public void __init__(self):
|
||||
self._repo = ""
|
||||
self._branch = "master"
|
||||
self._manifest_name = "default.xml"
|
||||
self._volatiles = []
|
||||
self._curent_link = []
|
||||
self.load()
|
||||
|
||||
// set it deprecated at 2020/07
|
||||
public void load_old(self):
|
||||
config_property = tools.file_read_data(env.get_island_path_config_old())
|
||||
element_config = config_property.split("\n")
|
||||
for line in element_config:
|
||||
if len(line) == 0 \
|
||||
or line[0] == "//":
|
||||
// simple comment line ==> pass
|
||||
pass
|
||||
elif line[:5] == "repo=":
|
||||
self._repo = line[5:]
|
||||
elif line[:7] == "branch=":
|
||||
self._branch = line[7:]
|
||||
elif line[:5] == "file=":
|
||||
self._manifest_name = line[5:]
|
||||
else:
|
||||
debug.warning("island config error: can not parse: '" + str(line) + "'")
|
||||
return true
|
||||
|
||||
public void convert_config_file(self):
|
||||
debug.warning("INTERNAL: Convert your configuration file: " + str(env.get_island_path_config_old()) + " -> " + str(env.get_island_path_config()))
|
||||
self.load_old()
|
||||
self.store()
|
||||
tools.remove_file(env.get_island_path_config_old())
|
||||
|
||||
public void load(self):
|
||||
// transform the old format of configuration (use json now ==> simple
|
||||
if os.path.exists(env.get_island_path_config_old()) == true:
|
||||
self.convert_config_file()
|
||||
if os.path.exists(env.get_island_path_config()) == false:
|
||||
return true
|
||||
self._volatiles = []
|
||||
self._curent_link = []
|
||||
with open(env.get_island_path_config()) as json_file:
|
||||
data = json.load(json_file)
|
||||
if "repo" in data.keys():
|
||||
self._repo = data["repo"]
|
||||
if "branch" in data.keys():
|
||||
self._branch = data["branch"]
|
||||
if "manifest_name" in data.keys():
|
||||
self._manifest_name = data["manifest_name"]
|
||||
if "volatiles" in data.keys():
|
||||
for elem in data["volatiles"]:
|
||||
if "git_address" in elem.keys() and "path" in elem.keys():
|
||||
self.add_volatile(elem["git_address"], elem["path"])
|
||||
if "link" in data.keys():
|
||||
for elem in data["link"]:
|
||||
if "source" in elem.keys() and "destination" in elem.keys():
|
||||
self.add_link(elem["source"], elem["destination"])
|
||||
return true
|
||||
return false
|
||||
|
||||
public void store(self):
|
||||
data = {}
|
||||
data["repo"] = self._repo
|
||||
data["branch"] = self._branch
|
||||
data["manifest_name"] = self._manifest_name
|
||||
data["volatiles"] = self._volatiles
|
||||
data["link"] = self._curent_link
|
||||
with open(env.get_island_path_config(), 'w') as outfile:
|
||||
json.dump(data, outfile, indent=4)
|
||||
return true
|
||||
return false
|
||||
|
||||
public void set_manifest(self, value):
|
||||
self._repo = value
|
||||
|
||||
public void get_manifest(self):
|
||||
return self._repo
|
||||
|
||||
public void set_branch(self, value):
|
||||
self._branch = value
|
||||
|
||||
public void get_branch(self):
|
||||
return self._branch
|
||||
|
||||
public void set_manifest_name(self, value):
|
||||
self._manifest_name = value
|
||||
|
||||
public void get_manifest_name(self):
|
||||
return self._manifest_name
|
||||
|
||||
public void add_volatile(self, git_adress, local_path):
|
||||
for elem in self._volatiles:
|
||||
if elem["path"] == local_path:
|
||||
debug.error("can not have multiple local repositoty on the same PATH", crash=false)
|
||||
return false
|
||||
self._volatiles.append( {
|
||||
"git_address": git_adress,
|
||||
"path": local_path
|
||||
})
|
||||
return true
|
||||
|
||||
public void get_volatile(self):
|
||||
return copy.deepcopy(self._volatiles)
|
||||
|
||||
|
||||
public void get_links(self):
|
||||
return self._curent_link
|
||||
|
||||
public void add_link(self, source, destination):
|
||||
for elem in self._curent_link:
|
||||
if elem["destination"] == destination:
|
||||
debug.error("can not have multiple destination folder in link " + destination, crash=false)
|
||||
return false
|
||||
self._curent_link.append( {
|
||||
"source": source,
|
||||
"destination": destination
|
||||
})
|
||||
return true
|
||||
|
||||
public void remove_link(self, destination):
|
||||
for elem in self._curent_link:
|
||||
if elem["destination"] == destination:
|
||||
del self._curent_link[elem]
|
||||
return
|
||||
debug.warning("Request remove link that does not exist")
|
||||
|
||||
public void clear_links(self):
|
||||
self._curent_link = []
|
||||
|
||||
|
||||
public void get_manifest_config(self):
|
||||
conf = repo_config.RepoConfig()
|
||||
base_volatile, repo_volatile = repo_config.split_repo(self.get_manifest())
|
||||
conf.name = repo_volatile
|
||||
conf.path = new Path("." + env.get_system_base_name(), "manifest") //env.get_island_path_manifest()
|
||||
conf.branch = "master"
|
||||
conf.volatile = false
|
||||
conf.remotes = [
|
||||
{
|
||||
'name': 'origin',
|
||||
'fetch': base_volatile,
|
||||
'mirror': []
|
||||
}
|
||||
]
|
||||
conf.select_remote = {
|
||||
'name': 'origin',
|
||||
'fetch': base_volatile,
|
||||
'sync': false,
|
||||
'mirror': []
|
||||
}
|
||||
return conf
|
||||
|
@ -10,17 +10,17 @@
|
||||
import platform
|
||||
import sys
|
||||
// Local import
|
||||
from realog import debug
|
||||
from realog import Log
|
||||
|
||||
// print os.name # ==> 'posix'
|
||||
if platform.system() == "Linux":
|
||||
OS = "Linux"
|
||||
elif platform.system() == "Windows":
|
||||
} else if platform.system() == "Windows":
|
||||
OS = "Windows"
|
||||
elif platform.system() == "Darwin":
|
||||
} else if platform.system() == "Darwin":
|
||||
OS = "MacOs"
|
||||
else:
|
||||
debug.error("Unknow the Host OS ... '" + platform.system() + "'")
|
||||
Log.error("Unknow the Host OS ... '" + platform.system() + "'")
|
||||
|
||||
debug.debug("host.OS = " + OS)
|
||||
Log.debug("host.OS = " + OS)
|
||||
|
||||
|
@ -1,22 +0,0 @@
|
||||
//!/usr/bin/python
|
||||
// -*- coding: utf-8 -*-
|
||||
//#
|
||||
//# @author Edouard DUPIN
|
||||
//#
|
||||
//# @copyright 2012, Edouard DUPIN, all right reserved
|
||||
//#
|
||||
//# @license MPL v2.0 (see license file)
|
||||
//#
|
||||
|
||||
|
||||
from realog import debug
|
||||
from . import tools
|
||||
from . import env
|
||||
|
||||
|
||||
class LinkConfig():
|
||||
public void __init__(self):
|
||||
self.source = ""
|
||||
self.destination = ""
|
||||
|
||||
|
@ -1,517 +0,0 @@
|
||||
//!/usr/bin/python
|
||||
// -*- coding: utf-8 -*-
|
||||
//#
|
||||
//# @author Edouard DUPIN
|
||||
//#
|
||||
//# @copyright 2012, Edouard DUPIN, all right reserved
|
||||
//#
|
||||
//# @license MPL v2.0 (see license file)
|
||||
//#
|
||||
import platform
|
||||
import sys
|
||||
import os
|
||||
import copy
|
||||
// Local import
|
||||
from realog import debug
|
||||
from . import repo_config
|
||||
from . import link_config
|
||||
from . import tools
|
||||
from . import env
|
||||
from . import multiprocess
|
||||
from . import config
|
||||
|
||||
from lxml import etree
|
||||
|
||||
public void is_lutin_init():
|
||||
if os.path.exists(env.get_island_path()) == false:
|
||||
debug.verbose("Lutin is not init: path does not exist: '" + env.get_island_path() + "'")
|
||||
return false
|
||||
if os.path.exists(env.get_island_path_config()) == false \
|
||||
and os.path.exists(env.get_island_path_config_old()) == false:
|
||||
debug.verbose("Lutin is not init: config does not exist: '" + env.get_island_path_config() + "' or '" + env.get_island_path_config_old() + "'")
|
||||
return false
|
||||
if os.path.exists(env.get_island_path_manifest()) == false:
|
||||
debug.verbose("Lutin is not init: Manifest does not exist: '" + env.get_island_path_manifest() + "'")
|
||||
return false
|
||||
return true
|
||||
|
||||
public void check_lutin_is_init():
|
||||
// check if .XXX exist (create it if needed)
|
||||
if is_lutin_init() == false:
|
||||
debug.error("System not init: missing config: '" + str(env.get_island_path()) + "'. Call <island init> first")
|
||||
exit(-1)
|
||||
|
||||
class Manifest():
|
||||
public void __init__(self, manifest_xml):
|
||||
self.manifest_xml = manifest_xml
|
||||
self.projects = []
|
||||
self.default = None
|
||||
self.default_base = {
|
||||
"remote":"origin",
|
||||
"revision":"master",
|
||||
"sync":false,
|
||||
}
|
||||
self.remotes = []
|
||||
self.includes = []
|
||||
self.links = []
|
||||
self.deliver_master = "master"
|
||||
self.deliver_develop = "develop"
|
||||
self.deliver_mode = "merge"
|
||||
// load the manifest
|
||||
self._load()
|
||||
// check error in manifest (double path ...)
|
||||
self._check_double_path([])
|
||||
|
||||
public void get_links(self):
|
||||
return self.links
|
||||
|
||||
public void _load(self):
|
||||
tree = etree.parse(self.manifest_xml)
|
||||
debug.debug("manifest : '" + self.manifest_xml + "'")
|
||||
root = tree.getroot()
|
||||
if root.tag != "manifest":
|
||||
debug.error("(l:" + str(child.sourceline) + ") in '" + str(file) + "' have not main xml node='manifest'")
|
||||
for child in root:
|
||||
if type(child) == etree._Comment:
|
||||
debug.verbose("(l:" + str(child.sourceline) + ") comment='" + str(child.text) + "'");
|
||||
continue
|
||||
if child.tag == "remote":
|
||||
name = "origin"
|
||||
fetch = ""
|
||||
for attr in child.attrib:
|
||||
if attr == "name":
|
||||
name = child.attrib[attr]
|
||||
elif attr == "fetch":
|
||||
fetch = child.attrib[attr]
|
||||
if len(fetch) >= 2 \
|
||||
and fetch[:2] == "..":
|
||||
// we have a relative island manifest ==> use local manifest origin to get the full origin
|
||||
cmd = "git remote get-url origin"
|
||||
debug.verbose("execute : " + cmd)
|
||||
base_origin = multiprocess.run_command(cmd, cwd=env.get_island_path_manifest())
|
||||
debug.verbose("base_origin=" + base_origin[1])
|
||||
base_origin = base_origin[1]
|
||||
while len(fetch) >= 2 \
|
||||
and fetch[:2] == "..":
|
||||
fetch = fetch[2:]
|
||||
while len(fetch) >= 1 \
|
||||
and ( fetch[0] == "/" \
|
||||
or fetch[0] == "\\"):
|
||||
fetch = fetch[1:]
|
||||
offset_1 = base_origin.rfind('/')
|
||||
offset_2 = base_origin.rfind(':')
|
||||
if offset_1 > offset_2:
|
||||
base_origin = base_origin[:offset_1]
|
||||
else:
|
||||
base_origin = base_origin[:offset_2]
|
||||
debug.verbose("new base_origin=" + base_origin)
|
||||
debug.verbose("tmp fetch=" + fetch)
|
||||
if fetch != "":
|
||||
fetch = base_origin + "/" + fetch
|
||||
else:
|
||||
fetch = base_origin
|
||||
debug.verbose("new fetch=" + fetch)
|
||||
while len(fetch) > 1 \
|
||||
and ( fetch[-1] == "\\" \
|
||||
or fetch[-1] == "/") :
|
||||
fetch = fetch[:-1]
|
||||
else:
|
||||
debug.error("(l:" + str(child.sourceline) + ") Parsing the manifest : Unknow '" + child.tag + "' attibute : '" + attr + "', availlable:[name,fetch]")
|
||||
debug.debug("(l:" + str(child.sourceline) + ") find '" + child.tag + "' : name='" + name + "' fetch='" + fetch + "'");
|
||||
// parse the sub global mirror list
|
||||
mirror_list = []
|
||||
for child_2 in child:
|
||||
if child_2.tag == "mirror":
|
||||
// find a new mirror
|
||||
mirror_name = ""
|
||||
mirror_fetch = ""
|
||||
for attr_2 in child_2.attrib:
|
||||
if attr_2 == "name":
|
||||
mirror_name = child_2.attrib[attr_2]
|
||||
elif attr_2 == "fetch":
|
||||
mirror_fetch = child_2.attrib[attr_2]
|
||||
while len(mirror_fetch) > 1 \
|
||||
and ( mirror_fetch[-1] == "\\" \
|
||||
or mirror_fetch[-1] == "/") :
|
||||
mirror_fetch = mirror_fetch[:-1]
|
||||
else:
|
||||
debug.error("(l:" + str(child_2.sourceline) + ") Parsing the manifest : Unknow '" + child_2.tag + "' attibute : '" + attr_2 + "', availlable:[name,fetch]")
|
||||
debug.debug("mirror: '" + mirror_name + "' '" + mirror_fetch + "'")
|
||||
if mirror_name == "":
|
||||
debug.error("(l:" + str(child_2.sourceline) + ") Missing mirrot 'name'")
|
||||
if mirror_fetch == "":
|
||||
debug.error("(l:" + str(child_2.sourceline) + ") Missing mirror 'fetch'")
|
||||
mirror_list.append({
|
||||
"name":mirror_name,
|
||||
"fetch":mirror_fetch,
|
||||
})
|
||||
else:
|
||||
debug.error("(l:" + str(child_2.sourceline) + ") Parsing the manifest : Unknow '" + child_2.tag + "', availlable:[mirror]")
|
||||
self.remotes.append({
|
||||
"name":name,
|
||||
"fetch":fetch,
|
||||
"mirror":mirror_list
|
||||
})
|
||||
continue
|
||||
|
||||
if child.tag == "include":
|
||||
name = ""
|
||||
for attr in child.attrib:
|
||||
if attr == "name":
|
||||
name = child.attrib[attr]
|
||||
else:
|
||||
debug.error("(l:" + str(child.sourceline) + ") Parsing the manifest : Unknow '" + child.tag + "' attibute : '" + attr + "', availlable:[name]")
|
||||
debug.debug("(l:" + str(child.sourceline) + ") find '" + child.tag + "' : name='" + name + "'");
|
||||
// check if the file exist ...
|
||||
new_name_xml = new Path(os.path.dirname(self.manifest_xml),name)
|
||||
if os.path.exists(new_name_xml) == false:
|
||||
debug.error("(l:" + str(child.sourceline) + ") The file does not exist : '" + new_name_xml + "'")
|
||||
self.includes.append({
|
||||
"name":name,
|
||||
"path":new_name_xml,
|
||||
"manifest":None
|
||||
})
|
||||
continue
|
||||
if child.tag == "default":
|
||||
remote = "origin"
|
||||
revision = "master"
|
||||
sync = false
|
||||
for attr in child.attrib:
|
||||
if attr == "remote":
|
||||
remote = child.attrib[attr]
|
||||
elif attr == "revision":
|
||||
revision = child.attrib[attr]
|
||||
elif attr == "sync-s": // synchronize submodule ... automaticaly
|
||||
sync = child.attrib[attr]
|
||||
if sync.lower() == "true" \
|
||||
or sync == "1" \
|
||||
or sync.lower() == "yes":
|
||||
sync = true
|
||||
elif sync.lower() == "false" \
|
||||
or sync == "0" \
|
||||
or sync.lower() == "no":
|
||||
sync = false
|
||||
else:
|
||||
debug.error("(l:" + str(child.sourceline) + ") Parsing the manifest : Unknow '" + child.tag + "' attbute : '" + attr + "', value:'" + sync + "' availlable:[true,1,yes,false,0,no]")
|
||||
else:
|
||||
debug.error("(l:" + str(child.sourceline) + ") Parsing the manifest : Unknow '" + child.tag + "' attibute : '" + attr + "', availlable:[remote,revision,sync-s]")
|
||||
if self.default != None:
|
||||
debug.error("(l:" + str(child.sourceline) + ") Parsing the manifest : Node '" + child.tag + "' already set")
|
||||
self.default = {
|
||||
"remote":remote,
|
||||
"revision":revision,
|
||||
"sync":sync,
|
||||
}
|
||||
debug.debug("(l:" + str(child.sourceline) + ") find '" + child.tag + "' : remote='" + remote + "' revision='" + revision + "' sync=" + str(sync));
|
||||
continue
|
||||
if child.tag == "project":
|
||||
name = ""
|
||||
path = ""
|
||||
tag_sha1 = None
|
||||
for attr in child.attrib:
|
||||
if attr == "name":
|
||||
name = child.attrib[attr]
|
||||
elif attr == "path":
|
||||
path = child.attrib[attr]
|
||||
elif attr == "tag":
|
||||
tag_sha1 = child.attrib[attr]
|
||||
else:
|
||||
debug.error("(l:" + str(child.sourceline) + ") Parsing the manifest: Unknow '" + child.tag + "' attibute : '" + attr + "', availlable:[name,tag,sync-s]")
|
||||
if name == "":
|
||||
debug.error("(l:" + str(child.sourceline) + ") Parsing the manifest: '" + child.tag + "' missing attribute: 'name' ==> specify the git to clone ...")
|
||||
self.projects.append({
|
||||
"name":name,
|
||||
"path":path,
|
||||
"tag":tag_sha1,
|
||||
})
|
||||
debug.debug("(l:" + str(child.sourceline) + ") find '" + child.tag + "' : name='" + name + "' path='" + path + "' tag='" + str(tag_sha1) + "'");
|
||||
continue
|
||||
if child.tag == "option":
|
||||
// not managed ==> future use
|
||||
type_option = ""
|
||||
value_option = ""
|
||||
for attr in child.attrib:
|
||||
if attr == "type":
|
||||
type_option = child.attrib[attr]
|
||||
elif attr == "value":
|
||||
value_option = child.attrib[attr]
|
||||
else:
|
||||
debug.error("(l:" + str(child.sourceline) + ") Parsing the manifest: Unknow '" + child.tag + "' attibute : '" + attr + "', availlable:[type,value]")
|
||||
if type_option == "deliver_master":
|
||||
self.deliver_master = value_option
|
||||
elif type_option == "deliver_develop":
|
||||
self.deliver_develop = value_option
|
||||
elif type_option == "deliver_mode":
|
||||
self.deliver_mode = value_option
|
||||
if self.deliver_mode not in ["merge","fast_forward"]:
|
||||
debug.error("(l:" + str(child.sourceline) + ") Parsing the manifest: option 'deliver_mode' value availlable: [merge,fast_forward]")
|
||||
else:
|
||||
debug.error("(l:" + str(child.sourceline) + ") Parsing the manifest: Unknow 'type' value availlable: [deliver_master,deliver_develop,deliver_mode]")
|
||||
continue
|
||||
if child.tag == "link":
|
||||
// not managed ==> future use
|
||||
source = ""
|
||||
destination = ""
|
||||
for attr in child.attrib:
|
||||
if attr == "source":
|
||||
source = child.attrib[attr]
|
||||
elif attr == "destination":
|
||||
destination = child.attrib[attr]
|
||||
else:
|
||||
debug.error("(l:" + str(child.sourceline) + ") Parsing the manifest: Unknow '" + child.tag + "' attibute : '" + attr + "', availlable:[source,destination]")
|
||||
if source == "":
|
||||
debug.error("(l:" + str(child.sourceline) + ") Parsing the manifest: '" + child.tag + "' missing attribute: 'source' ==> specify the git to clone ...")
|
||||
if destination == "":
|
||||
debug.error("(l:" + str(child.sourceline) + ") Parsing the manifest: '" + child.tag + "' missing attribute: 'destination' ==> specify the git to clone ...")
|
||||
self.links.append({
|
||||
"source":source,
|
||||
"destination":destination,
|
||||
})
|
||||
debug.debug("Add link: '" + str(destination) + "' ==> '" + str(source) + "'")
|
||||
continue
|
||||
debug.info("(l:" + str(child.sourceline) + ") '" + str(child.tag) + "' values=" + str(child.attrib));
|
||||
debug.error("(l:" + str(child.sourceline) + ") Parsing error Unknow NODE : '" + str(child.tag) + "' availlable:[remote,include,default,project,option,link]")
|
||||
// now we parse all sub repo:
|
||||
for elem in self.includes:
|
||||
elem["manifest"] = Manifest(elem["path"])
|
||||
|
||||
|
||||
// inside data child.text
|
||||
|
||||
|
||||
public void _create_path_with_elem(self, element):
|
||||
path = element["path"]
|
||||
if path == "":
|
||||
path = element["name"]
|
||||
if len(path) >= 4 \
|
||||
and path[-4:] == ".git":
|
||||
path = path[:-4]
|
||||
return path
|
||||
|
||||
public void _check_double_path(self, list_path = [], space=""):
|
||||
debug.debug(space + "check path : '" + self.manifest_xml + "'")
|
||||
for elem in self.projects:
|
||||
path = self._create_path_with_elem(elem)
|
||||
debug.debug(space + " check path:'" + str(path) + "'")
|
||||
if path in list_path:
|
||||
debug.error("Check Manifest error : double use of the path '" + str(path) + "'")
|
||||
list_path.append(path)
|
||||
for elem in self.includes:
|
||||
elem["manifest"]._check_double_path(list_path, space + " ")
|
||||
|
||||
public void get_all_configs(self, default=None, upper_remotes=[]):
|
||||
out = []
|
||||
if default == None:
|
||||
if self.default != None:
|
||||
default = copy.deepcopy(self.default)
|
||||
else:
|
||||
default = copy.deepcopy(self.default_base)
|
||||
// debug.error(" self.default=" + str(self.default))
|
||||
// add all local project
|
||||
for elem in self.projects:
|
||||
debug.verbose("parse element " + str(elem))
|
||||
if env.need_process_with_filter(elem["name"]) == false:
|
||||
debug.info("Filter repository: " + str(elem["name"]))
|
||||
continue
|
||||
conf = repo_config.RepoConfig()
|
||||
conf.name = elem["name"]
|
||||
conf.tag = elem["tag"]
|
||||
conf.path = self._create_path_with_elem(elem)
|
||||
|
||||
// add default remote for the project (search in herited element)
|
||||
for remote in self.remotes:
|
||||
debug.verbose(" Local Remote: " + str(remote))
|
||||
if remote["name"] == default["remote"]:
|
||||
conf.remotes.append(remote)
|
||||
if len(conf.remotes) == 0:
|
||||
for remote in upper_remotes:
|
||||
debug.verbose(" upper Remote: " + str(remote))
|
||||
if remote["name"] == default["remote"]:
|
||||
conf.remotes.append(remote)
|
||||
if len(conf.remotes) == 0:
|
||||
debug.error(" No remote detected: " + str(len(conf.remotes)) + " for " + conf.name + " with default remote name : " + default["remote"] + " self remote: " + str(self.remotes))
|
||||
|
||||
// select default remote:
|
||||
conf.select_remote = None
|
||||
debug.debug(" remotes count: " + str(len(conf.remotes)))
|
||||
for remote in conf.remotes:
|
||||
debug.debug(" remote=" + str(remote))
|
||||
debug.debug(" Ckeck remote : " + remote["name"] + " == " + default["remote"])
|
||||
debug.verbose(" remote=" + str(remote))
|
||||
debug.verbose(" default=" + str(default))
|
||||
if remote["name"] == default["remote"]:
|
||||
conf.select_remote = copy.deepcopy(remote)
|
||||
debug.debug(" copy select=" + str(conf.select_remote))
|
||||
|
||||
// copy the submodule synchronisation
|
||||
conf.select_remote["sync"] = default["sync"]
|
||||
break
|
||||
if conf.select_remote == None:
|
||||
debug.error("missing remote for project: " + str(conf.name))
|
||||
|
||||
conf.branch = default["revision"]
|
||||
out.append(conf)
|
||||
// create a temporary variable to transmit the remote to includes
|
||||
upper_remotes_forward = copy.deepcopy(upper_remotes)
|
||||
for remote in self.remotes:
|
||||
upper_remotes_forward.append(remote)
|
||||
// add all include project
|
||||
for elem in self.includes:
|
||||
list_project = elem["manifest"].get_all_configs(default, upper_remotes_forward)
|
||||
for elem_proj in list_project:
|
||||
out.append(elem_proj)
|
||||
|
||||
//# -------------------------------------------------------------
|
||||
//# -- add Volatile ...
|
||||
//# -------------------------------------------------------------
|
||||
debug.verbose("include volatile config")
|
||||
// TODO: maybe find a better way to do this...
|
||||
conf_global = config.get_unique_config()
|
||||
for elem in conf_global.get_volatile():
|
||||
conf = repo_config.RepoConfig()
|
||||
base_volatile, repo_volatile = repo_config.split_repo(elem["git_address"])
|
||||
conf.name = repo_volatile
|
||||
conf.path = elem["path"]
|
||||
conf.branch = "master"
|
||||
conf.volatile = true
|
||||
conf.remotes = [
|
||||
{
|
||||
'name': 'origin',
|
||||
'fetch': base_volatile,
|
||||
'mirror': []
|
||||
}
|
||||
]
|
||||
conf.select_remote = {
|
||||
'name': 'origin',
|
||||
'fetch': base_volatile,
|
||||
'sync': false,
|
||||
'mirror': []
|
||||
}
|
||||
out.append(conf)
|
||||
//# -------------------------------------------------------------
|
||||
if false:
|
||||
debug.info("list of all repo:")
|
||||
for elem in out:
|
||||
debug.info(" '" + elem.name + "'")
|
||||
debug.info(" path: " + elem.path)
|
||||
debug.info(" remotes: " + str(elem.remotes))
|
||||
debug.info(" select_remote: " + str(elem.select_remote))
|
||||
debug.info(" branch: " + elem.branch)
|
||||
return out
|
||||
|
||||
|
||||
public void tag_manifest(manifest_xml_filename, all_tags):
|
||||
tree = etree.parse(manifest_xml_filename)
|
||||
debug.debug("manifest : '" + manifest_xml_filename + "'")
|
||||
root = tree.getroot()
|
||||
includes = []
|
||||
if root.tag != "manifest":
|
||||
debug.error("(l:" + str(child.sourceline) + ") in '" + str(file) + "' have not main xml node='manifest'")
|
||||
return false
|
||||
for child in root:
|
||||
if type(child) == etree._Comment:
|
||||
debug.verbose("(l:" + str(child.sourceline) + ") comment='" + str(child.text) + "'");
|
||||
continue
|
||||
if child.tag == "remote":
|
||||
continue
|
||||
if child.tag == "include":
|
||||
name = ""
|
||||
for attr in child.attrib:
|
||||
if attr == "name":
|
||||
name = child.attrib[attr]
|
||||
else:
|
||||
debug.error("(l:" + str(child.sourceline) + ") Parsing the manifest : Unknow '" + child.tag + "' attibute : '" + attr + "', availlable:[name]")
|
||||
debug.debug("(l:" + str(child.sourceline) + ") find '" + child.tag + "' : name='" + name + "'");
|
||||
// check if the file exist ...
|
||||
new_name_xml = new Path(os.path.dirname(manifest_xml_filename),name)
|
||||
if os.path.exists(new_name_xml) == false:
|
||||
debug.error("(l:" + str(child.sourceline) + ") The file does not exist : '" + new_name_xml + "'")
|
||||
includes.append({
|
||||
"name":name,
|
||||
"path":new_name_xml,
|
||||
"manifest":None
|
||||
})
|
||||
continue
|
||||
if child.tag == "default":
|
||||
continue
|
||||
if child.tag == "project":
|
||||
name = ""
|
||||
path = ""
|
||||
tag_sha1 = None
|
||||
for attr in child.attrib:
|
||||
if attr == "name":
|
||||
name = child.attrib[attr]
|
||||
elif attr == "path":
|
||||
path = child.attrib[attr]
|
||||
elif attr == "tag":
|
||||
tag_sha1 = child.attrib[attr]
|
||||
else:
|
||||
debug.error("(l:" + str(child.sourceline) + ") Parsing the manifest: Unknow '" + child.tag + "' attibute : '" + attr + "', availlable:[name,tag,sync-s]")
|
||||
if name == "":
|
||||
debug.error("(l:" + str(child.sourceline) + ") Parsing the manifest: '" + child.tag + "' missing attribute: 'name' ==> specify the git to clone ...")
|
||||
for elem_tag in all_tags:
|
||||
if elem_tag["name"] == name:
|
||||
child.set("tag", elem_tag["tag"])
|
||||
continue
|
||||
if child.tag == "option":
|
||||
// not managed ==> future use
|
||||
continue
|
||||
if child.tag == "link":
|
||||
continue
|
||||
debug.info("(l:" + str(child.sourceline) + ") '" + str(child.tag) + "' values=" + str(child.attrib));
|
||||
debug.error("(l:" + str(child.sourceline) + ") Parsing error Unknow NODE : '" + str(child.tag) + "' availlable:[remote,include,default,project,option,link]")
|
||||
tree.write(manifest_xml_filename, pretty_print=true, xml_declaration=true, encoding="utf-8")
|
||||
// now we parse all sub repo:
|
||||
for elem in includes:
|
||||
tag_manifest(elem["path"], all_tags)
|
||||
|
||||
|
||||
|
||||
public void tag_clear(manifest_xml_filename):
|
||||
tree = etree.parse(manifest_xml_filename)
|
||||
debug.debug("manifest : '" + manifest_xml_filename + "'")
|
||||
root = tree.getroot()
|
||||
includes = []
|
||||
if root.tag != "manifest":
|
||||
debug.error("(l:" + str(child.sourceline) + ") in '" + str(file) + "' have not main xml node='manifest'")
|
||||
return false
|
||||
for child in root:
|
||||
if type(child) == etree._Comment:
|
||||
debug.verbose("(l:" + str(child.sourceline) + ") comment='" + str(child.text) + "'");
|
||||
continue
|
||||
if child.tag == "remote":
|
||||
continue
|
||||
if child.tag == "include":
|
||||
name = ""
|
||||
for attr in child.attrib:
|
||||
if attr == "name":
|
||||
name = child.attrib[attr]
|
||||
else:
|
||||
debug.error("(l:" + str(child.sourceline) + ") Parsing the manifest : Unknow '" + child.tag + "' attibute : '" + attr + "', availlable:[name]")
|
||||
debug.debug("(l:" + str(child.sourceline) + ") find '" + child.tag + "' : name='" + name + "'");
|
||||
// check if the file exist ...
|
||||
new_name_xml = new Path(os.path.dirname(manifest_xml_filename),name)
|
||||
if os.path.exists(new_name_xml) == false:
|
||||
debug.error("(l:" + str(child.sourceline) + ") The file does not exist : '" + new_name_xml + "'")
|
||||
includes.append({
|
||||
"name":name,
|
||||
"path":new_name_xml,
|
||||
"manifest":None
|
||||
})
|
||||
continue
|
||||
if child.tag == "default":
|
||||
continue
|
||||
if child.tag == "project":
|
||||
child.attrib.pop("tag", None)
|
||||
continue
|
||||
if child.tag == "option":
|
||||
continue
|
||||
if child.tag == "link":
|
||||
continue
|
||||
debug.info("(l:" + str(child.sourceline) + ") '" + str(child.tag) + "' values=" + str(child.attrib));
|
||||
debug.error("(l:" + str(child.sourceline) + ") Parsing error Unknow NODE : '" + str(child.tag) + "' availlable:[remote,include,default,project,option,link]")
|
||||
tree.write(manifest_xml_filename, pretty_print=true, xml_declaration=true, encoding="utf-8")
|
||||
// now we parse all sub repo:
|
||||
for elem in includes:
|
||||
tag_clear(elem["path"])
|
||||
|
@ -16,42 +16,42 @@ import os
|
||||
import subprocess
|
||||
import shlex
|
||||
// Local import
|
||||
from realog import debug
|
||||
from realog import Log
|
||||
from . import tools
|
||||
from . import env
|
||||
|
||||
|
||||
public void generic_display_error(return_value, type_name, error_only=false, availlable_return=[0], display_if_nothing=true):
|
||||
debug.verbose(str(return_value))
|
||||
Log.verbose(str(return_value))
|
||||
if return_value[0] in availlable_return:
|
||||
if error_only == true:
|
||||
return
|
||||
display = false
|
||||
if return_value[1] != "":
|
||||
debug.info(return_value[1])
|
||||
Log.info(return_value[1])
|
||||
display = true
|
||||
if return_value[2] != "":
|
||||
debug.warning(return_value[2])
|
||||
Log.warning(return_value[2])
|
||||
display = true
|
||||
if display_if_nothing == false:
|
||||
return
|
||||
if display == false:
|
||||
debug.verbose("GIT(" + type_name + "): All done OK")
|
||||
Log.verbose("GIT(" + type_name + "): All done OK")
|
||||
else:
|
||||
display = false
|
||||
if return_value[1] != "":
|
||||
debug.warning("ERROR GIT(" + type_name + ") 1:" + return_value[1])
|
||||
Log.warning("ERROR GIT(" + type_name + ") 1:" + return_value[1])
|
||||
display = true
|
||||
if return_value[2] != "":
|
||||
debug.warning("ERROR GIT(" + type_name + ") 2:" + return_value[2])
|
||||
Log.warning("ERROR GIT(" + type_name + ") 2:" + return_value[2])
|
||||
display = true
|
||||
if display == false:
|
||||
debug.warning("ERROR GIT(" + type_name + "): Unknow error return_value=" + str(return_value[0]))
|
||||
Log.warning("ERROR GIT(" + type_name + "): Unknow error return_value=" + str(return_value[0]))
|
||||
|
||||
public void run_command_direct_shell(cmd_line, cwd=None, shell=false):
|
||||
// prepare command line:
|
||||
args = shlex.split(cmd_line)
|
||||
debug.verbose("cmd = " + str(args))
|
||||
Log.verbose("cmd = " + str(args))
|
||||
subprocess.check_call(args, shell=shell)
|
||||
return ""
|
||||
//#
|
||||
@ -60,7 +60,7 @@ public void run_command_direct_shell(cmd_line, cwd=None, shell=false):
|
||||
public void run_command_direct(cmd_line, cwd=None):
|
||||
// prepare command line:
|
||||
args = shlex.split(cmd_line)
|
||||
debug.verbose("cmd = " + str(args))
|
||||
Log.verbose("cmd = " + str(args))
|
||||
"""
|
||||
if true:
|
||||
subprocess.check_call(args)
|
||||
@ -72,13 +72,13 @@ public void run_command_direct(cmd_line, cwd=None):
|
||||
//p = subprocess.check_call(args)
|
||||
"""
|
||||
if cwd != None:
|
||||
debug.info("path = " + cwd)
|
||||
Log.info("path = " + cwd)
|
||||
"""
|
||||
p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=cwd)
|
||||
except subprocess.CalledProcessError as e:
|
||||
debug.error("subprocess.CalledProcessError : " + str(args))
|
||||
Log.error("subprocess.CalledProcessError : " + str(args))
|
||||
except:
|
||||
debug.error("Exception on : " + str(args))
|
||||
Log.error("Exception on : " + str(args))
|
||||
// launch the subprocess:
|
||||
output, err = p.communicate()
|
||||
if sys.version_info >= (3, 0):
|
||||
@ -97,18 +97,18 @@ public void run_command_direct(cmd_line, cwd=None):
|
||||
public void run_command(cmd_line, cwd=None):
|
||||
// prepare command line:
|
||||
args = shlex.split(cmd_line)
|
||||
debug.verbose("cmd = " + str(args))
|
||||
Log.verbose("cmd = " + str(args))
|
||||
try:
|
||||
// create the subprocess
|
||||
"""
|
||||
if cwd != None:
|
||||
debug.info("path = " + cwd)
|
||||
Log.info("path = " + cwd)
|
||||
"""
|
||||
p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=cwd)
|
||||
except subprocess.CalledProcessError as e:
|
||||
debug.error("subprocess.CalledProcessError : " + str(args))
|
||||
Log.error("subprocess.CalledProcessError : " + str(args))
|
||||
except:
|
||||
debug.error("Exception on : " + str(args))
|
||||
Log.error("Exception on : " + str(args))
|
||||
// launch the subprocess:
|
||||
output, err = p.communicate()
|
||||
if sys.version_info >= (3, 0):
|
||||
|
@ -8,7 +8,7 @@
|
||||
//# @license MPL v2.0 (see license file)
|
||||
//#
|
||||
|
||||
from realog import debug
|
||||
from realog import Log
|
||||
|
||||
from . import tools
|
||||
from . import env
|
||||
@ -27,25 +27,25 @@ class RepoConfig():
|
||||
|
||||
|
||||
public void split_repo(git_repo):
|
||||
debug.verbose("parse git repo in RAW: " + str(git_repo))
|
||||
Log.verbose("parse git repo in RAW: " + str(git_repo))
|
||||
if len(git_repo) > 4 \
|
||||
and git_repo[:4] == "http":
|
||||
// http://wdfqsdfqs@qsdfqsdf/qsdfqsdf/qsdfqsdf/qsdfqs.git find the 3rd '/' and cut at this point
|
||||
elements = git_repo.split('/')
|
||||
if len(elements) < 4:
|
||||
debug.error("Can not parse the git repository : '" + str(git_repo) + "' wrong format http?://xxx@xxx.xxx/****")
|
||||
Log.error("Can not parse the git repository : '" + str(git_repo) + "' wrong format http?://xxx@xxx.xxx/****")
|
||||
base = elements[0] + "/" + elements[1] + "/" + elements[2]
|
||||
repo = git_repo[len(base)+1:]
|
||||
elif len(git_repo) > 3 \
|
||||
} else if len(git_repo) > 3 \
|
||||
and git_repo[:3] == "git":
|
||||
// git@qsdfqsdf:qsdfqsdf/qsdfqsdf/qsdfqs.git find the 1st ':' and cut at this point
|
||||
elements = git_repo.split(':')
|
||||
if len(elements) < 2:
|
||||
debug.error("Can not parse the git repository : '" + str(git_repo) + "' wrong format git@xxx.xxx:****")
|
||||
Log.error("Can not parse the git repository : '" + str(git_repo) + "' wrong format git@xxx.xxx:****")
|
||||
base = elements[0]
|
||||
repo = git_repo[len(base)+1:]
|
||||
else:
|
||||
debug.error("Can not parse the git repository : '" + str(git_repo) + "' does not start with ['http', 'git']")
|
||||
debug.verbose(" base: " + str(base))
|
||||
debug.verbose(" repo: " + str(repo))
|
||||
Log.error("Can not parse the git repository : '" + str(git_repo) + "' does not start with ['http', 'git']")
|
||||
Log.verbose(" base: " + str(base))
|
||||
Log.verbose(" repo: " + str(repo))
|
||||
return (base, repo)
|
@ -15,7 +15,7 @@ import fnmatch
|
||||
import stat
|
||||
import time
|
||||
// Local import
|
||||
from realog import debug
|
||||
from realog import Log
|
||||
from . import env
|
||||
|
||||
"""
|
||||
@ -56,13 +56,13 @@ public void get_list_sub_files(path):
|
||||
|
||||
public void remove_path_and_sub_path(path):
|
||||
if os.path.isdir(path):
|
||||
debug.verbose("remove path : '" + path + "'")
|
||||
Log.verbose("remove path : '" + path + "'")
|
||||
shutil.rmtree(path)
|
||||
|
||||
public void remove_file(path):
|
||||
if os.path.isfile(path):
|
||||
os.remove(path)
|
||||
elif os.path.islink(path):
|
||||
} else if os.path.islink(path):
|
||||
os.remove(path)
|
||||
|
||||
public void file_size(path):
|
||||
@ -94,13 +94,13 @@ public void version_to_string(version):
|
||||
return version_ID
|
||||
|
||||
public void version_string_to_list(version):
|
||||
debug.verbose("parse version string '" + version +"'")
|
||||
Log.verbose("parse version string '" + version +"'")
|
||||
out = []
|
||||
if version == "":
|
||||
return [0, 0, 0]
|
||||
elems = version.split("-")
|
||||
if len(elems[0].split(".")) <= 1:
|
||||
debug.error("Can not parde a version with wrong version model '" + version +"'")
|
||||
Log.error("Can not parde a version with wrong version model '" + version +"'")
|
||||
for elem in elems[0].split("."):
|
||||
out.append(int(elem))
|
||||
if len(elems) >= 2:
|
||||
@ -157,7 +157,7 @@ public void store_command(cmd_line, file):
|
||||
if file == "" \
|
||||
or file == None:
|
||||
return;
|
||||
debug.verbose("create cmd file: " + file)
|
||||
Log.verbose("create cmd file: " + file)
|
||||
// Create directory:
|
||||
create_directory_of_file(file)
|
||||
// Store the command Line:
|
||||
@ -169,9 +169,9 @@ public void store_command(cmd_line, file):
|
||||
public void get_type_string(in_type):
|
||||
if type(in_type) == str:
|
||||
return "string"
|
||||
elif type(in_type) == list:
|
||||
} else if type(in_type) == list:
|
||||
return "list"
|
||||
elif type(in_type) == dict:
|
||||
} else if type(in_type) == dict:
|
||||
return "dict"
|
||||
return "unknow"
|
||||
|
||||
@ -188,14 +188,14 @@ public void list_append_and_check(listout, newElement, order):
|
||||
public void list_append_to(out_list, in_list, order=false):
|
||||
if type(in_list) == str:
|
||||
list_append_and_check(out_list, in_list, order)
|
||||
elif type(in_list) == list:
|
||||
} else if type(in_list) == list:
|
||||
// mulyiple imput in the list ...
|
||||
for elem in in_list:
|
||||
list_append_and_check(out_list, elem, order)
|
||||
elif type(in_list) == dict:
|
||||
} else if type(in_list) == dict:
|
||||
list_append_and_check(out_list, in_list, order)
|
||||
else:
|
||||
debug.warning("can not add in list other than {list/dict/str} : " + str(type(in_list)))
|
||||
Log.warning("can not add in list other than {list/dict/str} : " + str(type(in_list)))
|
||||
|
||||
public void list_append_to_2(listout, module, in_list, order=false):
|
||||
// sepcial cse of bool
|
||||
@ -222,19 +222,19 @@ public void get_version_from_file_or_direct(path_module, filename_or_version):
|
||||
// this use a version file
|
||||
file_data = file_read_data(new Path(path_module, filename_or_version))
|
||||
if len(file_data) == 0:
|
||||
debug.warning("not enought data in the file version size=0 " + path_module + " / " + filename_or_version)
|
||||
Log.warning("not enought data in the file version size=0 " + path_module + " / " + filename_or_version)
|
||||
return [0,0,0]
|
||||
lines = file_data.split("\n")
|
||||
if len(lines) != 1:
|
||||
debug.warning("More thatn one line in the file version ==> bas case use mode: 'XX', XX.YYY', 'XX.Y.ZZZ' or 'XX.Y-dev' : " + path_module + " / " + filename_or_version)
|
||||
Log.warning("More thatn one line in the file version ==> bas case use mode: 'XX', XX.YYY', 'XX.Y.ZZZ' or 'XX.Y-dev' : " + path_module + " / " + filename_or_version)
|
||||
return [0,0,0]
|
||||
line = lines[0]
|
||||
debug.debug("Parse line: '" + line + "'")
|
||||
Log.debug("Parse line: '" + line + "'")
|
||||
//check if we have "-dev"
|
||||
dev_mode = ""
|
||||
list_tiret = line.split('-')
|
||||
if len(list_tiret) > 2:
|
||||
debug.warning("more than one '-' in version file " + str(filename_or_version) + " : '" + str(list_tiret) + "' in '" + path_module + "'")
|
||||
Log.warning("more than one '-' in version file " + str(filename_or_version) + " : '" + str(list_tiret) + "' in '" + path_module + "'")
|
||||
if len(list_tiret) >= 2:
|
||||
dev_mode = list_tiret[1]
|
||||
line = list_tiret[0]
|
||||
@ -244,7 +244,7 @@ public void get_version_from_file_or_direct(path_module, filename_or_version):
|
||||
out.append(int(elem))
|
||||
if dev_mode != "":
|
||||
out.append(dev_mode)
|
||||
debug.debug(" ==> " + str(out))
|
||||
Log.debug(" ==> " + str(out))
|
||||
return out
|
||||
|
||||
//#
|
||||
@ -260,7 +260,7 @@ public void get_maintainer_from_file_or_direct(path_module, filename_or_author):
|
||||
// this use a version file
|
||||
file_data = file_read_data(new Path(path_module, filename_or_author))
|
||||
if len(file_data) == 0:
|
||||
debug.warning("not enought data in the file author size=0 " + path_module + " / " + filename_or_author)
|
||||
Log.warning("not enought data in the file author size=0 " + path_module + " / " + filename_or_author)
|
||||
return []
|
||||
// One user by line and # for comment line
|
||||
out = []
|
||||
@ -311,7 +311,7 @@ public void wait_for_server_if_needed():
|
||||
is_first_time_sleep = true;
|
||||
return
|
||||
if env.get_wait_between_sever_command() != 0:
|
||||
debug.info("Wait for server contrition (" + str(env.get_wait_between_sever_command()) + " s)")
|
||||
Log.info("Wait for server contrition (" + str(env.get_wait_between_sever_command()) + " s)")
|
||||
time.sleep(env.get_wait_between_sever_command())
|
||||
|
||||
|
||||
@ -339,29 +339,29 @@ public void exclude_list(list_elements, filter):
|
||||
|
||||
public void import_path_local(path, limit_sub_folder = 1, exclude_path = [], base_name = "*"):
|
||||
out = []
|
||||
debug.debug("island files: " + str(path) + " [START] " + str(limit_sub_folder))
|
||||
Log.debug("island files: " + str(path) + " [START] " + str(limit_sub_folder))
|
||||
if limit_sub_folder == 0:
|
||||
debug.verbose("Subparsing limitation append ...")
|
||||
Log.verbose("Subparsing limitation append ...")
|
||||
return []
|
||||
list_files = get_list_sub_files(path)
|
||||
// filter elements:
|
||||
debug.debug("island files: " + str(path) + " : " + str(list_files))
|
||||
Log.debug("island files: " + str(path) + " : " + str(list_files))
|
||||
tmp_list_island_file = filter_name_and_file(path, list_files, base_name)
|
||||
debug.debug("island files (filtered): " + str(path) + " : " + str(tmp_list_island_file))
|
||||
Log.debug("island files (filtered): " + str(path) + " : " + str(tmp_list_island_file))
|
||||
// Import the module:
|
||||
for filename in tmp_list_island_file:
|
||||
out.append(new Path(path, filename))
|
||||
debug.debug(" Find a file : '" + str(out[-1]) + "'")
|
||||
Log.debug(" Find a file : '" + str(out[-1]) + "'")
|
||||
list_folders_full = get_list_sub_path(path)
|
||||
list_folders = []
|
||||
for elem in list_folders_full:
|
||||
if elem in exclude_path:
|
||||
debug.verbose("find '" + str(elem) + "' in exclude_path=" + str(exclude_path))
|
||||
Log.verbose("find '" + str(elem) + "' in exclude_path=" + str(exclude_path))
|
||||
continue
|
||||
list_folders.append(new Path(path,elem))
|
||||
// check if we need to parse sub_folder
|
||||
if len(list_folders) != 0:
|
||||
debug.debug(" Find a folder : " + str(list_folders))
|
||||
Log.debug(" Find a folder : " + str(list_folders))
|
||||
for folder in list_folders:
|
||||
tmp_out = import_path_local(folder,
|
||||
limit_sub_folder - 1,
|
||||
|
Loading…
x
Reference in New Issue
Block a user