예제 #1
0
        public DeploymentContext(Deployer deployer, Zongsoft.Options.Profiles.Profile deploymentFile, string destinationDirectory)
        {
            if (deployer == null)
            {
                throw new ArgumentNullException(nameof(deployer));
            }

            if (deploymentFile == null)
            {
                throw new ArgumentNullException(nameof(deploymentFile));
            }

            if (string.IsNullOrWhiteSpace(destinationDirectory))
            {
                throw new ArgumentNullException(nameof(destinationDirectory));
            }

            _deployer             = deployer;
            _deploymentFile       = deploymentFile;
            _destinationDirectory = destinationDirectory;
            _counter = new DeploymentCounter();
        }
예제 #2
0
        public static void Main(string[] args)
        {
            if (args == null || args.Length < 1)
            {
                Console.WriteLine(ResourceUtility.GetString("Text.MissingArguments"));
                return;
            }

            try
            {
                //使用当前命令行参数构造一个命令表达式
                var expression = CommandExpression.Parse("deployer " + string.Join(" ", args));

                //创建一个部署文件路径的列表
                var paths = new List <string>(expression.Arguments.Length);

                //校验所有指定的文件路径是否都存在,并将处理后的路径加入到待处理的列表中
                foreach (var argument in expression.Arguments)
                {
                    var path = Path.IsPathRooted(argument) ? argument : Zongsoft.IO.Path.Combine(Environment.CurrentDirectory, argument);

                    if (File.Exists(path))
                    {
                        paths.Add(path);
                    }
                    else
                    {
                        throw new FileNotFoundException(path);
                    }
                }

                //创建部署器类的实例
                var deployer = new Deployer(Zongsoft.Terminals.ConsoleTerminal.Instance);

                //将命令行选项添加到部署器的环境变量中
                if (expression.Options.Count > 0)
                {
                    foreach (var option in expression.Options)
                    {
                        deployer.EnvironmentVariables[option.Key] = option.Value;
                    }
                }

                //依次部署指定的部署文件
                foreach (var path in paths)
                {
                    //部署指定的文件
                    var counter = deployer.Deploy(path);

                    //打印部署的结果信息
                    deployer.Terminal.WriteLine(CommandOutletColor.DarkGreen, ResourceUtility.GetString("Text.Deploy.CompleteInfo", path, counter.Total, counter.Successes, counter.Failures));
                }
            }
            catch (Exception ex)
            {
                //设置控制台前景色为“红色”
                var foregroundColor = Console.ForegroundColor;
                Console.ForegroundColor = ConsoleColor.Red;

                //打印异常消息
                Console.Error.WriteLine(ex.Message);

                //重置控制台的前景色
                Console.ForegroundColor = foregroundColor;
            }
        }