Catmandu3pm
A data toolkit
Usage
# From the command line# Convert data from one format to another$ catmandu convert JSON to CSV < data.json$ catmandu convert CSV to YAML < data.csv$ catmandu convert MARC to YAML < data.mrc# Fix data, add, delete, change fields$ catmandu convert JSON --fix 'move_field(title,my_title)' < data.json$ catmandu convert JSON --fix all_my_fixes.txt < data.json# Use a moustache preprocessor on the fix script$ catmandu convert JSON --fix all_my_fixes.txt --var opt1=foo --var opt2=bar < data.json# run a fix script$ catmandu run myfixes.fix# or, create an executable fix script$ cat myfixes.fix#!/usr/local/bin/catmandu rundo importer(OAI,url:"http://biblio.ugent.be/oai")retain(_id)end$ chmod 755 myfixes.fix$ ./myfixes.fix
Overview
Catmandu provides a command line tools for the conversion of various data formats including: JSON, YAML, RDF, CSV, TSV, XML and even Excel. Using extension modules, specialized conversions for metadata formats using in libraries, archives and museums is also supports. We provide support for MARC, MAB, MODS, OAI-PMH, PICA, PNX, RIS, LIDO, SRU and Z39.50.
Specialized conversions require a mapping language. This is implemented in Catmandu using the `Fix` language. For a short introduction read Catmandu::Introduction. Online tutorials can be found at the end of this document.
Install
From Source
# Clone the directorygit clone https://github.com/LibreCat/Catmandu# Buildcd Catmanducpanm -n -q --installdeps --skip-satisfied .perl Build.PL && ./Build && ./Build install
Using Docker
docker build -t librecat/catmandu .# Run catmandu with access to you local files at <YourDrive>docker run -v <YourDrive>:/home/catmandu/Home -it librecat/catmandu# E.g.docker run -v C:\Users\alice:/home/catmandu/Home -it librecat/catmandu
Install extensions
cpanm install <PackageName># E.g.cpanm install Catmandu::MARC
Popular extensions
Catmandu::Breaker
Catmandu::Identifier
Catmandu::MARC
Catmandu::OAI
Catmandu::PICA
Catmandu::RDF
Catmandu::SRU
Catmandu::Stat
Catmandu::Template
Catmandu::Validator
Catmandu::XLS
Catmandu::XSD
Catmandu::Z3950
Contributors
Patrick Hochstenbach, "patrick.hochstenbach at ugent.be"
Nicolas Franck, "nicolas.franck at ugent.be"
Johann Rolschewski, "jorol at cpan.org"
Vitali Peil, "vitali.peil at uni-bielefeld.de"
Jakob Voss, "nichtich at cpan.org"
Magnus Enger, "magnus at enger.priv.no"
Christian Pietsch, "christian.pietsch at uni-bielefeld.de"
Dave Sherohman, "dave.sherohman at ub.lu.se"
Snorri Briem, "snorri.briem at ub.lu.se"
Pieter De Praetere, "pieter.de.praetere at helptux.be"
Doug Bell
Upsana, "me at upasana.me"
Stefan Weil
Tom Hukins
Questions, issues & bug reports
For any questions on the use of our modules please join our mailing list at:
[email protected]
or send in your bug reports or feature requests to our issue tracker at:
https://github.com/LibreCat/Catmandu/issues
License and copyright
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See <http://dev.perl.org/licenses/> for more information.
Releases
6 releases since Debian 8 (Jessie); the text changed 5 times.