@@ -532,97 +532,6 @@ extension Flag {
532532  } 
533533} 
534534
535- // - MARK: Unavailable CaseIterable/RawValue == String
536- 
537- extension  Flag  where  Value:  CaseIterable ,  Value:  RawRepresentable ,  Value:  Equatable ,  Value. RawValue ==  String  { 
538-   /// Creates a property that gets its value from the presence of a flag,
539-   /// where the allowed flags are defined by a case-iterable type.
540-   ///
541-   /// - Parameters:
542-   ///   - name: A specification for what names are allowed for this flag.
543-   ///   - initial: A default value to use for this property. If `initial` is
544-   ///     `nil`, this flag is required.
545-   ///   - exclusivity: The behavior to use when multiple flags are specified.
546-   ///   - help: Information about how to use this flag.
547-   @available ( * ,  unavailable,  message:  " Add 'EnumerableFlag' conformance to your value type and, if needed, specify the 'name' of each case there. " )  
548-   public  init ( 
549-     name:  NameSpecification  =  . long, 
550-     default initial:  Value ?   =  nil , 
551-     exclusivity:  FlagExclusivity  =  . exclusive, 
552-     help:  ArgumentHelp ?   =  nil 
553-   )  { 
554-     self . init ( _parsedValue:  . init {  key in 
555-       // This gets flipped to `true` the first time one of these flags is
556-       // encountered.
557-       var  hasUpdated  =  false 
558-       let  defaultValue  =  initial. map ( String . init ( describing: ) ) 
559- 
560-       let  args  =  Value . allCases. map  {  value ->  ArgumentDefinition  in 
561-         let  caseKey  =  InputKey ( rawValue:  value. rawValue) 
562-         let  help  =  ArgumentDefinition . Help ( options:  initial !=  nil  ?  . isOptional :  [ ] ,  help:  help,  defaultValue:  defaultValue,  key:  key,  isComposite:  true ) 
563-         return  ArgumentDefinition . flag ( name:  name,  key:  key,  caseKey:  caseKey,  help:  help,  parsingStrategy:  . default,  initialValue:  initial,  update:  . nullary( {  ( origin,  name,  values)  in 
564-           hasUpdated =  try   ArgumentSet . updateFlag ( key:  key,  value:  value,  origin:  origin,  values:  & values,  hasUpdated:  hasUpdated,  exclusivity:  exclusivity) 
565-         } ) ) 
566-       } 
567-       return  ArgumentSet ( args) 
568-       } ) 
569-   } 
570- } 
571- 
572- extension  Flag  { 
573-   /// Creates a property that gets its value from the presence of a flag,
574-   /// where the allowed flags are defined by a case-iterable type.
575-   @available ( * ,  unavailable,  message:  " Add 'EnumerableFlag' conformance to your value type and, if needed, specify the 'name' of each case there. " )  
576-   public  init < Element> ( 
577-     name:  NameSpecification  =  . long, 
578-     exclusivity:  FlagExclusivity  =  . exclusive, 
579-     help:  ArgumentHelp ?   =  nil 
580-   )  where  Value ==  Element ? ,  Element:  CaseIterable ,  Element:  Equatable ,  Element:  RawRepresentable ,  Element. RawValue ==  String  { 
581-     self . init ( _parsedValue:  . init {  key in 
582-       // This gets flipped to `true` the first time one of these flags is
583-       // encountered.
584-       var  hasUpdated  =  false 
585-       
586-       let  args  =  Element . allCases. map  {  value ->  ArgumentDefinition  in 
587-         let  caseKey  =  InputKey ( rawValue:  value. rawValue) 
588-         let  help  =  ArgumentDefinition . Help ( options:  . isOptional,  help:  help,  key:  key,  isComposite:  true ) 
589-         return  ArgumentDefinition . flag ( name:  name,  key:  key,  caseKey:  caseKey,  help:  help,  parsingStrategy:  . default,  initialValue:  nil  as  Element ? ,  update:  . nullary( {  ( origin,  name,  values)  in 
590-           hasUpdated =  try   ArgumentSet . updateFlag ( key:  key,  value:  value,  origin:  origin,  values:  & values,  hasUpdated:  hasUpdated,  exclusivity:  exclusivity) 
591-         } ) ) 
592-       } 
593-       return  ArgumentSet ( args) 
594-     } ) 
595-   } 
596-   
597-   /// Creates an array property that gets its values from the presence of
598-   /// zero or more flags, where the allowed flags are defined by a
599-   /// `CaseIterable` type.
600-   ///
601-   /// This property has an empty array as its default value.
602-   ///
603-   /// - Parameters:
604-   ///   - name: A specification for what names are allowed for this flag.
605-   ///   - help: Information about how to use this flag.
606-   @available ( * ,  unavailable,  message:  " Add 'EnumerableFlag' conformance to your value type and, if needed, specify the 'name' of each case there. " )  
607-   public  init < Element> ( 
608-     name:  NameSpecification  =  . long, 
609-     help:  ArgumentHelp ?   =  nil 
610-   )  where  Value ==  Array < Element > ,  Element:  CaseIterable ,  Element:  RawRepresentable ,  Element. RawValue ==  String  { 
611-     self . init ( _parsedValue:  . init {  key in 
612-       let  args  =  Element . allCases. map  {  value ->  ArgumentDefinition  in 
613-         let  caseKey  =  InputKey ( rawValue:  value. rawValue) 
614-         let  help  =  ArgumentDefinition . Help ( options:  . isOptional,  help:  help,  key:  key,  isComposite:  true ) 
615-         return  ArgumentDefinition . flag ( name:  name,  key:  key,  caseKey:  caseKey,  help:  help,  parsingStrategy:  . default,  initialValue:  [ Element] ( ) ,  update:  . nullary( {  ( origin,  name,  values)  in 
616-           values. update ( forKey:  key,  inputOrigin:  origin,  initial:  [ Element] ( ) ,  closure:  { 
617-             $0. append ( value) 
618-           } ) 
619-         } ) ) 
620-       } 
621-       return  ArgumentSet ( args) 
622-     } ) 
623-   } 
624- } 
625- 
626535extension  ArgumentDefinition  { 
627536  static  func  flag< V> ( name:  NameSpecification ,  key:  InputKey ,  caseKey:  InputKey ,  help:  Help ,  parsingStrategy:  ArgumentDefinition . ParsingStrategy ,  initialValue:  V ? ,  update:  Update )  ->  ArgumentDefinition  { 
628537    return  ArgumentDefinition ( kind:  . name( key:  caseKey,  specification:  name) ,  help:  help,  completion:  . default,  parsingStrategy:  parsingStrategy,  update:  update,  initial:  {  origin,  values in 
0 commit comments