private static async Task <int> RenameSymbolAsync(RenameSymbolCommandLineOptions options) { if (!options.TryGetProjectFilter(out ProjectFilter projectFilter)) { return(ExitCodes.Error); } if (!TryParsePaths(options.Paths, out ImmutableArray <string> paths)) { return(ExitCodes.Error); } if (!TryParseOptionValueAsEnum(options.OnError, OptionNames.OnError, out RenameErrorResolution errorResolution, defaultValue: RenameErrorResolution.None)) { return(ExitCodes.Error); } var visibility = Visibility.Public; var scopeFilter = RenameScopeFilter.All; #if DEBUG if (!TryParseOptionValueAsEnum(options.Visibility, OptionNames.Visibility, out visibility)) { return(ExitCodes.Error); } #endif if (!TryParseOptionValueAsEnumFlags(options.Scope, OptionNames.Scope, out scopeFilter, defaultValue: RenameScopeFilter.All)) { return(ExitCodes.Error); } if (!TryParseCodeExpression( options.Match, options.MatchFrom, OptionNames.Match, OptionNames.MatchFrom, "bool", typeof(bool), "ISymbol", typeof(ISymbol), "symbol", out Func <ISymbol, bool> predicate)) { return(ExitCodes.Error); } string newNameFrom = options.NewNameFrom; if (newNameFrom == null && options.NewName == null) { newNameFrom = options.MatchFrom; } if (!TryParseCodeExpression( options.NewName, newNameFrom, OptionNames.NewName, OptionNames.NewNameFrom, "string", typeof(string), "ISymbol", typeof(ISymbol), "symbol", out Func <ISymbol, string> getNewName)) { return(ExitCodes.Error); } var command = new RenameSymbolCommand( options: options, projectFilter: projectFilter, scopeFilter: scopeFilter, visibility: visibility, errorResolution: errorResolution, #if DEBUG ignoredCompilerDiagnostics: options.IgnoredCompilerDiagnostics, codeContext: options.CodeContext, #else ignoredCompilerDiagnostics: null, codeContext: -1, #endif predicate: predicate, getNewName: getNewName); CommandStatus status = await command.ExecuteAsync(paths, options.MSBuildPath, options.Properties); return(GetExitCode(status)); }
public RenameSymbolCommand( RenameSymbolCommandLineOptions options, in ProjectFilter projectFilter,