env -S isn't a thing on linux of course. Go back to using standard env, which means using a stack options line, which means not using "ghc". This new setup is probably simpler anyway. I've just had to give up on the goal of having each script's required packages being defined in one place; now (to they extent they are required) they must be defined both in the script header and in compile.sh.
		
			
				
	
	
		
			53 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Haskell
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Haskell
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env stack
 | |
| -- stack runghc --verbosity info --package hledger
 | |
| -- See hledger-check-fancyassertions.hs
 | |
| --package string-qq
 | |
| 
 | |
| {-
 | |
| Quick script that adds file/line number tags to print output.
 | |
| cf https://www.reddit.com/r/plaintextaccounting/comments/ddzn8o/finding_corresponding_journal_files_from_hledger/
 | |
| 
 | |
| $ hledger print-location -f examples/sample.journal desc:eat
 | |
| 2008/06/03 * eat & shop
 | |
|     ; location: /Users/simon/src/hledger/examples/sample.journal:30
 | |
|     expenses:food                  $1
 | |
|     expenses:supplies              $1
 | |
|     assets:cash
 | |
| -}
 | |
| 
 | |
| {-# LANGUAGE OverloadedStrings #-}
 | |
| {-# LANGUAGE QuasiQuotes #-}
 | |
| 
 | |
| import Data.String.QQ (s)
 | |
| import Data.Text (pack)
 | |
| import Text.Printf
 | |
| import Hledger.Cli
 | |
| 
 | |
| ------------------------------------------------------------------------------
 | |
| cmdmode = hledgerCommandMode
 | |
|   [s| print-location
 | |
| Like print, but adds tags showing the file path and location of transactions.
 | |
| _FLAGS
 | |
|   |]
 | |
|   [] 
 | |
|   [generalflagsgroup1]
 | |
|   []
 | |
|   ([], Just $ argsFlag "[QUERY]")
 | |
| ------------------------------------------------------------------------------
 | |
| 
 | |
| main :: IO ()
 | |
| main = do
 | |
|   opts <- getHledgerCliOpts cmdmode
 | |
|   withJournalDo opts $ \j -> 
 | |
|     print' opts j{jtxns = map addLocationTag $ jtxns j}
 | |
| 
 | |
| addLocationTag :: Transaction -> Transaction
 | |
| addLocationTag t = t{tcomment = tcomment t `commentAddTagNextLine` loctag}
 | |
|   where
 | |
|     loctag = ("location", pack $ showGenericSourcePosLine $ tsourcepos t)
 | |
| 
 | |
| -- Like showGenericSourcePos in Hledger.Data.Transaction, but show just the starting line number.
 | |
| showGenericSourcePosLine :: GenericSourcePos -> String
 | |
| showGenericSourcePosLine (GenericSourcePos f line _)         = printf "%s:%d" f line
 | |
| showGenericSourcePosLine (JournalSourcePos f (startline, _)) = printf "%s:%d" f startline
 |