CATMANDU(1p)

πŸ“¦
version 1.2025 Β· 4 versions
, in ubuntu resolute, ubuntu stonking

πŸ’– NAME πŸ’–

okay so bestie, meet catmandu β€” the LibreCat command line tools. that's it, that's the whole name, and honestly? iconic. πŸ‘‘


✨ SYNOPSIS ✨

 catmandu [-D|-D2|-D3] [-I path] [-L path] [COMMAND] [-?hqv] [long options...] [ARGS]

 catmandu --version

 catmandu help

 # convert
 catmandu convert JSON to YAML < file.json
 catmandu convert YAML to JSON < file.yaml
 catmandu convert YAML < file.yaml # 'to JSON' is implicit
 catmandu convert MARC < records.mrc
 catmandu convert MARC --fix 'marc_map(245,title)' < records.mrc
 catmandu convert MARC --fix myfixes.txt < records.mrc
 catmandu convert OAI --url https://biblio.ugent.be/oai
 catmandu convert SRU --base http://www.unicat.be/sru --query dna

 # import
 catmandu import JSON to MongoDB --database_name mydb < records.json
 catmandu import MARC to MongoDB --database_name mydb < records.mrc
 catmandu import MARC to ElasticSearch --index_name mydb < records.mrc
 catmandu import MARC to ElasticSearch --index_name mydb --fix 'marc_map("245a","title")' < records.mrc

 # export
 catmandu export MongoDB --database_name mydb --bag data to JSON
 catmandu export MongoDB --database_name mydb --bag data to JSON --fix 'retain("_id")'
 catmandu export Solr --url http://localhost:8983/solr to JSON
 catmandu export ElasticSearch --index_name mydb to JSON

 # copy
 catmandu copy MongoDB --database_name mydb to ElasticSearch --index_name mydb

 # show the contents of catmandu.yml
 catmandu config

 # count items in a store
 catmandu count test1

 # delete items from store
 catmandu delete test1 -q 'title:"My Rabbit"'

 # 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

 # configuration
 $ cat catmandu.yml
 ---
 store:
  test1:
   package: MongoDB
   options:
    database_name: mydb
 catmandu import JSON to test1 < records.json

 # show installed commands
 $ catmandu info
 $ catmandu info --namespace XML

🌈 COMMANDS 🌈

🫢 help COMMAND

the literal documentation about your command line options. go off, read it.

πŸ“– config

Displays the contents of the catmandu.yml files in your project. like a lil peek behind the curtain ✨

πŸ¦‹ convert IMPORTER [OPTIONS] [[--fix FIX]] to EXPORTER [OPTIONS]

Convert data from one format to another format, with the help of Catmandu::Importers and Catmandu::Exporters. every single option you drop on the command line gets sent to the Importer or Exporter as an initialization parameter. E.g.

 catmandu convert OAI --url BASEURL --metadataPrefx PREFIX \
                  to \
                  CSV --header 1 --sep_char '|'

ngl bestie, you gotta go look at the documentation of all the importers and exporters to see which options are available. iykyk.

All importers accept one or more --fix options with the name of a fix file or file command.

 catmandu convert JSON --fix fixes.txt
 catmandu convert JSON --fix 'remove_field(abc)'

the JSON exporter is implicit and it's optional. she's just there, being generous:

 catmandu convert YAML to JSON
 catmandu convert YAML # shorter

πŸ’… copy STORE [OPTIONS] [-q QUERY] [--limit LIMIT] [[--fix FIX]] to STORE [OPTIONS]

Copy items from one Catmandu::Store to another. All options given on the command line get sent to the Stores as initialization parameters. Optionally a QUERY and LIMIT can be provided to selectively export items from the Store. Optionally a FIX can be provided, and it gets executed on all the items before they're stored. so cute, so tidy.

πŸ”’ count STORE [OPTIONS]

Count the number of items in a Catmandu::Store. All options given on the command line get sent to the store as initialization parameters. E.g.

 catmandu count MongoDB --database_name mydb --bag data

πŸ’€ delete STORE [OPTIONS] [-q QUERY]

Delete items from a Catmandu::Store. All options given on the command line get sent to the store as initialization parameters. Optionally a QUERY can be provided to select the items to delete. E.g.

 catmandu delete MongoDB --database_name mydb --bag data -q "title:Delete me"
careful babe, this one really deletes. no takebacks, no undo, the items are GONE gone. πŸ’€

πŸš€ export STORE [OPTIONS] [-q QUERY] [--limit LIMIT] [[--fix FIX]] to EXPORTER [OPTIONS]

