public static RenameOptions Of(IRenameOptions options)
 {
     return(new RenameOptions()
     {
         PrepareProvider = options.PrepareProvider
     });
 }
 public static RenameOptions Of(IRenameOptions options, IEnumerable <IHandlerDescriptor> descriptors)
 {
     return(new RenameOptions()
     {
         PrepareProvider = options.PrepareProvider || descriptors.Any(z => z.HandlerType == typeof(IPrepareRenameHandler)),
         WorkDoneProgress = options.WorkDoneProgress
     });
 }
 public static RenameOptions Of(IRenameOptions options)
 {
     return(new RenameOptions()
     {
         PrepareProvider = options.PrepareProvider,
         WorkDoneProgress = options.WorkDoneProgress
     });
 }
        public static bool ValidateArguments(IRenameOptions options)
        {
            if (options.SolutionFile.IsEmpty() && !options.UseCsProj)
            {
                Log.Error(
                    "Solution file is not set. Multiple solutions are not supported. If you have .csproj files only try to set --projects argument.");
                return(false);
            }

            return(true);
        }
        public static void Cleanup(IRenameOptions options, Action onUpdate = null)
        {
            if (!options.Cleanup)
            {
                return;
            }

            Update
            .Folder.FilteredByName("bin", "obj")
            .Remove
            .At.Path(options.WorkingDirectory)
            .Folder.Recursively()
            .Itself
            .OnUpdate(onUpdate)
            .Run(options.Preview);
        }
        public static void UpdateFoldersProjectsAndSolution(IRenameOptions options, Action onUpdate = null)
        {
            if (options.ReplaceFrom.IsNotEmpty() && options.ReplaceTo.IsNotEmpty())
            {
                if (options.RenameFoldersAndFiles)
                {
                    Update
                    .Project
                    .Name
                    .At.Path(options.WorkingDirectory)
                    .In
                    .Solution(options.SolutionFile)
                    .Replacing(options.ReplaceFrom, options.ReplaceTo)
                    .Names
                    .OnUpdate(onUpdate)
                    .Run(options.Preview);

                    Update
                    .Folder
                    .ReplaceText
                    .At.Path(options.WorkingDirectory)
                    .In
                    .File.FilteredByName(options.Masks)
                    .From(options.ReplaceFrom)
                    .To(options.ReplaceTo)
                    .Recursively()
                    .OnUpdate(onUpdate)
                    .Run(options.Preview);
                }

                if (options.ReplaceFileContent)
                {
                    Update
                    .Folder
                    .ReplaceContent
                    .At.Path(options.WorkingDirectory)
                    .In
                    .File.FilteredByName(options.Masks)
                    .From(options.ReplaceFrom)
                    .To(options.ReplaceTo)
                    .Recursively()
                    .OnUpdate(onUpdate)
                    .Run(options.Preview);
                }
            }

            Update
            .Project
            .DefaultAssemblyName
            .At.Path(options.WorkingDirectory)
            .With
            .Project.FilteredByMask("*.csproj")
            .Names
            .OnUpdate(onUpdate)
            .Run(options.Preview);

            Update
            .Project
            .DefaultRootNamespace
            .At.Path(options.WorkingDirectory)
            .With
            .Project.FilteredByMask("*.csproj")
            .Names
            .OnUpdate(onUpdate)
            .Run(options.Preview);

            if (options.RenameFoldersAndFiles)
            {
                Update
                .Folder
                .Names
                .At.Path(options.WorkingDirectory)
                .With
                .Project.DeclaredInSolution(options.SolutionFile)
                .Names
                .OnUpdate(onUpdate)
                .Run(options.Preview);
            }

            if (options.ReplaceFrom.IsNotEmpty() && options.ReplaceTo.IsNotEmpty())
            {
                if (options.RenameFoldersAndFiles)
                {
                    Update
                    .Folder
                    .ReplaceText
                    .At.Path(options.WorkingDirectory)
                    .In
                    .Folder.FilteredByName($"*{options.ReplaceFrom}*")
                    .From(options.ReplaceFrom)
                    .To(options.ReplaceTo)
                    .Recursively()
                    .OnUpdate(onUpdate)
                    .Run(options.Preview);
                }

                if (options.ReplaceFileContent)
                {
                    Update
                    .Folder
                    .ReplaceContent
                    .At.Path(options.WorkingDirectory)
                    .In
                    .File.FilteredByName(Path.GetFileName(options.SolutionFile))
                    .From(options.ReplaceFrom)
                    .To(options.ReplaceTo)
                    .OnUpdate(onUpdate)
                    .Run(options.Preview);
                }

                if (options.RenameFoldersAndFiles)
                {
                    Update
                    .Folder
                    .ReplaceText
                    .At.Path(options.WorkingDirectory)
                    .In
                    .File.FilteredByName(Path.GetFileName(options.SolutionFile))
                    .From(options.ReplaceFrom)
                    .To(options.ReplaceTo)
                    .Names
                    .OnUpdate(onUpdate)
                    .Run(options.Preview);
                }
            }
        }