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);
        }
Ejemplo n.º 2
0
        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}");
            }
        }
Ejemplo n.º 3
0
 public ChannelReader <RouterMessage> AddPackage(ManagerAddPackage cmd)
 {
     return(SendMessageGetResponseChannelSerialized(MasterConnectionOpcodes.OPCODE_MASTER_M_ADDPACKAGE, cmd));
 }