{"id":19015491,"url":"https://github.com/quackduck/warpdrive","last_synced_at":"2025-04-23T01:50:43.793Z","repository":{"id":104431926,"uuid":"280218915","full_name":"quackduck/WarpDrive","owner":"quackduck","description":"Warp across directories","archived":false,"fork":false,"pushed_at":"2022-03-15T01:03:38.000Z","size":189,"stargazers_count":22,"open_issues_count":2,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-17T18:23:16.889Z","etag":null,"topics":["autojump","cd","java","warpdrive","z"],"latest_commit_sha":null,"homepage":"","language":"Java","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/quackduck.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}},"created_at":"2020-07-16T17:41:42.000Z","updated_at":"2024-07-24T01:51:43.000Z","dependencies_parsed_at":"2023-05-05T07:23:20.351Z","dependency_job_id":null,"html_url":"https://github.com/quackduck/WarpDrive","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quackduck%2FWarpDrive","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quackduck%2FWarpDrive/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quackduck%2FWarpDrive/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quackduck%2FWarpDrive/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/quackduck","download_url":"https://codeload.github.com/quackduck/WarpDrive/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250354294,"owners_count":21416751,"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":["autojump","cd","java","warpdrive","z"],"created_at":"2024-11-08T19:37:36.895Z","updated_at":"2025-04-23T01:50:43.777Z","avatar_url":"https://github.com/quackduck.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WarpDrive - Warp across directories\n\u003c!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --\u003e\n[![All Contributors](https://img.shields.io/badge/all_contributors-2-orange.svg?style=flat-square)](#contributors-)\n\u003c!-- ALL-CONTRIBUTORS-BADGE:END --\u003e\n\nWarpDrive is a replacement for `cd` (However it does use `cd` to work). It tracks your visited directories and uses a \"frecency\" algorithm (combining frequency and recency) to determine which directory to warp to.\n\n![Example Usage](example.png)\n\n## Usage\n\nYou can use WarpDrive like this:\n```sh\nwd someDir\n```\nIf you had visited `someDir` before (and thus `someDir` is in the datafile), it'll take you there. Otherwise, it'll just pass on the aguments to `cd` (which means that both relative and absolute paths work).\n\nYou could also do the same thing with just parts of the full path:\n ```sh\n wd s\n ```\n or \n ```sh\n wd Dir\n ```\n ### Options \n Currently, WarpDrive has eight options:\n \n **Option --ls or -s**\n \n Runs `ls` after warping to a directory.\n ```sh\n  wd --help\n ```\n \n **Option --help or -h**\n\nPrints a small help message:\n\n```sh\n wd --help\n```\nOutput:\n```\nWarpDrive - Warp across directories\nUsage: wd [\u003coption\u003e] [\u003cpattern\u003e ...]\nOptions:\n   --ls, -s                   Run ls after warping to a directory\n   --add, -a \u003cpath\u003e ...       Add paths to be tracked. Paths are automatically added when visited\n   --remove, -r \u003cpath\u003e ...    Remove paths so they are no longer tracked\n   --list, -l                 List tracked paths and their points, sorted by most\n   --update                   Update WarpDrive to the latest commit\n   --help, -h                 Print this help message\n   --version, -v              Print the version of WarpDrive you have   --check, -c                Checks if a newer version is available\nExamples:\n   wd\n   wd dir-in-pwd\n   wd dir-that-was-visited-before\n   wd grand-parent-dir parent-dir child-dir\n   wd parent-dir grand-parent-dir child-dir\n   wd a-part-of-the-name-of-some-dir\n   wd /absolute/path/to/somewhere\n   wd -s run-ls-after-warping\n   wd --add dir-to-add\n   wd --remove dir-to-remove\nNote:\n   To go to the home directory don't specify any arguments, i.e. use just `wd` (like cd)\n   When specifying multiple patterns, order doesn't matter except for the last pattern given\n      i.e. WarpDrive will always take you to a directory whose name matches the last pattern\n   If \u003cpattern\u003e is specified after an option, \u003cpattern\u003e will be ignored unless the option is -s\n   No options can be combined (you can't use any two options at the same time)\n   Any output seen is on stderr\n\nRefer to https://github.com/quackduck/WarpDrive for more information\n```\n \n **Option --update**\n \nUpdates WarpDrive to the latest commit. It is recommended to update with `wd --update` to ensure you have the latest WarpDrive.\n\n```sh\nwd --update\n```\n \n **Option -a or --add**\n\nAdds paths. Paths are automatically added when you visit them.\n\n```sh\nwd --add /Users /usr/local/bin\n```\n\n **Option -r or --remove**\n\nRemoves paths. This does not \"decrement\" frequency. It completely deletes a path, so it is no longer tracked (Unless, of course, you visit it again).\n\n```sh\nwd --remove /Users /usr/local/bin\n```\n**Option -l or --list**\n\nShows tracked directories and their points, sorted by most.\n```sh\nwd --list\n```\nSample output:\n```\nPoints   Directory\n150.0    /Users/ishan/Desktop/GitHub/WarpDrive\n36.0     /Users/ishan/Desktop/tests/foo\n6.0      /Users/ishan/.config/fish\n5.0      /Users/ishan/.config\n3.0      /Users/ishan/.config/fish/functions\n1.0      /usr/libexec\n1.0      /Library/Java/JavaVirtualMachines/openjdk-14.0.2.jdk/Contents/Home\n1.0      /Library/Java/JavaVirtualMachines/openjdk-14.0.2.jdk/Contents/Home/bin\n1.0      /\n1.0      /Users/ishan/Downloads\n1.0      /Users/ishan\n1.0      /Users/ishan/.config/fish/conf.d\n0.5      /Users/ishan/Desktop\n0.5      /Users/ishan/Desktop/tests\n```\n **Option -c or --check**\n Checks for newer WarpDrive versions\n```sh\nwd --check\n```\nExample output:\n```\nNewer version: WarpDrive 1.0.1 is available\nYou currently have: WarpDrive 1.0.0\nRun `wd --update` to update to the latest version\n```\n \n **Option -v or --version**\nPrints the version of WarpDrive you have\n```sh\nwd --version\n```\n\nExample output:\n```\nWarpDrive 1.0.0\n```\n _Even though most of these \"options\" would be better implemented as standalone actions, they are implemented as regular options because they have the advantage of not being like filenames_\n \n ### Different Arguments\n \n WarpDrive recognizes seperate arguments as matching different directories in a path. They do not need to be in order.\n \n Both\n ```sh\n wd grandParentDir parentDir childDir\n ```\n or \n ```sh\n wd parent grand child\n ```\n will have the same result. \n \n **Note! WarpDrive will *always* take you to a directory matching the last pattern. For more info on what this means, check the second Caveat.**\n \n ## Installing or Uninstalling\n \n `fish` is currently supported.\n \n You need to have `java` installed for WarpDrive to work. Use `brew cask install java` if you have Homebrew installed\n \n ### Fish Install or Uninstall\n \nWarpDrive can be installed by running this command:\n\n```fish\ncurl -sS https://raw.githubusercontent.com/quackduck/WarpDrive/master/fish/install.fish | fish\n```\n\nand uninstalled by running this command:\n\n```fish\ncurl -sS https://raw.githubusercontent.com/quackduck/WarpDrive/master/fish/uninstall.fish | fish\n```\n\n## Compatibility\n\nThe datafile format is the same as rupa/z, jethrokuan/z, zsh-z and z.lua\n\n## Known Issues\n\nWarpDrive is a bit slow, compared to native shell scripts, taking ~150ms on average (tested using [Hyperfine](https://github.com/sharkdp/hyperfine)) for most commands (This could be different for you. Do inform me about WarpDrive's performance or leave a review at \u003cigoel.mail@gmail.com\u003e)\nThis is because the JVM takes a lot of time to start up. The application itself takes 30ms.\n \n ## Caveats\n \n  _WarpDrive stores data at_ `~/.WarpDrive/WarpDriveData.txt`.\n \n _WarpDrive will always take you to a directory that matches the last pattern given._ In other words, if the datafile contains two directories: `/foo/bar` and `/bar/foo` and you use the command `wd f` it will take you to `/bar/foo`.\n \n _WarpDrive is not case sensitive. `wd Bar` is the same as `wd bar`._\n\n_Just `wd` takes you to the home directory._\n\n_No options except `-s` can be grouped together. `wd -hl --add /` won't work but `wd -s /` will_\n\n_If any options except -s are specified, you stay in the same directory even if you specified a directory. `wd -l someDir` won't work_\n \n ### Suggestions are welcome, file those or issues [here](https://github.com/quackduck/WarpDrive/issues).\n\n## Contributors ✨\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://lol I don't have one\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/57476629?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eRiceBoi\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/quackduck/WarpDrive/commits?author=veryniceperson\" title=\"Tests\"\u003e⚠️\u003c/a\u003e \u003ca href=\"#ideas-veryniceperson\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"https://github.com/quackduck/WarpDrive/issues?q=author%3Averyniceperson\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://aaryanporwal.me\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/54525904?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAaryan Porwal\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/quackduck/WarpDrive/commits?author=aaryanporwal\" title=\"Tests\"\u003e⚠️\u003c/a\u003e \u003ca href=\"#ideas-aaryanporwal\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"https://github.com/quackduck/WarpDrive/issues?q=author%3Aaaryanporwal\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-enable --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquackduck%2Fwarpdrive","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fquackduck%2Fwarpdrive","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquackduck%2Fwarpdrive/lists"}