Giter VIP home page Giter VIP logo

booktrack-cli's Introduction

Hey there... ๐Ÿ‘‹

I am Dennis, a software developer from Germany. Beside my main profession in the automation industry I try to learn new things every day.

GitHub statistics

In 8 years of working on side projects on GitHub, I pushed 113 commits and opened 83 issues.

I also submitted 28 pull requests to different repositories.

My 10 repositories in total received 7 stars till now.

Trying to help other open source projects I contributed to 2 public repositories.

The top used languages across my repositories are:

C++ Kotlin C Python CMake Shell Makefile Other

booktrack-cli's People

Contributors

dsiekmeier avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

booktrack-cli's Issues

Unify the way build dependencies are integrated

The way in which the external libraries are added to the project is quite messy currently. For example one needs nlohmann_json as well as GoogleTest to be installed, but CLI11 is integrated via the CMake FetchContent feature. It would be nice if this could be unified, preferable via FetchContent maybe.

Version handling

The program version has currently to be maintained in the source code as well as in the CMakeLists.txt file. This should be changed in a way, that the version is taken fom CMakeLists.txt.

Exports and reports

Is your feature request related to a problem? Please describe.
One might want to export (part of) the library to use it for other purposes. Generating (HTML) reports would be nice to have an overview over a library.

Support multiple authors

Currently there is only one field for an author implemented as a std::string. One might add a vector of authors to enable more flexible filtering and statistics.

Add interactive mode for adding books

Is your feature request related to a problem? Please describe.
Although passing commandline arguments for adding a book is nice for scripting, sometimes it might be more user friendly and comfortable to have an interactive mode to add information.

Describe the solution you'd like
A call like "booktrack-cli -l bib.json repl" should start an interactive mode in which the user is asked to enter the information about a book.

Describe alternatives you've considered
The interactive mode could be also available for editing books and all the other subcommands. Also it might be possible to start the interactive mode automatically when no commandline argument is given or something like that.

Support filter for "list" subcommand

Is your feature request related to a problem? Please describe.
Currently the list subcommand simply returns a list of all books included in the given library. The user should have the possibility to add filters to the list subcommand to get a better overview over his or her library.

Describe alternatives you've considered
It would be possible to add an own subcommand but I guess this would be not that user-friendly.

Windows and MacOS builds

The complete build progress and testing is currently only done inside a relatively new Linux distribution. It would be expand the user base if the program is usable under Windows.

Add import from Bookshelf

Describe the solution you'd like
There is a quite popular mobile App called Bookshelf. It would be nice to have an import function for booktrack-cli.

Add another subcommand import maybe with some parameters for diferrent formats. It has to be decided what to do with duplicates.

Automatic housekeeping for "book id"

Is your feature request related to a problem? Please describe.
Currently the book id is more or less increased for every added book. If one deletes a book entry right in the middle of the library, there will be a gap in the series of book IDs.

Describe the solution you'd like
There should be some automatic "houskeeping" to fill that gaps. This might be triggered on a certain amount of library items maybe.

Wrong date in statistics summary

Describe the bug
When adding a book without reading data the Statistics page shows "1970" in the "Books finished by year" section.

To Reproduce
Steps to reproduce the behavior:

  1. Add a book without reading data (booktrack-cli add [...])
  2. show the statistics of the library (booktrack-cli statistics)

Expected behavior

  1. only finished books should appear in the "Books finished by year" section
  2. unfinished (or started) books should appear in a separate section or as a new entry in the "Library Statistics Summary"

Version information:

  • OS: Xubuntu 20.04.6 LTS
  • program version v0.3.0

Bulk Import

Is your feature request related to a problem? Please describe.
In some cases it might be convenient to import a bulk of books via a single (sub)command.

Add static code analyzer / linter to build process

Is your feature request related to a problem? Please describe.
Currently the use of cppcheck or similar tools is a manual step. There should be a more easy way to use this tool. At least a documentation should be provided.

Editing books

Is your feature request related to a problem? Please describe.
This is a big and important feature: the possibility to edit already stored books in a library is completly missing at the moment.

Describe the solution you'd like
There might be another subcommand edit to choose a book.

Describe alternatives you've considered
...

Additional context
There might be some internal changes because currently there is no unique book id stored which could be used to choose the library entry to edit.

Autocomplete in Shell

Is your feature request related to a problem? Please describe.
It is kind of inconvenient to completly write out every command, subcommand and option.

Describe the solution you'd like
At least the Bash does have a autocomplete feature, other shells should do too. There should be a Bash completion script or a more platform independent soulution to simplify the use of booktrack-cli.

Describe alternatives you've considered
None, yet.

Add a detail view for books

Is your feature request related to a problem? Please describe.
Currently the only way to see the information about a book is using the list subcommand. Nevertheless, the horizontal space on a screen is limited and it is not possible or at least confusing to list all data there. So as a user I would like to have a new view for showing all the details of a specific book.

Describe the solution you'd like
Adding a new subcommand like info --id to view the details of a book should be a suitable first step.

Additional context
A problem might be, that the book id has to be known and therefore searched with the list subcommand first. Also one might want to see the details of more than one book at once.

