Beispiel #1
0
        private static int Sync(SyncCommandLineOptions commandLineOptions)
        {
            var options = new SyncCommandOptions();

            if (!commandLineOptions.TryParse(options))
            {
                return(ExitCodes.Error);
            }

            return(Execute(new SyncCommand(options), commandLineOptions));
        }
Beispiel #2
0
        public bool TryParse(SyncCommandOptions options)
        {
            var baseOptions = (CommonCopyCommandOptions)options;

            if (!TryParse(baseOptions))
            {
                return(false);
            }

            options = (SyncCommandOptions)baseOptions;

            if (!TryParseTargetDirectory(Second, out string?second, options, nameof(Second), OptionNames.Second))
            {
                return(false);
            }

            if (!TryParseAsEnumFlags(
                    Compare,
                    OptionNames.Compare,
                    out FileCompareOptions compareOptions,
                    FileCompareOptions.Attributes | FileCompareOptions.Content | FileCompareOptions.ModifiedTime | FileCompareOptions.Size,
                    OptionValueProviders.FileCompareOptionsProvider))
            {
                return(false);
            }

            if (!TryParseAsEnum(
                    Conflict,
                    OptionNames.Conflict,
                    out SyncConflictResolution conflictResolution,
                    defaultValue: SyncConflictResolution.FirstWins,
                    provider: OptionValueProviders.SyncConflictResolutionProvider))
            {
                return(false);
            }

            options.SearchTarget       = SearchTarget.All;
            options.CompareOptions     = compareOptions;
            options.DryRun             = DryRun;
            options.Target             = second;
            options.ConflictResolution = conflictResolution;
            options.AskMode            = (Ask) ? AskMode.File : AskMode.None;
#if DEBUG
            options.DetectRename = DetectRename;
#endif
            return(true);
        }
Beispiel #3
0
        internal static void WriteSyncCommand(SyncCommandOptions options)
        {
#if DEBUG
            WriteOption("allowed time diff", options.AllowedTimeDiff);
#endif
            WriteOption("ask", options.AskMode);
            WriteOption("attributes", options.Attributes);
            WriteOption("attributes to skip", options.AttributesToSkip);
            WriteOption("compare", options.CompareOptions);
            WriteOption("conflict resolution", options.ConflictResolution);
            WriteFilter("content filter", options.ContentFilter);
            WriteEncoding("default encoding", options.DefaultEncoding);
#if DEBUG
            WriteOption("detect rename", options.DetectRename);
#endif
            WriteFilter("directory filter", options.DirectoryFilter, options.DirectoryNamePart);
            WriteDisplayFormat("display", options.Format);
            WriteOption("dry run", options.DryRun);
            WriteOption("empty", options.EmptyOption);
            WriteFilter("extension filter", options.ExtensionFilter);
            WriteFilePropertyFilter(
                "file properties",
                options.SizePredicate,
                options.CreationTimePredicate,
                options.ModifiedTimePredicate);
            WriteOption("flat", options.Flat);
            WriteOption("highlight options", options.HighlightOptions);
            WriteOption("no compare attributes", options.NoCompareAttributes);
            WriteOption("max matching files", options.MaxMatchingFiles);
            WriteOption("max matches in file", options.MaxMatchesInFile);
            WriteFilter("name filter", options.NameFilter, options.NamePart);
            WritePaths("paths", options.Paths);
            WriteOption("progress", options.Progress);
            WriteOption("recurse subdirectories", options.RecurseSubdirectories);
            WriteOption("search target", options.SearchTarget);
            WriteSortOptions("sort", options.SortOptions);
            WriteOption("second", options.Target);
        }