Skip to content

Console Bibliography

License

Notifications You must be signed in to change notification settings

mrossinek/cobib

Repository files navigation

coBib

coBib

pipeline coverage PyPI

coBib is a simple, command-line based bibliography management tool. It is the result of the need for an easy-to-use alternative to full-blown reference managers like Mendeley or Zotero. As such it follows some basic design goals:

  • plain-text database: which means you get full access and control over the database.
  • git-integration: as a benefit of the above, you can keep track of your database through version control.
  • centralized database, location-independent library: this means, that coBib only manages the database file in a centralized fashion but allows you to spread the actual contents of your library across the entire file system (this is the major different to papis).
  • command-line and TUI support: all features are available through the command-line as well as a textual-based TUI

Installation

For all common purposes you can install coBib via pip:

pip install cobib

Note: Use pip3 if you still have Python 2 installed.

If you would also like to install the man-page, you need to download the source code and do the following:

git clone https://gitlab.com/cobib/cobib
cd cobib
make install_extras

Arch Linux

coBib is packaged in the AUR.

Windows

coBib might work on Windows as is, but it is not being tested so no guarantees are given. If you are using Windows 10 or later and are running into issues, you should be able to install and use coBib's full functionality within the Linux subsystem.

Getting started

To get started, you must initialize the database:

cobib init

If you would like to enable the git-integration, you should run:

cobib init --git

and enable config.database.git (see also configuration).

Be sure to check out my Quickstart blog post for a more guided introduction compared to the following section!

Importing your library

coBib provides an import command through which you can easily import your library from another bibliography manager. For more details check out:

cobib import --help

So far, coBib knows how to import your library from Zotero by simply running:

cobib import --zotero

Check out the following command, the man page or the online documentation for more details:

cobib import --zotero -- --help

Usage

Adding new entries

You can now add new entries to your database (see also cobib.commands.add1):

cobib add --bibtex some_biblatex_file.bib
cobib add --arxiv <some arXiv ID>
cobib add --doi <some DOI>
cobib add --isbn <some ISBN>

Note: when adding data from a .bib file, make sure that it is in the BibLaTex format!

Viewing your database and entries

You can view the contents of your database with (see also cobib.commands.list_):

cobib list

You can show a specific entry with (see also cobib.commands.show):

cobib show <some entry label>

You can open an associated file of an entry with (see also cobib.commands.open):

cobib open <some entry label>

You can even search through your database with (see also cobib.commands.search):

cobib search "some text"

Editing your database

You can delete an entry with (see also cobib.commands.delete):

cobib delete <some entry label>

You can edit an entry manually with (see also cobib.commands.edit):

cobib edit <some entry label>

You can also apply simple modifications to multiple entries at once with (see also cobib.commands.modify):

cobib modify tags:private -- <some entry label> <another entry label> ...

Exporting your database

You can export your database with (see also cobib.commands.export):

cobib export --bibtex my_bibliography.bib
cobib export --zip my_library.zip

Integrated version control

If you have enabled the git-integration, you can undo and re-apply changes to your database with (see also cobib.commands.undo and cobib.commands.redo):

cobib undo
cobib redo

Getting help

Each subcommand provides additional help via:

cobib <subcommand> --help

and you can find extensive information in the online documentation (linked above) and the man-page:

man cobib

TUI

Finally, you can also use coBib's TUI for a more interactive experience (see also cobib.ui.tui), by simply typing

cobib

Here is an example screenshot of the TUI when listing the entries in your database:

coBib TUI List

And here is an example screenshot for listing search results:

coBib TUI Search

Configuration

You can overwrite the default configuration by placing a config.py file in ~/.config/cobib/. The easiest way to get started with this file is by copying example.py or by using:

cobib _example_config > ~/.config/cobib/config.py

You can then modify it to your liking.

You may also specify a different config file at runtime by using the -c or --config command line argument or by specifying a custom path in the COBIB_CONFIG environment variable. You can also disable loading of any configuration file be setting this environment variable to one of the following values: "", 0, "f", "false", "nil", "none".

Finally, be sure to take a look at the man page (man cobib) and/or the online documentation for more information.

Plugins

coBib supports the implementation of plugins! You can find an example plugin in this folder or read the docs of cobib_dummy (when viewing the hosted documentation online).

Documentation

coBib's documentation is hosted here.

If you would like to generate a local version during development, you need to clone the source code, and install pdoc in order to generate it:

git clone https://gitlab.com/cobib/cobib.git
cd cobib
pip install pdoc
pdoc -d google -e cobib=https://gitlab.com/cobib/cobib/-/blob/master/src/cobib/ -t html -o docs src/cobib tests

You can then browse the documentation from docs/cobib.html.

History

I have started this project when I was looking into alternatives to popular reference managers such as Mendeley, which has more features than I use on a regular basis and does not allow me to work from the command line which is where I spent most of the time that I spent on the computer.

Hence, I have decided to make it my own task of implementing a simple, yet fast, reference manager. coBib is written in Python and uses a YAML file to store its bibliography in a plain text format.

Changelog

You can find the detailed changes throughout coBib's history in the Changelog.

License

coBib is licensed under the MIT License.

Footnotes

  1. References like this one get interpreted by the documentation generator. If you are reading this as the README page, you may find the online documentation more enjoyable.