NAME

Catmandu - a data toolkit

SYNOPSIS

# 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 run
do importer(OAI,url:"http://biblio.ugent.be/oai")
    retain(_id)
end
$ chmod 755 myfixes.fix
$ ./myfixes.fix

DESCRIPTION

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 directory
git clone https://github.com/LibreCat/Catmandu

# Build
cd Catmandu
cpanm -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

SEE ALSO

introduction

Catmandu::Introduction

documentation

http://librecat.org/

blog

https://librecatproject.wordpress.com/

step-by-step introduction from basics

https://librecatproject.wordpress.com/2014/12/01/day-1-getting-catmandu/

command line client

catmandu

Perl API

Catmandu::PerlAPI

AUTHOR

Nicolas Steenlant, <nicolas.steenlant at ugent.be>

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:

librecat-dev@lists.uni-bielefeld.de

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.