{"id":16752965,"url":"https://github.com/amtoine/nu_plugin_explore","last_synced_at":"2025-03-21T22:32:13.272Z","repository":{"id":188444040,"uuid":"678738623","full_name":"amtoine/nu_plugin_explore","owner":"amtoine","description":"A fast structured data explorer for Nushell.","archived":false,"fork":false,"pushed_at":"2024-04-13T17:09:51.000Z","size":1428,"stargazers_count":7,"open_issues_count":14,"forks_count":6,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-04-14T12:37:51.769Z","etag":null,"topics":["explorer","nushell","plugin","structured-data"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/amtoine.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,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-08-15T08:58:17.000Z","updated_at":"2024-04-15T15:09:56.744Z","dependencies_parsed_at":null,"dependency_job_id":"64f8e871-4d98-4085-8501-0b4ecc2bdcac","html_url":"https://github.com/amtoine/nu_plugin_explore","commit_stats":null,"previous_names":["amtoine/nu_plugin_explore"],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amtoine%2Fnu_plugin_explore","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amtoine%2Fnu_plugin_explore/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amtoine%2Fnu_plugin_explore/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amtoine%2Fnu_plugin_explore/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/amtoine","download_url":"https://codeload.github.com/amtoine/nu_plugin_explore/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244166694,"owners_count":20409178,"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":["explorer","nushell","plugin","structured-data"],"created_at":"2024-10-13T02:48:47.727Z","updated_at":"2025-03-21T22:32:12.801Z","avatar_url":"https://github.com/amtoine.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# nu_plugin_explore\nA fast *interactive explorer* tool for *structured data* inspired by [`nu-explore`]\n\n# table of content\n- [*introduction*](#introduction)\n    - [*the idea behind an explorer*](#the-idea-behind-an-explorer)\n    - [*why not `nu-explore`?*](#why-not-nu-explore)\n- [*installation*](#installation)\n    - [*using `nupm install` (recommended)*](#using-nupm-install-recommended)\n    - [*building from source*](#building-from-source)\n- [*usage*](#usage)\n    - [*demo*](#demo)\n- [*configuration*](#configuration)\n    - [*default configuration*](#default-configuration)\n    - [*an example*](#an-example)\n    - [*some convenience*](#-some-convenience)\n- [*see the documentation locally*](#see-the-documentation-locally)\n- [*troubleshooting*](#troubleshooting)\n- [*contributing*](#contributing)\n- [*TODO*](#todo)\n    - [*features*](#features)\n    - [*internal*](#internal)\n\n# introduction\n## the idea behind an *explorer*\ni think having an *interactive explorer* for *structured data* is a requirement for a shell like\n[Nushell]!  \nthe ability to\n- traverse the data with a few quick key bindings\n- peek the data at any level\n- edit the data on the fly (COMING SOON)\n- all while being configurable\n\nwill come very handy in a day-to-day basis for me at least :)\n\n## why not `nu-explore`?\n- it's a bit too complex for what it does to me\n- the bindings are not configurable\n- the code was really hard to wrap my head around\n- i wanted to have fun learning about [Nushell] plugins and TUI applications in Rust\n\nso here we are... LET'S GO :muscle:\n\n# installation\n\u003e **Important**\n\u003e if you are using bleeding-edge versions of Nushell, please make sure the\n\u003e Nushell dependencies are the same as your Nushell install by running\n\u003e ```nushell\n\u003e use scripts/deps.nu; deps --current\n\u003e ```\n\n## using `nupm install` (recommended)\n- download [nushell/nupm](https://github.com/nushell/nupm)\n- load the `nupm` module\n```nushell\nuse /path/to/nupm/\n```\n- run the install process\n```nushell\nnupm install --path .\n```\n## building from source\n- build the plugin\n```shell\nmake build\n```\n- register the plugin in [Nushell]\n```nushell\nmake register\n```\n- do not forget to restart [Nushell]\n\n\u003e **Note**  \n\u003e alternatively, you can use directly `make install`\n\n# usage\n- get some help\n```nushell\nhelp nu_plugin_explore\n```\n- run the command\n```nushell\nopen Cargo.toml | nu_plugin_explore\n```\n\n## demo\n![simple demo](examples/demo.gif)\n\n# configuration\n## default configuration\nyou can find it in [`default.nuon`](./examples/config/default.nuon).\n\nyou can copy-paste it in your `config.nu` and set `$env.config.plugins.explore` to it:\n```nushell\n$env.config.plugins.explore = {\n    # content of the default config\n}\n```\nalternately, you can copy-paste the default config file to `$nu.default-config-dir` and add the following line to your `config.nu`\n```nushell\n$env.config.plugins.explore = (open ($nu.default-config-dir | path join \"nu_plugin_explore.nu\"))\n```\n\n## an example\nif you do not like the Vim bindings by default you can replace the navigation part with\n```nushell\n$env.config.plugins.explore.keybindings.navigation = {\n    left: 'left',\n    down: 'down',\n    up: 'up',\n    right: 'right',\n}\n```\nand voila :yum:\n\n# see the documentation locally\n```nushell\ncargo doc --document-private-items --no-deps --open\n```\n\n# troubleshooting\nin case you get some weird error or behaviour, before filing any issue, the\neasiest is to make sure the plugin is compiled with the same revision as the\nNushell you are using!\n```nushell\nuse scripts/deps.nu; deps --current\n```\nand then you can come back to the [*installation*](#installation) section.\n\n\u003e **Note**\n\u003e of course, this will not work if the version of Nushell you are using is too\n\u003e old, because then the state of `nu_plugin_explore` will be too recent for\n\u003e everything to compile properly...\n\n# contributing\nin order to help, you can have a look at\n- the [todo](#todo) list down below, there might be unticked tasks to tackle\n- the issues and bugs in the [issue tracker](https://github.com/amtoine/nu_plugin_explore/issues)\n- the `FIXME` and `TODO` comments in the source base\n\n# TODO\n## features\n- [x] support non-character bindings\n- [ ] when going into a file or URL, open it\n- [x] give different colors to names and type\n- [x] show true tables as such\n- [x] get the config from `$env.config` =\u003e can parse configuration from CLI\n- [x] add check for the config to make sure it's valid\n- [x] support for editing cells in INSERT mode\n  - [x] string cells\n  - [x] other simple cells\n  - [x] all the cells\n- [x] detect if a string is of a particular type, path, URL, ...\n\n## internal\n- [x] add tests...\n  - [x] to `navigation.rs` to make sure the navigation in the data is ok\n  - [x] to `app.rs` to make sure the application state machine works\n  - [x] to `parsing.rs` to make sure the parsing of the config works\n  - [x] to `tui.rs` to make sure the rendering works as intended\n- [ ] get rid of the `.clone`s\n- [ ] handle errors properly (`.unwrap`s and `panic!`s)\n- [ ] restrict the visibility of objects when possible\n- [ ] write better error messages when some test fails\n\n[Nushell]: https://nushell.sh\n[nushell/nushell]: https://github.com/nushell/nushell\n[`nu-explore`]: https://crates.io/crates/nu-explore\n\n[`nu-plugin`]: https://crates.io/crates/nu-plugin\n[`nu-protocol`]: https://crates.io/crates/nu-protocol\n[crates.io]: https://crates.io\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famtoine%2Fnu_plugin_explore","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Famtoine%2Fnu_plugin_explore","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famtoine%2Fnu_plugin_explore/lists"}