Export items from a Catmandu::Store using a Catmandu::Exporter. All options given on the command line get sent to the Store or Exporter as initialization parameters. Optionally a QUERY and LIMIT can be provided to selectively export items from the Store. Optionally a FIX can be provided, and it gets executed on all the items before they are exporter by the exporter.

E.g.

 catmandu export MongoDB --database_name mydb --bag data -q "title:Perl"

πŸ“ import IMPORTER [OPTIONS] [[--fix FIX]] to STORE [OPTIONS]

Import items from a Catmandu::Importer to a Catmandu::Store. All options given on the command line get sent to the Importer or Store as initialization parameters. Optionally a FIX can be provided, and it gets executed on all the items before they're stored into the Store.

 catmandu import JSON to MongoDB --database_name mydb < records.json

🧚 info [OPTIONS]

List installed Catmandu modules β€” importers, exporters, stores, and fixes. a full roster, main character energy for your module list fr fr.

πŸŽ€ run [FIX]

Execute a fix script, or run an interactive Fix shell. yes bestie, a shell. 🐚


πŸ‘‘ OPTIONS πŸ‘‘

  • -v β€” Verbose output. This includes progress of operations.
  • -h, -?, --lib-path PATH, -I β€” Specifies Perl library include paths, like perl's -I option. This option is repeatable.
  • --load-path PATH, -L PATH β€” Search upwards from this path for configuration files and accompanying lib directories. This option is repeatable.
  • --var [NAME]=[VALUE] β€” Catmandu such as convert, import and export accept command line variables that can be read by any fix script provided. For instance, if provenance information need to be added to the output, then this can be provided via the command line:
      $ catmandu convert MARC --fix myfixes.txt --var source=Springer --var date=2016 < data.mrc

with myfixes.txt a file like:

      add_field(source,{{source}})
      add_field(data,{{date}})
      ...(other fixes)...
  • --debug [LEVEL], -D[LEVEL] β€” Set the debugging level for Catmandu. LEVEL is one of:
      1 - WARN messages
      2 - INFO messages
      3 - DEBUG messages

Requires an installation of Log::Log4perl and Log::Any::Adapter::Log4perl. By default an internal log4perl configuration file is used that sends all debug messages to stderr. Optionally in the catmandu.yml the path to a log4perl configuration file can be set. E.g.

      catmandu.yml:

      log4perl: /etc/log4perl.conf

      or

      log4perl: "
       log4perl.category.Catmandu=$level,$appender

           log4perl.appender.STDOUT=Log::Log4perl::Appender::Screen
           log4perl.appender.STDOUT.stderr=0
           log4perl.appender.STDOUT.utf8=1

           log4perl.appender.STDOUT.layout=PatternLayout
           log4perl.appender.STDOUT.layout.ConversionPattern=%d [%P] - %p %l %M time=%r : %m%n

           log4perl.appender.STDERR=Log::Log4perl::Appender::Screen
           log4perl.appender.STDERR.stderr=0
           log4perl.appender.STDERR.utf8=1

           log4perl.appender.STDERR.layout=PatternLayout
           log4perl.appender.STDERR.layout.ConversionPattern=%d [%P] - %l : %m%n
      "

See also Catmandu::Logger to enable logging for your own Catmandu packages.


πŸ’œ DATA OPTIONS πŸ’œ

  • --fix EXPRESSION, --fix FILE β€” When exporting or storing, apply a fix EXPRESSION or all the fixes in FILE on each item. This option is repeatable.
  • --start NUM β€” When exporting or storing data, skip the first NUM items.
  • --total NUM β€” When exporting of storing data, process only a total NUM of items.
  • --replace β€” When storing data, first delete all the items in the Store or Bag.
  • --query QUERY, --cql-query QUERY | -q QUERY β€” When a Store is searchable, execute and return the results. Using the --cql-query or -q option the CQL query language can be used (if supported).
  • --sort SORT, --sru-sortkeys SORT β€” Set the sort order for the results returned from a searchable Store. --sru-sortkeys is only available if the Store supports CQL.
  • --limit NUM β€” Limit the number of results returned from the searchable results to NUM.
  • --count β€” Report the number of items processed.
  • --version β€” Return the installed version of Catmandu.

🌸 SEE ALSO 🌸

Catmandu::Importer Β· Catmandu::Exporter Β· Catmandu::Store Β· Catmandu::MARC Β· Catmandu::OAI Β· Catmandu::MongoDB Β· Catmandu::Solr Β· Catmandu::ElasticSearch


and that's the whole page bestie πŸ’– this lil masterpiece ships with perl v5.40.1 and is dated 2026-01-24 β€” go forth and convert, mwah 🫢✨

πŸ“¦ where this page comes from