示例#1
0
        private static CompressPayload ParseCompressPayload(MainArgs args)
        {
            var payload = new CompressPayload
            {
                Output                = args.OptOutput,
                Directory             = args.OptDirectory,
                OverwriteExistingFile = args.OptOverwrite,
                ProduceZipFile        = !args.OptDryrun,
                AbortOnFailures       = args.OptAbortonfailures
            };

            return(payload);
        }
示例#2
0
        private static ActionResult Validate(CompressPayload payload)
        {
            if (!Directory.Exists(payload.Directory))
            {
                return(new ActionResult
                {
                    Successful = false,
                    Message = "Input folder '{0}' cannot be found.".FormatWith(payload.Directory)
                });
            }
            if (File.Exists(payload.Output))
            {
                if (payload.OverwriteExistingFile)
                {
                    //TODO: Handle Console as a Dependency
                    Console.WriteLine("Overwritting file '{0}' with new compression data.", payload.Output);
                }
                else
                {
                    return(new ActionResult
                    {
                        Successful = false,
                        Message = "Output file '{0}' already exists.".FormatWith(payload.Output)
                    });
                }
            }
            if (!File.Exists(Path.Combine(payload.Directory, BuildMetricsXml)))
            {
                return(new ActionResult
                {
                    Successful = false,
                    Message = "Input folder '{0}' is not recognised as Coverity Scan results.".FormatWith(payload.Directory)
                });
            }

            if (payload.AbortOnFailures && CoverityResultsHaveFailures(payload.Directory))
            {
                return(new ActionResult
                {
                    Successful = false,
                    Message = "Input folder '{0}' has recorded failures.".FormatWith(payload.Directory),
                });
            }
            return(new ActionResult {
                Successful = true
            });
        }
示例#3
0
        public static ActionResult Compress(CompressPayload payload)
        {
            var validationResult = Validate(payload);

            if (!validationResult.Successful)
            {
                return(validationResult);
            }
            if (payload.ProduceZipFile)
            {
                try
                {
                    if (File.Exists(payload.Output))
                    {
                        File.Delete(payload.Output);
                    }
                    ZipFile.CreateFromDirectory(
                        payload.Directory,
                        payload.Output,
                        CompressionLevel.Optimal,
                        true,
                        new PortableFileNameEncoder());
                }
                catch (Exception ex)
                {
                    return(new ActionResult
                    {
                        Successful = false,
                        Message = "Compression Error: " + ex.Message
                    });
                }
            }
            return(new ActionResult
            {
                Successful = true,
                Message = "Compression completed successfully."
            });
        }