Collect diagnostic data for debugging

Is your feature request related to a problem? Please describe.
When trying to reconstruct a bug it is helpful to have data about the runtime environment of the system, software version of booktrack-cli and so on. There should be an option to get this data for the user.

Describe the solution you'd like
An additional option for the command line should be sufficient, e.g. booktrack-cli --diagnosis.

Program Logo

It would be nice to have an own logo for the program to improve the recognition value.

Statistics

Is your feature request related to a problem? Please describe.
There should be at least statistics like "finished books per year" and "read pages per year".

Describe the solution you'd like
Maybe another subcommant stats or statistics.

Add a feature to normalize book entries

Is your feature request related to a problem? Please describe.
There is often a mismatch with the capitalization of book entries. For example sometimes all letters are in lowercase, some are uppercase and so on. This might distract the reader of a book list. It would be nice to have a method to automatically transform the texts and normalize them in a way.

Describe the solution you'd like
A new subcommand modify or transform might be implemented. In a first step it might be sufficient to add options like --title-uppercase and similar. Another step could be to introduce templates for this.

Use JSON Schema files

Is your feature request related to a problem? Please describe.
There is currently no explicit validation if the used library file is correct. This could lead to undefined behaviour and errors when opening such a file.

Describe the solution you'd like
Maybe using a JSON Schema for this purpose would be a benefit.

Refactor commandline handling

  1. A large part of the comanndline parsing is done in main.cc currently, like the implementation of the callbacks for sub commands. This should be reorganized. The CLI11 project has an example for this.
  2. delete subcommand: the choice which option was passed by this subcommand (e.g. --by-title or --by-id) is exclusive. However, this is checked by the value which is included by the option.del struct. It should be checked if CLI11 has an option to check if a parameter was passed.

Crash on reading invalid library files

Describe the bug
When manually editing the library file and changing the JSON scheme the program fails reading and crashes.

To Reproduce
Steps to reproduce the behavior:

  1. Manually edit the library file by removing the "reading" entry for example
  2. load the library file by using the list subcommand for example
  3. booktrack-cli crashes

Expected behavior
To be defined:

  1. ignore missing entries with optionally give a warning
  2. Cancel the reading when the JSON scheme does not fit (see also #9)

Version information:

  • OS: Debian 11 "Bullseye"
  • program version: v0.4.0

Measure code coverage

It would be nice to have a report of the code coverage as a result of the implemented unit tests.

RESTful API

Is your feature request related to a problem? Please describe.
To be independent of the commandline interface there should be another way to access the tracked books in a library. This opens also the possibility for a new project like a Web UI.

Support locale aware date formats

Is your feature request related to a problem? Please describe.
Entering reading dates currently has to have the format [day].[month].[year], that is, the separator has to be a dot. This is only reasonable for german speaking countrys (?).

Describe the solution you'd like
The minimum feature set should be to accept also other separators. But actually the dates should be entered as the user is used to it.

Docker image for development environment

Is your feature request related to a problem? Please describe.
In some cases it might be comfortable to have a complete build environmant in a Docker image. So the developer does not have to handle all dependencies on his or her own.

Improve first start of program

Is your feature request related to a problem? Please describe.
Currently there is no difference between a missing library (not intended) and a library that is cannot be opened for some reason. So at least at the first start there could be a little bit more information for the user.

Support subtitles

Currently there is only one field for a title. This could be seperated into a main and a subtitle of a book for more flexible filtering and statistics.

Support for storing an ISBN

Is your feature request related to a problem? Please describe.
The ISBN is a major feature for managing book libraries. So it should be possible to store it optionally for every book.

Describe the solution you'd like
When adding a book there should be an additional parameter for entering the ISBN of the book. There might be a function to check the validity of the entered number.

Add "valgrind" to the toolchain

Is your feature request related to a problem? Please describe.
Currently the use of valgrind is a manual step. There should be a more easy way to use this tool. At least a documentation should be provided.

Handling duplicates

Is your feature request related to a problem? Please describe.
When adding a new book which already exists in the library, there is no message to the user.

Describe the solution you'd like
It should be checked if the book is already in the library.

Additional context
It should be evaluated and documentadet which book features are considered when doing the check (e.g. pages can definitly be the same for several books).

add --finished and --started flag to list subcommand

Is your feature request related to a problem? Please describe.
Sometimes I am not interested in the whole library content but only in the books I am currently reading or already read. This should be an option to filter for.

Describe the solution you'd like
Adding a flag --finished and --reading to the list subcommand could solve this.

Describe alternatives you've considered
A workaround would be to add the books to different shelfs. Filtering for this is already working, but because of the missing possibility to edit an existing book, this is not acceptable.

Create architecture overview for developers

Is your feature request related to a problem? Please describe.
To get started working on this project it would be a relief for developers to have a "big picture" of the software architecture. Although the source code is not that large at the moment, it will become more important later on.

Describe the solution you'd like
It should be possible to draw some charts using Mermaid in the repository markdown files. It might be useful to add a DEVELOPER.md.

Improve book deletion

Is your feature request related to a problem? Please describe.
Currently books can only be deleted by the title. This should be much more flexible.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.