Welcome! Might I suggest you're overthinking it? Symlinks would be fine.

On Sunday, August 20, 2023 at 10:31:10 PM UTC-7 kdd39...@gmail.com wrote:

> I’m relatively new to Beancount and I’m working on setting up my ledgers. 
> I’ve encountered an issue related to document directives when dealing with 
> different devices. Here’s a breakdown of my situation and the potential 
> solutions I’ve considered:
>
>    - I have started writing my importers for filing various statements 
>    (using the beangulp framework). 
>    - As part of the import, I’d like to extract and output a document 
>    directive. 
>    - I am using document directives as opposed to the option "documents" 
>    "PathToRoot" because I’d like to add metadata to the document 
>    directive entries. 
>
> Problem 
>
> Beancount Document directives 
> <https://beancount.github.io/docs/beancount_language_syntax.html#documents> 
> have the following construct: YYYY-MM-DD document Account "PathToDocument"
> .
>
> Let us assume that we have two users, Joe and Alice, who run a shared 
> ledger that is kept on GitHub. They store their statements and other 
> document files on a shared OneDrive folder that is synced to each users 
> computer.
>
> *Alice’s file organization:*
> /home/alice/ |-- OneDrive |-- documents |-- stmts |-- Liabilities |-- 
> CreditCard |-- apr-2014.pdf |-- etc., |-- remotes |-- ledger |-- 
> main.beancount 
>
> *Joe’s file organization:*
> /home/joe/ |-- OneDrive |-- documents |-- stmts |-- Liabilities |-- 
> CreditCard |-- apr-2014.pdf |-- etc., |-- remotes |-- ledger |-- 
> main.beancount 
>
> If Joe files the apr-2014.pdf statement, he would enter the following 
> into main.beancount:
> 2013-11-03 document Liabilities:CreditCard 
> "/home/joe/OneDrive/documents/stmts/apr-2014.pdf" 
>
> On Alice’s computer, however, this would be the incorrect file path. For 
> Alice, the entry should read:
> 2013-11-03 document Liabilities:CreditCard 
> "/home/alice/OneDrive/documents/stmts/apr-2014.pdf" 
>
> This causes issues and prevents the Alice and Joe from being able to use 
> the ledgers properly (bean-check will fail since the file is not found).
> Potential Solutions 
>
> I have tried to do some research on how one might address this issue. I 
> have come upon three potential options:
>
>    1. 
>    
>    *Use relative paths*
>    
>    Instead of entering the absolute path, use a relative path such that 
>    the document directive becomes:
>    2013-11-03 document Liabilities:CreditCard 
>    "../../OneDrive/documents/stmts/apr-2014.pdf" 
>    
>    This looks like it would work, provided Alice and Joe keep their 
>    documents in the exact same place relative to the ledger file. That seems 
> a 
>    bit fragile and not so elegant.
>    2. 
>    
>    *Use a symlinked folder*
>    
>    Each user could add a symlinked documents folder into the main ledger 
>    folder, for example:
>    |-- remotes |-- ledger |-- main.beancount |-- documents --> 
>    /home/joe/OneDrive/documents 
>    
>    This solution seems better, since it allows each user to specify their 
>    own folder path.
>    3. 
>    
>    *Run a pre-processing script*
>    
>    Each user could run a pre-processing script on the ledger files to 
>    replace a set of placeholder variables with the locally configured 
>    variables. The updated file would then become the input to the beancount 
>    parser. For example:
>    2013-11-03 document Liabilities:CreditCard 
>    "$DOCUMENT_PATH/stmts/apr-2014.pdf" 
>    
>    This could work, but it introduces an additional layer of complexity, 
>    as users would need to run this script before parsing the ledger file.
>    
> Question 
>
> What I would like to know is:
>
>    1. 
>    
>    Are there any alternative options that I have failed to consider here?
>    
>    For example, is there the chance that Beancount itself could recognise 
>    a configuration variable that represents the root documents directory? 
>    Could this be declared as an option in the main ledger file?
>    2. 
>    
>    If there are no other possibilities, does anyone have any advice on 
>    which approach is best?
>    
> ​
>

-- 
You received this message because you are subscribed to the Google Groups 
"Beancount" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to beancount+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/beancount/1466dfb8-0267-4330-a0e3-cbfe6a42a7b6n%40googlegroups.com.

Reply via email to