# Conflook
A command line utiltiy for inspecting hard-to-read project config files such as json, yaml, and toml.
## Usage
```
Usage: conflook [OPTIONS] FILE [KEYPATH]
  Show summarised structure or value at keypath.
Options:
  -v, --version        Show the version and exit.
  -h, --help           Show this message and exit.
  -l, --limit INTEGER  Default 10. Truncate output if more than `limit` lines.
                       If 0, there is no limit.
```
Keypath is a dot separated list of keys or indicies. For example, `database.ports.2` would access the `database` table, then the `ports` array within that, then the 3rd item (at index 2) within that array. A consequence of this notation is that not all possible keys can be addressed.
If the value at the end of a valid keypath is a map-like object then it is shown as a list of keys followed by their type followed by a preview of their contents.
For example,
```
database, Table(4)
server         String(11) 192.168.1.1
ports          Array(3)   [8001, 8001, 8002]
connection_max Integer    5000
enabled        bool       True
```
A content preview attempts to be close to the real text content in the configuration file. For example, a YAML `!!binary` entry will not be decoded. Control sequences (eg newlines) in strings will be escaped.
Note that if no matching key is found in a keypath then conflook will show
- The shortest key for which the given key is a prefix, or
- The closest matching key as determined by difflib
For example,
```
conflook eg.toml data.prots
```
Gives
```
database.ports, Array(3)
[8001, 8001, 8002]
```
## Install
[Avaliable on PyPI](https://pypi.org/project/conflook/).
- Install with PIP.
  ```
  pip install conflook
  ```
  Run from command line
  ```
  conflook --help
  ```
- OR, Add as development dependancy to PDM project.
  ```
  pdm add --dev conflook
  ```
  Run from `pdm`
  ```
  pdm run conflook --help
  ```
## Develop
1. Download this repository `git clone ...`.
2. [Install PDM](https://pdm.fming.dev/#installation).
   Use PDM to install python dependancies with `pdm sync`.
   PDM will keep the versions of 3rd party libraries consistent with `pdm.lock`. The 3rd party libraries which this project depend on are listed in `pyproject.toml` along with other project settings used by the [PyPI](https://pypi.org) and exposing a command when installed.
3. [Enable pre-commit](https://pre-commit.com/#install).
   Will run automatic checks for each `git commit`, as described in `.pre-commit-config.yaml`. Might need to run `pdm run pre-commit install` to setup. [Pylint](https://pylint.org) will check for the things specified in `pylintrc.toml`. Sometimes these checks can be ignored with a `# pylint: disable=` comment if they are too pedantic.
PDM should install an editable package. Make sure to put `pdm run` before any commands to make sure the correct Python interpreter is being used and the projects dependancies are avaliable. For example, `pdm run conflook ...` will run this utility, `pdm run pre-commit run` will manually run pre-commit checks, and `pdm run python` will start an interactive python session.
The folder `eg/` contains example files.
## TODO
- search
- grep friendly
  - line numbers
  - don't truncate
- stats
- extract sub object or array to file (or is this out of scope?)
            
         
        Raw data
        
            {
    "_id": null,
    "home_page": "",
    "name": "conflook",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": "",
    "keywords": "cli,configuration,inspect,utility,development",
    "author": "puqeko",
    "author_email": "",
    "download_url": "https://files.pythonhosted.org/packages/50/c4/7d5e3a34e3402943a6face4290e99d4938c94146e1e8eb9efa2012792fe8/conflook-0.1.3.tar.gz",
    "platform": null,
    "description": "# Conflook\n\nA command line utiltiy for inspecting hard-to-read project config files such as json, yaml, and toml.\n\n## Usage\n\n```\nUsage: conflook [OPTIONS] FILE [KEYPATH]\n\n  Show summarised structure or value at keypath.\n\nOptions:\n  -v, --version        Show the version and exit.\n  -h, --help           Show this message and exit.\n  -l, --limit INTEGER  Default 10. Truncate output if more than `limit` lines.\n                       If 0, there is no limit.\n```\n\nKeypath is a dot separated list of keys or indicies. For example, `database.ports.2` would access the `database` table, then the `ports` array within that, then the 3rd item (at index 2) within that array. A consequence of this notation is that not all possible keys can be addressed.\n\nIf the value at the end of a valid keypath is a map-like object then it is shown as a list of keys followed by their type followed by a preview of their contents.\n\nFor example,\n\n```\ndatabase, Table(4)\nserver         String(11) 192.168.1.1\nports          Array(3)   [8001, 8001, 8002]\nconnection_max Integer    5000\nenabled        bool       True\n```\n\nA content preview attempts to be close to the real text content in the configuration file. For example, a YAML `!!binary` entry will not be decoded. Control sequences (eg newlines) in strings will be escaped.\n\nNote that if no matching key is found in a keypath then conflook will show\n\n- The shortest key for which the given key is a prefix, or\n- The closest matching key as determined by difflib\n\nFor example,\n\n```\nconflook eg.toml data.prots\n```\n\nGives\n\n```\ndatabase.ports, Array(3)\n[8001, 8001, 8002]\n```\n\n## Install\n\n[Avaliable on PyPI](https://pypi.org/project/conflook/).\n\n- Install with PIP.\n\n  ```\n  pip install conflook\n  ```\n\n  Run from command line\n\n  ```\n  conflook --help\n  ```\n\n- OR, Add as development dependancy to PDM project.\n\n  ```\n  pdm add --dev conflook\n  ```\n\n  Run from `pdm`\n\n  ```\n  pdm run conflook --help\n  ```\n\n## Develop\n\n1. Download this repository `git clone ...`.\n\n2. [Install PDM](https://pdm.fming.dev/#installation).\n   Use PDM to install python dependancies with `pdm sync`.\n\n   PDM will keep the versions of 3rd party libraries consistent with `pdm.lock`. The 3rd party libraries which this project depend on are listed in `pyproject.toml` along with other project settings used by the [PyPI](https://pypi.org) and exposing a command when installed.\n\n3. [Enable pre-commit](https://pre-commit.com/#install).\n   Will run automatic checks for each `git commit`, as described in `.pre-commit-config.yaml`. Might need to run `pdm run pre-commit install` to setup. [Pylint](https://pylint.org) will check for the things specified in `pylintrc.toml`. Sometimes these checks can be ignored with a `# pylint: disable=` comment if they are too pedantic.\n\nPDM should install an editable package. Make sure to put `pdm run` before any commands to make sure the correct Python interpreter is being used and the projects dependancies are avaliable. For example, `pdm run conflook ...` will run this utility, `pdm run pre-commit run` will manually run pre-commit checks, and `pdm run python` will start an interactive python session.\n\nThe folder `eg/` contains example files.\n\n## TODO\n\n- search\n- grep friendly\n  - line numbers\n  - don't truncate\n- stats\n- extract sub object or array to file (or is this out of scope?)\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Inspect ugly config files.",
    "version": "0.1.3",
    "project_urls": null,
    "split_keywords": [
        "cli",
        "configuration",
        "inspect",
        "utility",
        "development"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0678e3f1a1864e45452dc02766dfb05821fd02ff098a9b803dadfe505784fc94",
                "md5": "f9c018526a41cc383ca65f0a52141d64",
                "sha256": "4cc96ff6942a3f473e4f8857dd507d044a00257fb26510a8b77400c0dfb15578"
            },
            "downloads": -1,
            "filename": "conflook-0.1.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "f9c018526a41cc383ca65f0a52141d64",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 11865,
            "upload_time": "2023-12-15T10:47:49",
            "upload_time_iso_8601": "2023-12-15T10:47:49.057797Z",
            "url": "https://files.pythonhosted.org/packages/06/78/e3f1a1864e45452dc02766dfb05821fd02ff098a9b803dadfe505784fc94/conflook-0.1.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "50c47d5e3a34e3402943a6face4290e99d4938c94146e1e8eb9efa2012792fe8",
                "md5": "4dce9be517e481538d76d6fc15bd20c4",
                "sha256": "2f59ba7425e5c8f2f8c61583362c397f8b4fd897727ae330c4dfcdf087cc7033"
            },
            "downloads": -1,
            "filename": "conflook-0.1.3.tar.gz",
            "has_sig": false,
            "md5_digest": "4dce9be517e481538d76d6fc15bd20c4",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 10235,
            "upload_time": "2023-12-15T10:47:52",
            "upload_time_iso_8601": "2023-12-15T10:47:52.139873Z",
            "url": "https://files.pythonhosted.org/packages/50/c4/7d5e3a34e3402943a6face4290e99d4938c94146e1e8eb9efa2012792fe8/conflook-0.1.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-12-15 10:47:52",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "conflook"
}