Skip to content

atweiden/mktxn

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
bin
 
 
lib
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

mktxn

Double-entry accounting ledger packager

Synopsis

cmdline

cat >> TXNBUILD <<'EOF'
pkgname = 'sample'
pkgver = '1.0.0'
pkgrel = 1
source = 'sample.txn'
EOF
mktxn

raku

use TXN;
my Str $pkgname = 'sample';
my Version $pkgver .= new('1.0.0');
my UInt $pkgrel = 1;
my Str $pkgdesc = 'Sample transactions';
my Str $source = 'sample.txn';
my %pkg = mktxn(:$pkgname, :$pkgver, :$pkgrel, :$pkgdesc, :$source);

Description

Serializes double-entry accounting ledgers to JSON package format.

Release Mode

In release mode, mktxn produces a tarball comprised of two JSON files:

.TXNINFO

Inspired by Arch Linux .PKGINFO files, .TXNINFO files contain accounting ledger metadata useful in simple queries.

{
  "pkgname" : "with-includes",
  "pkgver" : "0.0.1",
  "pkgrel" : 1,
  "pkgdesc" : "Sample transactions with include directives",
  "compiler" : "mktxn v0.1.0 2018-04-21T14:14:33.931470Z",
  "entities-seen" : [
    "FooCorp",
    "Personal",
    "WigwamLLC"
  ],
  "count" : 112
}

txn.json

txn.json contains the output of serializing the accounting ledger to JSON.

[
  {
    "id" : {
      "xxhash" : 1468523538,
      "text" : "2014-01-01 \"I started the year with $1000 in Bankwest cheque account\"\n  Assets:Personal:Bankwest:Cheque      $1000.00 USD\n  Equity:Personal                      $1000.00 USD",
      "number" : [
        3
      ]
    },
    "header" : {
      "important" : 0,
      "description" : "I started the year with $1000 in Bankwest cheque account",
      "date" : "2014-01-01"
    },
    "posting" : [
      {
        "drcr" : "DEBIT",
        "id" : {
          "xxhash" : 4134277096,
          "text" : "Assets:Personal:Bankwest:Cheque      $1000.00 USD",
          "entry-id" : {
            "xxhash" : 1468523538,
            "text" : "2014-01-01 \"I started the year with $1000 in Bankwest cheque account\"\n  Assets:Personal:Bankwest:Cheque      $1000.00 USD\n  Equity:Personal                      $1000.00 USD",
            "number" : [
              3
            ]
          },
          "number" : 0
        },
        "decinc" : "INC",
        "amount" : {
          "asset-code" : "USD",
          "asset-quantity" : 1000,
          "asset-symbol" : "$"
        },
        "account" : {
          "entity" : "Personal",
          "path" : [
            "Bankwest",
            "Cheque"
          ],
          "silo" : "ASSETS"
        }
      },
      {
        "drcr" : "CREDIT",
        "id" : {
          "xxhash" : 344831063,
          "text" : "Equity:Personal                      $1000.00 USD",
          "entry-id" : {
            "xxhash" : 1468523538,
            "text" : "2014-01-01 \"I started the year with $1000 in Bankwest cheque account\"\n  Assets:Personal:Bankwest:Cheque      $1000.00 USD\n  Equity:Personal                      $1000.00 USD",
            "number" : [
              3
            ]
          },
          "number" : 1
        },
        "decinc" : "INC",
        "amount" : {
          "asset-code" : "USD",
          "asset-quantity" : 1000,
          "asset-symbol" : "$"
        },
        "account" : {
          "entity" : "Personal",
          "silo" : "EQUITY"
        }
      }
    ]
  }
]

.TXNINFO and txn.json are compressed and saved as filename $pkgname-$pkgver-$pkgrel.txn.pkg.tar.xz in the current working directory.

Installation

Dependencies

Test Dependencies

To run the tests:

$ git clone https://github.com/atweiden/mktxn && cd mktxn
$ peru --file=.peru.yml --sync-dir="$PWD" sync
$ RAKULIB=lib prove -r -e raku

Licensing

This is free and unencumbered public domain software. For more information, see http://unlicense.org/ or the accompanying UNLICENSE file.

About

Double-entry accounting ledger packager

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages