Nero Punished Miscreants
    Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »


    The Magical Conjuror



    Conjuror is magical wizard who knows how to do cool things with CSV data and dons an epic beard- kind of like Santa Claus, sans the whole naughty or nice bit. Conjuror is based on Data Packages, which are a nifty way to wrap simple CSV data in JSON, and was created by the OKFN.

    Getting Started

    1. First install Conjuror npm install -g conjuror
    2. Then set it up by running setup script conjuror setup
    3. To use Conjuror to you will need to make copies of the following two data files:
    • data/_template.csv
    • data/_template.json

    Rename these files something like clients.csv or receipts.csv or whatever suits your needs add modify the values of the JSON schema & CSV columns as you see it. Once the schema & CSV matches, you can start adding data items to the CSV such as:

    date, time, description, client, location, rate
    2015-02-07, 2, improved importing of files, conjuror, cafe, 0.00
    2015-02-08, 2, updated commands & documentation, mailpile, home, 0.00

    You can manually add items to the CSV, or you can use the rough implemenation of the time tracker tool by running a separate script called ctrack read more about this below.

    Conjuror Commands

    • conjuror - shows a help screen with following commands
    • conjuror setup - setups up Conjuror on a new machine
    • conjuror view - renders filtered data to CLI for quick checks
    • conjuror track - add a new entry to an existing project
    • conjuror output - output a filtered report as PDF, HTML, and CSV


    Normally the conjuror command should accept flags to be run as a normal shell command, but I broke that recently!

    Flag Short Flag Behavior
    --help -h shows list of commands
    --input -i selects data.json schema file to open up
    --formats -f allows you to choose different output formats (cli, csv, html, pdf)
    --output -o specify Name of File to be output
    --date -d filters by numerous date styles 'February, Feb, 02 read below
    --search -s searches for a string like magic contained within a longer string I love doing magic tricks
    --trim -t filters by an item like 'client' (currently hardcoded value)
    --price -p Override the calculated price with a fixed price
    --currency -c what currency the thing is in
    --extra -e Text that appears in extra field of template (overrides field in config).
    --details -l Affects visibility of the data_details field in a template (show, hide)
    --message -m Shows up as a data_message in a template
    --generated -g Allows specifying custom invoice date

    Run either of the follow two examples from terminal command line

    Example (trim)

    node conjuror.js --input data/clients.json --trim client-name

    This command should have printed data to your command line that matches your trim parameter.

    Example (output & date)

    node conjuror.js -i data/clients.json -o "Feb Invoice" -t client-name --date=Feb

    The following examples are formats of dates values you can pass using the --date flag

    • Month - February or Feb or 02 which picks month of current year
    • Exact - 2015-09-04 gets all values since date
    • Range - 2015-09-04:to:2015-11-15 selects between two exact values

    The above example should have outputted an HTML rendering of your the entries parsed from your data. The output will be located in output/Feb Invoice.html

    Note: regarding PDF export

    To generate PDF outputs, you need to install wkhtmltopdf for your operating system on Debian that is done with sudo apt-get install wkhtmltopdf

    Why The Magical Name & Terminology?

    Well, there is that quote by Asimov about technology... there is also the Cyber Wizard Institute which you should check out... and I really wanted to use this icon of a magical bearded wizard which came from my friend Max who is obsessed with JS

    Made in Berlin


    npm i conjuror

    Downloadslast 7 days







    last publish


    • avatar