cli: fix opts parsing regressions from feb
Since commit 7aab544, "-f -" before the command broke command
detection, causing spurious "no such option" errors (and breaking
about 70 functional tests which neither I nor travis noticed).
			
			
This commit is contained in:
		
							parent
							
								
									c6f1371251
								
							
						
					
					
						commit
						25cd65442a
					
				| @ -169,10 +169,11 @@ moveFlagsAfterCommand args = moveArgs $ ensureDebugHasArg args | ||||
|     -- -h ..., --version ... | ||||
|     moveArgs (f:a:as)   | isMovableNoArgFlag f                   = (moveArgs $ a:as) ++ [f] | ||||
|     -- -f FILE ..., --alias ALIAS ... | ||||
|     moveArgs (f:v:a:as) | isMovableReqArgFlag f | ||||
|                         , not (take 1 v == "-")          = (moveArgs $ a:as) ++ [f,v] | ||||
|     moveArgs (f:v:a:as) | isMovableReqArgFlag f, isValue v       = (moveArgs $ a:as) ++ [f,v] | ||||
|     -- -fFILE ..., --alias=ALIAS ... | ||||
|     moveArgs (fv:a:as)  | isMovableReqArgFlagAndValue fv         = (moveArgs $ a:as) ++ [fv] | ||||
|     -- -f(missing arg) | ||||
|     moveArgs (f:a:as)   | isMovableReqArgFlag f, not (isValue a) = (moveArgs $ a:as) ++ [f] | ||||
|     -- anything else | ||||
|     moveArgs as = as | ||||
| 
 | ||||
| @ -185,6 +186,10 @@ isMovableReqArgFlagAndValue ('-':'-':a:as) = case break (== '=') (a:as) of (f:fs | ||||
| isMovableReqArgFlagAndValue ('-':shortflag:_:_) = [shortflag] `elem` reqargflagstomove | ||||
| isMovableReqArgFlagAndValue _ = False | ||||
| 
 | ||||
| isValue "-"     = True | ||||
| isValue ('-':_) = False | ||||
| isValue _       = True | ||||
| 
 | ||||
| flagstomove = inputflags ++ helpflags | ||||
| noargflagstomove  = concatMap flagNames $ filter ((==FlagNone).flagInfo) flagstomove | ||||
| reqargflagstomove = -- filter (/= "debug") $ | ||||
|  | ||||
| @ -122,12 +122,12 @@ hledger --daily register | ||||
| >>>=1 | ||||
| 
 | ||||
| # 12. help and input flags can go before command | ||||
| hledger -f /dev/null --alias somealiases --rules-file -? -h --help --version --debug 1 register --daily | ||||
| hledger -f /dev/null --alias somealiases --rules-file -h --help --version --debug 1 register --daily | ||||
| >>> /^hledger \[COMMAND\]/ | ||||
| >>>=0 | ||||
| 
 | ||||
| # 13. or after it, and spaces in options are optional | ||||
| hledger register -f/dev/null --alias=somealiases --rules-file -? -h --help --version --debug 1 --daily | ||||
| hledger register -f/dev/null --alias=somealiases --rules-file -h --help --version --debug 1 --daily | ||||
| >>> /^register \[OPTIONS\]/ | ||||
| >>>=0 | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user