{"id":25345743,"url":"https://github.com/jibstack64/know-it-all","last_synced_at":"2025-10-29T15:31:17.790Z","repository":{"id":63853828,"uuid":"571208814","full_name":"jibstack64/know-it-all","owner":"jibstack64","description":"A command-line utility for indexing, modifying and managing a database of many items.","archived":false,"fork":false,"pushed_at":"2023-02-20T22:31:01.000Z","size":264,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2023-03-06T02:42:52.295Z","etag":null,"topics":["command-line-tool","cpp","database","encryption","json","kial","utility"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jibstack64.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-11-27T14:14:58.000Z","updated_at":"2023-02-24T21:50:35.000Z","dependencies_parsed_at":"2023-02-14T11:31:37.073Z","dependency_job_id":null,"html_url":"https://github.com/jibstack64/know-it-all","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jibstack64%2Fknow-it-all","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jibstack64%2Fknow-it-all/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jibstack64%2Fknow-it-all/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jibstack64%2Fknow-it-all/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jibstack64","download_url":"https://codeload.github.com/jibstack64/know-it-all/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238845338,"owners_count":19540326,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["command-line-tool","cpp","database","encryption","json","kial","utility"],"created_at":"2025-02-14T12:50:45.159Z","updated_at":"2025-10-29T15:31:17.367Z","avatar_url":"https://github.com/jibstack64.png","language":"C++","readme":"# know-it-all\n\n![GitHub](https://img.shields.io/github/license/jibstack64/know-it-all)\n![GitHub release (latest by date)](https://img.shields.io/github/v/release/jibstack64/know-it-all)\n![GitHub all releases](https://img.shields.io/github/downloads/jibstack64/know-it-all/total)\n\n### Also known as `KIAL`.\n\n*A command-line utility for indexing, modifying and managing a database of many items.*\n\u003e ![KIAL gif :)](https://user-images.githubusercontent.com/107510599/217619928-0c84dd11-7104-4b93-8958-cf576ed167b7.gif) \n\n## Parameters\n\n### Illustration\n\n`[]` means non-blocking. `{}` means the parameter blocks all parameters after it, as presented below.\n\n![image](https://user-images.githubusercontent.com/107510599/217616054-fa123dc6-4314-4300-ba72-67064663b4b7.png)\n\n\u003e #### **NOTE**\n\u003e For instance, the `+/add` parameter overwrites the `o/outfile` parameter's value as it is after it. This goes for `d/decrypt` too - if you decrypt a file, the decrypted filepath (`./decrypted.json`) will overwrite the provided `o/outfile`.\n\u003e\n\u003e The order in which you provide these arguments is obsolete; they are parsed in the order above regardless.\n\n### Modification and appendage\n- `-o/outfile \u003cpath\u003e` - Specifies the target database JSON file. If none is provided, a `./database.json` will be assumed.\n- `-+/add \u003cname/identifier\u003e` - Adds an item to the database by its name/identifier.\n- `-!/erase` - Removes the `@/item` from the database.\n- `-k/key \u003ckey\u003e` - Specifies the keys to be modified on the `@/item`.\n- `-v/value \u003cnew-value\u003e` - The values to be assigned to the `k/key`.\n- `-t/type \u003ctype-name\u003e` - Specifies the types of the contents that `v/value`s hold. Can be `string`, `int` or `integer`, `float` or `decimal`, `bool` or `boolean` or `null`.\n- `-@/item \u003cname/identifier\u003e` - Specifies the item to be used with the `!/erase`, `k/key` and `r/readable` parameters. If `[ALL]` is provided, then **all** items in the database will be selected.\n- `-p/pop` - Pops `key`, removing it from the `@/item`.\n  \n### Catalog and iteration\n- `-s/search \u003cterm\u003e` - Iterates through all items in the database; if an item's name/identifier or inner value(s) contain `term`, its name/identifier and the value(s) in which `term` was found in are written to the console in a similar style to `r/readable`.\n- `-C/count` - Returns the number of elements in the database.\n  \n### Encryption and decryption\n\u003e #### **NOTE**\n\u003e The encryption algorithm is a very basic two-dimensional bitshift algorithm. It works, but make sure that your password is long, or your data may be at risk from bruteforce attacks. **Your phrase cannot be a series of characters!** Otherwise your passcode is encrypted (and decrypted) as being the single character that is repeated, reducing the entire point of the encrypt/decrypt functions!\n\u003e\n\u003e If you have a repeating sequence in your phrase, for example, `testtest`, `test` will work for decrypting as well as `testtest` due to the way the algorithm works. For this reason, I suggest avoiding repeating words in your phrase.\n- `-e/encrypt \u003cphrase\u003e` - Encrypts the `o/outfile` provided to `./encrypted.json`.\n- `-d/decrypt \u003cphrase\u003e` - Decrypts the `o/outfile` provided to `./decrypted.json`. If no `o/outfile` is provided, an `./encrypted.json` will be used (if found).\n\n### Other\n- `-?/help [parameter]` - Provides a help-sheet for all parameters, (almost) identical to that of this README. If `parameter` is passed, only help for that single parameter will be written to the console.\n- `-r/readable` - If an `@/item` is specified, the contents of that specific item will be beautified and fed to the console; if not, all items will be displayed in a neat, readable style.\n- `-V/verbose` - If passed, warning errors will be shown. Use this if you are unsure to the issue at hand.\n- `-c/colourless` - Disables colours. This is useful for older terminals, particularly on Windows.\n- `-F/force` - Forces the program to run despite fatal errors. Use with caution.\n  \n### Builds\nReleases currently ship with **Windows 7+** and **Linux** builds. You may build it yourself, add preprocessor fields for OS-compatibility, and create a PR, if you so wish.\n\n#### Examples:\n\u003cimg src=\"https://cdn.discordapp.com/attachments/870419973607129139/1046431951705362513/image.png\" alt=\"Example 1\" width=\"240\"/\u003e\n\u003cimg src=\"https://cdn.discordapp.com/attachments/870419973607129139/1046437175547412530/image.png\" alt=\"Example 2\" width=250\u003e\n\n### Features to-come\n- [x] Encryption and decryption.\n- [x] Clean up codebase 1/2.\n- [x] Clean up codebase 2/2.\n- [x] Multi-key, value and type appending (e.g. `-k mykey1,mykey2 -t int,string -v 5,hi`).\n- [ ] ~~Catalog search (search the web for suitable matches to an item based on its data).~~ Scrapped - not needed.\n- [ ] Write/read from URL/cloud-file (e.g. `-o https://.../db.json`)\n- [ ] Write/read from SSH (scp).\n- [x] Compile Windows executables.\n\n### Libraries used\n[pretty.hpp](https://github.com/jibstack64/pretty) for colours, [argh.h](https://github.com/adishavit/argh) for argument parsing and [json.hpp](https://github.com/nlohmann/json) for JSON modification.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjibstack64%2Fknow-it-all","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjibstack64%2Fknow-it-all","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjibstack64%2Fknow-it-all/lists"}