{"id":24482919,"url":"https://github.com/tylerbloom/add-drop-goto","last_synced_at":"2026-04-20T09:34:00.071Z","repository":{"id":130353463,"uuid":"105600504","full_name":"TylerBloom/Add-Drop-Goto","owner":"TylerBloom","description":"Works as a wrapper to the traditional \"cd\" command to allow for dynamic shortcuts of directory names.","archived":false,"fork":false,"pushed_at":"2025-08-21T12:38:01.000Z","size":64,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-11T03:18:04.000Z","etag":null,"topics":["bash","shell","workflow"],"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/TylerBloom.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,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-10-03T00:50:20.000Z","updated_at":"2025-08-21T12:38:04.000Z","dependencies_parsed_at":"2025-08-07T21:18:12.137Z","dependency_job_id":"8c5eaa27-47a7-4839-9030-16f14478298c","html_url":"https://github.com/TylerBloom/Add-Drop-Goto","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/TylerBloom/Add-Drop-Goto","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TylerBloom%2FAdd-Drop-Goto","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TylerBloom%2FAdd-Drop-Goto/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TylerBloom%2FAdd-Drop-Goto/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TylerBloom%2FAdd-Drop-Goto/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TylerBloom","download_url":"https://codeload.github.com/TylerBloom/Add-Drop-Goto/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TylerBloom%2FAdd-Drop-Goto/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32041534,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T00:18:06.643Z","status":"online","status_checked_at":"2026-04-20T02:00:06.527Z","response_time":94,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["bash","shell","workflow"],"created_at":"2025-01-21T12:15:55.370Z","updated_at":"2026-04-20T09:34:00.051Z","avatar_url":"https://github.com/TylerBloom.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Goal\nAdd-Drop-Goto, or `adg` for short, seeks provide way to store shortcuts for the names of directories that works across active terminals. Moreover, it wraps the `cd` command so that you can largely replace its usage with `adg`, even when moving between directories that do not have shortcuts.\n\n## About\nQuickly moving between projects or around a directory tree can be challenging. Often, the easiest solutions to this are terse directory names, limiting subdirectory trees, and/or relying on your shell's command autocompletion. Providing shortcuts allows for quickly moving between directories.\n\nThere are two types of shortcuts that `adg` provides.\n\nFirst of these are refered to as \"locales\". These are shortcuts that expand to an absolute path. Project directories are prime canadites for this type of shortcut.\n\nThe second type of shortcut is refered to a \"site\". These are shortcuts that expand to a relative path. These shortcuts are meant to express directories that are common between locales.\n\n## Example\nConsider the following directory tree.\n```\nHOME\n|\n└───projectOne\n|  └───build\n|  │   └───subfolder1\n|  └───docs\n|\n└───projectTwo\n    └───build\n```\nWith `adg` the above directories could be shortcut to `one: HOME/projectOne` and `two: HOME/projectTwo`. Since both projects have a `build` directory, a site could be added such as `bld: build`. This allows the directory `HOME/projectOne/build` to be expressed as `one/bld`. Similarly, `HOME/projectOne/docs` can be written as `one/docs`.\n\n## Configuring\nTo start, run the `install.sh` bash script. This will create the required directories and copy the `adg` executable where it needs to go.\n\nNext, you will need a shell script that wraps the `adg` executable. Since communicating with the parent terminal isn't possible, a shell script is needed. Currently, both bash and fish shell are supported. Copy the shell script somewhere in your `$PATH` (such as `~/bin`) and alias the script to be sourced. For Bash users, this will look like `alias adg=\". adg.sh\"`. This is required in order to move directories.\n\nAfter that, you are all set up!\n\n## How to Use\nBy default, `adg` will expand your arguments into a path unless your specify any of it's three arguments.\n```\n$ pwd\n\u003e\u003e HOME\n$ adg one/bld\n$ pwd\n\u003e\u003e HOME/projectOne/build\n```\n\nTo add a shortcut, use `add`. In order to specify a new locale, you must give the path (relative or absolute) to a directory and a name for this shortcut. For locales, the order doesn't matter. Starting from the home directory in the example, we can do this by:\n```\n$ adg add one HOME/projectOne\n$ adg add two projectTwo\n```\nTo add a site, you must give the name of the shortcut followed by the path. Again, starting from the home directory in the example, we can the `build` shortcut by:\n```\n$ adg add bld build\n```\n\nTo remove a shortcut, use `--drop` followed by the name of the shortcut:\n```\n$ adg drop one\n$ adg drop bld\n```\n\nTo see your stored use `--list`:\n```\n$ adg list\n\u003e\u003e Locales:\n\u003e\u003e\t one : HOME/projectOne\n\u003e\u003e\t two : HOME/projectTwo\n\u003e\u003e\n\u003e\u003e Sites:\n\u003e\u003e\t bld : build\n```\n\n## Notes and Planned Changes\nIdeally, the shell script wrapper would be removed. The main issue there is that it is impossible (or at least very hard) to communicate with your parent shell session in Rust. Until such time, shell scripts for other shells, such as zsh, will be added.\n\nIn prior iterators of this project, tab-completion was supported as standard tab-completion breaks down when you use a shortcut. This is planned to make a return, but will need reworked in Rust and for each supported shell type.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftylerbloom%2Fadd-drop-goto","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftylerbloom%2Fadd-drop-goto","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftylerbloom%2Fadd-drop-goto/lists"}