@@ -14,7 +14,8 @@ public static class CommandLineOptions
1414
1515 static public ValueOption < string > Configuration ;
1616 static public ValueOption < string > PackageVersion ;
17- static public ValueOption < string > PackageSelector ;
17+ static public ValueOption < string > PackageId ;
18+ static public ValueOption < string > PackageType ;
1819 static public ValueOption < int > TestLevel ;
1920 static public ValueOption < string > TraceLevel ;
2021 static public SimpleOption NoBuild ;
@@ -26,57 +27,54 @@ public static class CommandLineOptions
2627 _context = context ;
2728
2829 // The name of the TARGET task to be run, e.g. Test.
29- Target = new ValueOption < string > ( "target" , "Default" , 1 ) ;
30+ Target = new ValueOption < string > ( "target|t " , "Default" ) ;
3031
3132 // Multiple targets to be run
32- Targets = new MultiValueOption < string > ( "target" , "Default" , 1 ) ;
33+ Targets = new MultiValueOption < string > ( "target|t " , "Default" ) ;
3334
34- Configuration = new ValueOption < String > ( "configuration" , DEFAULT_CONFIGURATION , 1 ) ;
35+ Configuration = new ValueOption < String > ( "configuration|c " , DEFAULT_CONFIGURATION ) ;
3536
36- PackageVersion = new ValueOption < string > ( "packageVersion" , null , 4 ) ;
37+ PackageVersion = new ValueOption < string > ( "packageVersion" , null ) ;
3738
38- PackageSelector = new ValueOption < string > ( "where " , null , 1 ) ;
39+ PackageId = new ValueOption < string > ( "packageId|id " , null ) ;
3940
40- TestLevel = new ValueOption < int > ( "level " , 0 , 3 ) ;
41+ PackageType = new ValueOption < string > ( "packageType|type " , null ) ;
4142
42- TraceLevel = new ValueOption < string > ( "trace " , "Off" , 2 ) ;
43+ TestLevel = new ValueOption < int > ( "level|lev " , 0 ) ;
4344
44- NoBuild = new SimpleOption ( "nobuild ", 3 ) ;
45+ TraceLevel = new ValueOption < string > ( "trace|tr ", "Off" ) ;
4546
46- NoPush = new SimpleOption ( "nopush" , 3 ) ;
47+ NoBuild = new SimpleOption ( "nobuild|nob" ) ;
4748
48- Usage = new SimpleOption ( "usage" , 2 ) ;
49+ NoPush = new SimpleOption ( "nopush|nop" ) ;
50+
51+ Usage = new SimpleOption ( "usage" ) ;
4952 }
5053
5154 // Nested classes to represent individual options
5255
5356 // AbstractOption has a name and can tell us if it exists.
5457 public abstract class AbstractOption
5558 {
56- public string Name { get ; }
57-
58- public int MinimumAbbreviation { get ; internal set ; }
59+ public List < string > Aliases { get ; }
5960
6061 public bool Exists
6162 {
6263 get
6364 {
64- for ( int len = Name . Length ; len >= MinimumAbbreviation ; len -- )
65- if ( _context . HasArgument ( Name . Substring ( 0 , len ) ) )
66- return true ;
67- return false ;
65+ foreach ( string alias in Aliases )
66+ if ( _context . HasArgument ( alias ) )
67+ return true ;
68+ return false ;
6869 }
6970 }
7071
7172 public string Description { get ; }
7273
73- public AbstractOption ( string name , int minimumAbbreviation = 0 , string description = null )
74+ public AbstractOption ( string aliases , string description = null )
7475 {
75- Name = name ;
76- MinimumAbbreviation = minimumAbbreviation > 0 && minimumAbbreviation <= name . Length
77- ? minimumAbbreviation
78- : name . Length ;
79- Description = description ;
76+ Aliases = new List < string > ( aliases . Split ( '|' ) ) ;
77+ Description = description ;
8078 }
8179 }
8280
@@ -86,21 +84,22 @@ public static class CommandLineOptions
8684 {
8785 static public implicit operator bool ( SimpleOption o ) => o . Exists ;
8886
89- public SimpleOption ( string name , int minimumAbbreviation = 0 , string description = null )
90- : base ( name , minimumAbbreviation , description )
87+ public SimpleOption ( string aliases , string description = null )
88+ : base ( aliases , description )
9189 {
92- if ( _context . Argument ( name , ( string ) null ) != null )
93- throw new Exception ( $ "Option --{ name } does not take a value.") ;
94- }
90+ foreach ( string alias in Aliases )
91+ if ( _context . Argument ( alias , ( string ) null ) != null )
92+ throw new Exception ( $ "Option --{ alias } does not take a value.") ;
93+ }
9594 }
9695
9796 // Generic ValueOption adds Value as well as a default value
9897 public class ValueOption < T > : AbstractOption
9998 {
10099 public T DefaultValue { get ; }
101100
102- public ValueOption ( string name , T defaultValue , int minimumAbbreviation = 0 , string description = null )
103- : base ( name , minimumAbbreviation , description )
101+ public ValueOption ( string aliases , T defaultValue , string description = null )
102+ : base ( aliases , description )
104103 {
105104 DefaultValue = defaultValue ;
106105 }
@@ -109,37 +108,31 @@ public static class CommandLineOptions
109108 {
110109 get
111110 {
112- for ( int len = Name . Length ; len >= MinimumAbbreviation ; len -- )
113- {
114- string abbrev = Name . Substring ( 0 , len ) ;
115- if ( _context . HasArgument ( abbrev ) )
116- return _context . Argument < T > ( abbrev ) ;
117- }
118-
119- return DefaultValue ;
111+ foreach ( string alias in Aliases )
112+ if ( _context . HasArgument ( alias ) )
113+ return _context . Argument < T > ( alias ) ;
114+
115+ return DefaultValue ;
120116 }
121117 }
122118 }
123119
124120 // Generic MultiValueOption adds Values, which returns a collection of values
125121 public class MultiValueOption < T > : ValueOption < T >
126122 {
127- public MultiValueOption ( string name , T defaultValue , int minimumAbbreviation = 0 , string description = null )
128- : base ( name , defaultValue , minimumAbbreviation , description ) { }
123+ public MultiValueOption ( string aliases , T defaultValue , string description = null )
124+ : base ( aliases , defaultValue , description ) { }
129125
130126 public ICollection < T > Values
131127 {
132128 get
133129 {
134130 var result = new List < T > ( ) ;
135131
136- for ( int len = Name . Length ; len >= MinimumAbbreviation ; len -- )
137- {
138- string abbrev = Name . Substring ( 0 , len ) ;
139- if ( _context . HasArgument ( abbrev ) )
140- result . AddRange ( _context . Arguments < T > ( abbrev ) ) ;
141- }
142-
132+ foreach ( string alias in Aliases )
133+ if ( _context . HasArgument ( alias ) )
134+ result . AddRange ( _context . Arguments < T > ( alias ) ) ;
135+
143136 if ( result . Count == 0 ) result . Add ( DefaultValue ) ;
144137
145138 return result ;
0 commit comments