@@ -11,7 +11,7 @@ use pg_console::Console;
1111use pg_fs:: FileSystem ;
1212use pg_workspace:: configuration:: { load_configuration, LoadedConfiguration } ;
1313use pg_workspace:: settings:: PartialConfigurationExt ;
14- use pg_workspace:: workspace:: { FixFileMode , UpdateSettingsParams } ;
14+ use pg_workspace:: workspace:: UpdateSettingsParams ;
1515use pg_workspace:: { DynRef , Workspace , WorkspaceError } ;
1616use std:: ffi:: OsString ;
1717use std:: path:: PathBuf ;
@@ -33,18 +33,6 @@ pub enum PgLspCommand {
3333 /// Runs everything to the requested files.
3434 #[ bpaf( command) ]
3535 Check {
36- /// Writes safe fixes, formatting and import sorting
37- #[ bpaf( long( "write" ) , switch) ]
38- write : bool ,
39-
40- /// Allow to do unsafe fixes, should be used with `--write` or `--fix`
41- #[ bpaf( long( "unsafe" ) , switch) ]
42- unsafe_ : bool ,
43-
44- /// Alias for `--write`, writes safe fixes, formatting and import sorting
45- #[ bpaf( long( "fix" ) , switch, hide_usage) ]
46- fix : bool ,
47-
4836 #[ bpaf( external( partial_configuration) , hide_usage, optional) ]
4937 configuration : Option < PartialConfiguration > ,
5038 #[ bpaf( external, hide_usage) ]
@@ -401,165 +389,9 @@ fn get_files_to_process_with_cli_options(
401389 }
402390}
403391
404- /// Holds the options to determine the fix file mode.
405- pub ( crate ) struct FixFileModeOptions {
406- write : bool ,
407- suppress : bool ,
408- suppression_reason : Option < String > ,
409- fix : bool ,
410- unsafe_ : bool ,
411- }
412-
413- /// - [Result]: if the given options are incompatible
414- /// - [Option]: if no fixes are requested
415- /// - [FixFileMode]: if safe or unsafe fixes are requested
416- pub ( crate ) fn determine_fix_file_mode (
417- options : FixFileModeOptions ,
418- console : & mut dyn Console ,
419- ) -> Result < Option < FixFileMode > , CliDiagnostic > {
420- let FixFileModeOptions {
421- write,
422- fix,
423- suppress,
424- suppression_reason : _,
425- unsafe_,
426- } = options;
427-
428- check_fix_incompatible_arguments ( options) ?;
429-
430- let safe_fixes = write || fix;
431- let unsafe_fixes = ( write || safe_fixes) && unsafe_;
432-
433- if unsafe_fixes {
434- Ok ( Some ( FixFileMode :: SafeAndUnsafeFixes ) )
435- } else if safe_fixes {
436- Ok ( Some ( FixFileMode :: SafeFixes ) )
437- } else if suppress {
438- Ok ( Some ( FixFileMode :: ApplySuppressions ) )
439- } else {
440- Ok ( None )
441- }
442- }
443-
444- /// Checks if the fix file options are incompatible.
445- fn check_fix_incompatible_arguments ( options : FixFileModeOptions ) -> Result < ( ) , CliDiagnostic > {
446- let FixFileModeOptions {
447- write,
448- suppress,
449- suppression_reason,
450- fix,
451- ..
452- } = options;
453- if write && fix {
454- return Err ( CliDiagnostic :: incompatible_arguments ( "--write" , "--fix" ) ) ;
455- } else if suppress && write {
456- return Err ( CliDiagnostic :: incompatible_arguments (
457- "--suppress" ,
458- "--write" ,
459- ) ) ;
460- } else if suppress && fix {
461- return Err ( CliDiagnostic :: incompatible_arguments ( "--suppress" , "--fix" ) ) ;
462- } else if !suppress && suppression_reason. is_some ( ) {
463- return Err ( CliDiagnostic :: unexpected_argument (
464- "--reason" ,
465- "`--reason` is only valid when `--suppress` is used." ,
466- ) ) ;
467- } ;
468- Ok ( ( ) )
469- }
470-
471392#[ cfg( test) ]
472393mod tests {
473394 use super :: * ;
474- use pg_console:: BufferConsole ;
475-
476- #[ test]
477- fn incompatible_arguments ( ) {
478- {
479- let ( write, suppress, suppression_reason, fix, unsafe_) =
480- ( true , false , None , true , false ) ;
481- assert ! ( check_fix_incompatible_arguments( FixFileModeOptions {
482- write,
483- suppress,
484- suppression_reason,
485- fix,
486- unsafe_
487- } )
488- . is_err( ) ) ;
489- }
490- }
491-
492- #[ test]
493- fn safe_fixes ( ) {
494- let mut console = BufferConsole :: default ( ) ;
495-
496- for ( write, suppress, suppression_reason, fix, unsafe_) in [
497- ( true , false , None , false , false ) , // --write
498- ( false , false , None , true , false ) , // --fix
499- ] {
500- assert_eq ! (
501- determine_fix_file_mode(
502- FixFileModeOptions {
503- write,
504- suppress,
505- suppression_reason,
506- fix,
507- unsafe_
508- } ,
509- & mut console
510- )
511- . unwrap( ) ,
512- Some ( FixFileMode :: SafeFixes )
513- ) ;
514- }
515- }
516-
517- #[ test]
518- fn safe_and_unsafe_fixes ( ) {
519- let mut console = BufferConsole :: default ( ) ;
520-
521- for ( write, suppress, suppression_reason, fix, unsafe_) in [
522- ( true , false , None , false , true ) , // --write --unsafe
523- ( false , false , None , true , true ) , // --fix --unsafe
524- ] {
525- assert_eq ! (
526- determine_fix_file_mode(
527- FixFileModeOptions {
528- write,
529- suppress,
530- suppression_reason,
531- fix,
532- unsafe_
533- } ,
534- & mut console
535- )
536- . unwrap( ) ,
537- Some ( FixFileMode :: SafeAndUnsafeFixes )
538- ) ;
539- }
540- }
541-
542- #[ test]
543- fn no_fix ( ) {
544- let mut console = BufferConsole :: default ( ) ;
545-
546- let ( write, suppress, suppression_reason, fix, unsafe_) =
547- ( false , false , None , false , false ) ;
548- assert_eq ! (
549- determine_fix_file_mode(
550- FixFileModeOptions {
551- write,
552- suppress,
553- suppression_reason,
554- fix,
555- unsafe_
556- } ,
557- & mut console
558- )
559- . unwrap( ) ,
560- None
561- ) ;
562- }
563395
564396 /// Tests that all CLI options adhere to the invariants expected by `bpaf`.
565397 #[ test]
0 commit comments