예제 #1
0
        /// <summary>
        /// Here it all begins
        /// </summary>
        /// <param name="args"></param>
        public static void Main(string[] args)
        {
            var log = new ConsoleLogger(typeof(Program));

            CmdArgs parsedArgs;

            try
            {
                parsedArgs = Args.Parse <CmdArgs>(args);
            }
            catch (ArgException e)
            {
                Console.WriteLine(ArgUsage.GenerateUsageFromTemplate <CmdArgs>( ));
                log.Error($"Failed to parse arguments: {e.Message}");
                return;
            }

            try
            {
                IOrganizationService sourceService = null;
                var destinationSystem = parsedArgs.DestinationSystem;
                IOrganizationService destinationService = OrganizationServiceFactory.ConnectByConnectionString(destinationSystem);
                if (parsedArgs.SourceSystem != null)
                {
                    sourceService = OrganizationServiceFactory.ConnectByConnectionString(parsedArgs.SourceSystem + "RequireNewInstance = True;");
                }

                var deployer = new PluginDeployer(sourceService, destinationService, parsedArgs.Prefix, log);

                if (!deployer.LoadAssembly(parsedArgs.AssemblyPath))
                {
                    return;
                }

                var assemblyName        = deployer.AssemblyPlugin.GetName( ).Name;
                var destinationAssembly = deployer.RetrievePluginAssembly(destinationService, assemblyName);

                var createFromScratch = parsedArgs.Create;

                if (createFromScratch)
                {
                    deployer.CreateFromScratch(parsedArgs, destinationAssembly);
                }
                else
                {
                    deployer.UpdateSystem(parsedArgs, destinationAssembly);
                }
            }
            catch (Exception ex)
            {
                log.Error($"Exception occured, terminating. Exception: {GetAllExceptionMessages( ex )}\n\n");
                log.Error($"Stacktrace: {ex.StackTrace}");
            }
        }
        public WebResourceDeployer(CmdArgs args, ILog log, ILog err)
        {
            var packagesFilename = string.IsNullOrEmpty(args.PackagesXml) ? throw new Exception("Package.xml path was not given, please provide path.") : args.PackagesXml;

            Args = args;

            this.log = log;
            this.err = err;

            Service           = OrganizationServiceFactory.ConnectByConnectionString(args.ConnectionString);
            PackageCollection = FileLoader.LoadPackages(packagesFilename);
        }