Beispiel #1
0
        private static Script genZip(ScriptContext context, List <string> filteredArgs)
        {
            Script script;

            script    = createEmptyScript(context, "xsharper //zip");
            script.Id = "zip";
            filteredArgs.AddRange(context.GetStringArray(xs.zip));
            script.Usage.Options = UsageOptions.IfHelp | UsageOptions.IfNoArguments | UsageOptions.UsageLine | UsageOptions.AutoSuffix;
            script.Parameters.Add(new CommandLineParameter("zip", CommandLineValueCount.Single, null, null)
            {
                Required = true, Description = "archive.zip", Value = "Zip archive to create"
            });
            script.Parameters.Add(new CommandLineParameter("source", CommandLineValueCount.Single, ".", null)
            {
                Description = "directory", Value = "Directory to compress"
            });
            script.Parameters.Add(new CommandLineParameter("filter", CommandLineValueCount.Single, "*.*", null)
            {
                Description = "filter", Value = "File wildcard"
            });
            script.Parameters.Add(new CommandLineParameter("dirfilter", CommandLineValueCount.Single, "*", null)
            {
                Description = "directory-filter", Value = "Directory wildcard"
            });
            script.Parameters.Add(new CommandLineParameter(null, "zipTime", CommandLineValueCount.Single, "fileTime", null)
            {
                Synonyms = "zt", Value = "What time to store in zip ( fileTime/utcFileTime/now/utcNow )"
            });
            script.Parameters.Add(new CommandLineParameter(null, "password", CommandLineValueCount.Single, null, null)
            {
                Synonyms = "p", Value = "Archive password"
            });
            script.Parameters.Add(new CommandLineParameter(null, "recursive", CommandLineValueCount.None, "0", "1")
            {
                Synonyms = "r", Value = "Recursive"
            });
            script.Parameters.Add(new CommandLineParameter(null, "ignore", CommandLineValueCount.None, "0", "1")
            {
                Synonyms = "i", Value = "Ignore errors"
            });
            script.Parameters.Add(new CommandLineParameter(null, "emptyDirectories", CommandLineValueCount.None, "0", "1")
            {
                Value = "Include empty directories"
            });
            script.Parameters.Add(new CommandLineParameter(null, "hidden", CommandLineValueCount.None, "0", "1")
            {
                Synonyms = "i", Value = "Extract hidden files"
            });

            script.Add(new PathOperation {
                Value = "${zip}", Operation = PathOperationType.GetFullPath, OutTo = "zip"
            });
            script.Add(new If(new Set("zip", "${=Path.ChangeExtension(${zip},'.zip')}"))
            {
                IsEmpty = "${=Path.GetExtension(${zip})}"
            });

            script.Add(new SetAttr("z", "zipTime", "${zipTime}"));
            script.Add(new SetAttr("z", "recursive", "${recursive}"));
            script.Add(new SetAttr("z", "hidden", "${hidden}"));
            script.Add(new SetAttr("z", "emptyDirectories", "${emptyDirectories}"));
            script.Add(new Print("Compressing ${source} => ${zip} ... "));
            Zip z = new Zip {
                Id              = "z",
                From            = "${source}",
                To              = "${zip}",
                Transform       = TransformRules.Expand,
                Recursive       = true,
                Syntax          = FilterSyntax.Wildcard,
                Filter          = "${filter}",
                DirectoryFilter = "${dirfilter}",
                Password        = "******"
            };
            If oif = new If(new Print {
                Value = "  ${from}", OutTo = "^info"
            })
            {
                IsTrue = "${=$.IsFile}"
            };

            If f = new If(new[] { new Print("Failed: '${}' : ${=c.CurrentException.Message}")
                                  {
                                      OutTo = "^error"
                                  } });

            f.IsTrue = "${ignore}";
            f.AddElse(new Throw());
            z.AddCatch(f);

            z.Add(oif);
            script.Add(z);
            script.Add(new Print {
                Value = "Completed"
            });
            return(script);
        }