{"id":17941799,"url":"https://github.com/tomsimonart/dotcmd","last_synced_at":"2026-05-01T22:31:42.749Z","repository":{"id":258565638,"uuid":"874180338","full_name":"tomsimonart/dotcmd","owner":"tomsimonart","description":"Minimalistic bash dotfile manager","archived":false,"fork":false,"pushed_at":"2024-10-17T12:07:52.000Z","size":6,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-03T13:19:58.094Z","etag":null,"topics":["bash","bash-script","dotfiles","dotfiles-linux","dotfiles-manager","git"],"latest_commit_sha":null,"homepage":"","language":"Shell","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/tomsimonart.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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}},"created_at":"2024-10-17T11:43:36.000Z","updated_at":"2024-10-17T12:07:19.000Z","dependencies_parsed_at":null,"dependency_job_id":"639aee73-5a00-4205-b92e-663b0e0a427d","html_url":"https://github.com/tomsimonart/dotcmd","commit_stats":null,"previous_names":["tomsimonart/dotcmd"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/tomsimonart/dotcmd","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomsimonart%2Fdotcmd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomsimonart%2Fdotcmd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomsimonart%2Fdotcmd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomsimonart%2Fdotcmd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tomsimonart","download_url":"https://codeload.github.com/tomsimonart/dotcmd/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomsimonart%2Fdotcmd/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32515837,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"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","bash-script","dotfiles","dotfiles-linux","dotfiles-manager","git"],"created_at":"2024-10-29T02:04:14.289Z","updated_at":"2026-05-01T22:31:42.741Z","avatar_url":"https://github.com/tomsimonart.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Dotcmd\n\nDotcmd is a simple minimalistic command line tool to manage dotfiles.\n\nDotcmd will track dotfiles in the `df/` directory (referenced as \"the storage directory\"), and in the host system those dotfiles will be available as symlinks to `df/`. For example:\n\n`$HOME/.config/alacritty/alacritty.toml -\u003e $HOME/dotcmd/df/.config/alacritty/alacritty.toml`\n\nA couple things to know:\n\n1. Original directory structure is kept within the storage directory.\n2. Dotcmd is only compatible with normal files within your home directory, anything else will result in an error.\n3. Relative paths are supported as long as the real path is in the home directory.\n4. Recursive backups are created automatically before any destructive actions (like removing a file). This means `$HOME/.bashrc.bak.~1~` will be created if `$HOME/.bashrc` and `$HOME/.bashrc.bak` exist. Dotcmd uses the numbered backup feature of the `mv` and `cp` commands internally.\n\n## Topics\n\n### Installation\n\nrun `./install.sh` then open a new shell, check if the `dotcmd` is available.  If not, make sure `$HOME/.local/bin` is in your `$PATH`.\n\n### Guide: Tracking a dotfile on git\n\nThis will put the file in your storage directory and symlink to it from the original path of the file.\n\n```shell\n# Make sure to initialize your repository the first time !\ndotcmd git init  # Initialize a git repository inside the storage directory.\n\ndotcmd add ~/.bashrc  # Add the file to your dotfile storage\n\n# Track the file\ndotcmd git status  # Check that the tracking worked\ndotcmd git add .bashrc  # With the git command we are relative to our storage directory\ndotcmd git commit -m \"Add .bashrc\"\n# Here you might want to add a remote to backup your dotfiles\ndotcmd git remote add ...  # Add your remote\ndotcmd git push  # Push the changes on the remote\n```\n\n### Guide: Untracking a dotfile\n\nThis will remove the file from the storage and put it back on the host system where it was originally. (It will also clean empty directories in the storage).\n\nGood to know: You can not restore a dotfile that's not tracked correctly (installed). This means that if you want to use a dotfile that's in your storage but nowhere in the system, you should use install first.\n\n```shell\ndotcmd restore ~/.bashrc\n\n# You will need to manually approve this deletion with git\ndotcmd git rm .bashrc  # With the git command we are relative to our storage directory\ndotcmd git commit -m \"Untrack .bashrc\"\ndotcmd git push  # Push the changes on the remote\n```\n\n### Guide: Install a dotfile\n\nWhen you are on a new system and you want to install the dotfiles you tracked, you can use this process.\n\n```shell\ndotcmd install ~/.bashrc  # Reference the path where the file should be installed\n```\n\nThere is also an option to install all dotfiles (can be useful for a distro re-install).\n```shell\ndotcmd install all\n```\n\n\n## Contributing\n\n1. Install and use shellcheck.\n2. Keep it as simple as possible.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomsimonart%2Fdotcmd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftomsimonart%2Fdotcmd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomsimonart%2Fdotcmd/lists"}