public ManagerPackage AddPackage(ManagerAddPackage cmd, IManagerCommandLogger logger) { //Make sure the package doesn't already exist if (packages.ContainsKey(cmd.name)) { logger.FinishFail("The package requested already exists."); return(null); } //Make sure all requested dependencies exist foreach (var d in cmd.dependencies) { if (!packages.ContainsKey(d)) { logger.FinishFail($"The requested dependency \"{d}\" does not exist."); return(null); } } //Create package ManagerPackage package = new ManagerPackage { name = cmd.name, project_path = cmd.project_path, git_repo = cmd.git_repo, exec = cmd.exec, required_user_ports = cmd.required_user_ports, dependencies = cmd.dependencies }; //Clone GIT directory logger.Log("AddPackage", "Cloning source project files..."); int status = new GitTool(package.GetGitPath(this), logger).Clone(cmd.git_repo, "AddPackage", "Cloning..."); if (status != 0) { logger.FinishFail($"Failed to clone source project files. (Code {status}) Aborting!"); return(null); } //Add packages.Add(cmd.name, package); Save(); //Finish logger.FinishSuccess($"Successfully added package {package.name}."); return(package); }
private void OnCmdAddPackage(RouterMessage msg) { //Decode arguments and create logger ManagerAddPackage args = msg.DeserializeAs <ManagerAddPackage>(); MasterCommandLogger logger = new MasterCommandLogger(msg); //Run try { session.AddPackage(args, logger); } catch (Exception ex) { logger.FinishFail($"Unexpected error: {ex.Message}{ex.StackTrace}"); } }
public ChannelReader <RouterMessage> AddPackage(ManagerAddPackage cmd) { return(SendMessageGetResponseChannelSerialized(MasterConnectionOpcodes.OPCODE_MASTER_M_ADDPACKAGE, cmd)); }