Support format option provided by client
				
					
				
			The format option on bean-query command-line is now an option that the client can pass along. The setting defaults to whatever `bean-query` was going to default to.
This commit is contained in:
		
							parent
							
								
									e9d0a8b857
								
							
						
					
					
						commit
						6ef1ba0422
					
				
					 2 changed files with 13 additions and 4 deletions
				
			
		|  | @ -15,8 +15,8 @@ sub BeancountQueryInitialize { | |||
|     die "BEANCOUNT_QUERY: tie failed: is the goffy beancount server running?\n"; | ||||
| } | ||||
| 
 | ||||
| sub BeancountQuerySubmit($) { | ||||
|   my($question) = @_; | ||||
| sub BeancountQuerySubmit($;$) { | ||||
|   my($question, $format) = @_; | ||||
|   while (defined $BEANCOUNT_QUERY{fifoName} or defined $BEANCOUNT_QUERY{question}) { sleep 1; } | ||||
|   (tied %BEANCOUNT_QUERY)->shlock; | ||||
|   if (defined $BEANCOUNT_QUERY{fifoName} or defined $BEANCOUNT_QUERY{question}) { | ||||
|  | @ -27,6 +27,7 @@ sub BeancountQuerySubmit($) { | |||
|       "fifoName: \"$BEANCOUNT_QUERY{fifoName}\" question: \"$BEANCOUNT_QUERY{question}\"!"); | ||||
|   } | ||||
|   $BEANCOUNT_QUERY{question} = $question; | ||||
|   $BEANCOUNT_QUERY{format} = $format if defined $format; | ||||
|   (tied %BEANCOUNT_QUERY)->shunlock; | ||||
|   while (not defined $BEANCOUNT_QUERY{fifoName}) { sleep 1; } | ||||
|   die "Ceci n'est pas une pipe: BEANCOUNT_QUERY{fifoName}, $BEANCOUNT_QUERY{fifoName}:$!" | ||||
|  |  | |||
|  | @ -87,11 +87,19 @@ while (1) { | |||
|   } elsif ($query{question} !~  /^[\-\@\w.\s\"\'\_\(\)]+$/) { | ||||
|     print STDERR "Query string $query{question} looks suspicious, not running beancount query!\n"; | ||||
|     (tied %query)->shlock; | ||||
|     $query{question} = undef; | ||||
|     $query{question} = $query{format} = undef; | ||||
|     $query{fifoName} = mktemp("REJECTED_beancount-query-fifo-this-file-does-not-exist_${$}_XXXXXXXXX"); | ||||
|     (tied %query)->shunlock; | ||||
|   } elsif (defined $query{format} and $query{format} !~ /^(?:csv|text)$/) { | ||||
|     print STDERR "format string $query{format} is not text or csv, not running beancount query!\n"; | ||||
|     (tied %query)->shlock; | ||||
|     $query{question} = $query{format} = undef; | ||||
|     $query{fifoName} = mktemp("REJECTED_beancount-query-fifo-this-file-does-not-exist_${$}_XXXXXXXXX"); | ||||
|     (tied %query)->shunlock; | ||||
|   } elsif (not defined $query{fifoName}) { | ||||
|     my @cmd = ($BEANCOUNT_QUERY_CMD, '-f', 'text', $LOAD_FILE, $query{question}); | ||||
|     my @cmd = ($BEANCOUNT_QUERY_CMD); | ||||
|     push(@cmd, '-f', $query{format}) if defined $query{format}; | ||||
|     push(@cmd, $LOAD_FILE, $query{question}); | ||||
|     print STDERR "Running query:  $query{question}\n" if $VERBOSE > 0; | ||||
|     open(my $beancountFH, "-|", @cmd); | ||||
|     print STDERR "Running ", join(" ", @cmd), "\n" if $VERBOSE > 1; | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Bradley M. Kuhn
						Bradley M. Kuhn