{"id":23127427,"url":"https://github.com/flashashen/dsh2","last_synced_at":"2025-04-04T05:41:55.749Z","repository":{"id":57424335,"uuid":"110305741","full_name":"flashashen/dsh2","owner":"flashashen","description":"shell to organize organize life on the command line","archived":false,"fork":false,"pushed_at":"2022-05-27T16:08:18.000Z","size":118,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-18T07:22:10.774Z","etag":null,"topics":["developer-tools","python","shell","tool"],"latest_commit_sha":null,"homepage":"","language":"Python","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/flashashen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-11-11T00:34:44.000Z","updated_at":"2022-01-07T00:34:32.000Z","dependencies_parsed_at":"2022-09-14T08:40:33.129Z","dependency_job_id":null,"html_url":"https://github.com/flashashen/dsh2","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flashashen%2Fdsh2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flashashen%2Fdsh2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flashashen%2Fdsh2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flashashen%2Fdsh2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flashashen","download_url":"https://codeload.github.com/flashashen/dsh2/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247128743,"owners_count":20888234,"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":["developer-tools","python","shell","tool"],"created_at":"2024-12-17T09:09:53.568Z","updated_at":"2025-04-04T05:41:55.729Z","avatar_url":"https://github.com/flashashen.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DSH  - the absent minded developer's shell\n\n![Python versions](https://img.shields.io/pypi/pyversions/dsh.svg)\n![MIT License](https://img.shields.io/github/license/flashashen/dsh2.svg)\n\n-------------------------------\n\nOrganize the stuff you do via command line\n\n**You might use this if you:**\n- Forget how you did that stuff in that project from a while back\n- Forget where stuff is\n- Want a single, tab-completed view of the stuff you do\n- Want to store credentials and stuff outside of project config\n- Need to do sutff in separate contexts/environments such as development vs production\n- Want a consistent 'api' for doing stuff\n\n## What it does\n- At the most basic level, it executes commands expressed in yaml\n- Creates a tree of 'contexts' which consist of vars, commands, and subcontexts \n- Locates and merges contexts defined in .dsh.*.yml files\n- Provides nested contexts/subshells for projects/environments under a root shell\n- Changes current working directory to that of active shell\n- Provides variable substitution\n- Provides inherited variables with override\n\n\n## Sample .dsh.yml:\n\n``` yaml\ndsh: personal.python.proj\n\nvars:\n  app_name: projectX      \n\ntest:\n  - pytest\n\ninstall:\n  - pip list installed | grep {{app_name}} \u0026\u0026 pip uninstall -y {{app_name}}\n  - pip install -e .\n\nrelease:\n  - tox -r\n  - rm -rf build \u0026\u0026 rm -rf dist\n  - python setup.py sdist bdist_wheel\n  - twine upload -r pypi -u {{PYPI_USER}} -p {PYPI_PASS} dist/{{app_name}}*\n\n```\n\n## Demo\nWith dsh.yml files similar to the above, a dsh session might look like this:\n![usage demo image](https://raw.githubusercontent.com/flashashen/dsh2/master/dsh_quick_demo.svg?raw=true)\n\n## Installation\n\n```\npip install dsh\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflashashen%2Fdsh2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflashashen%2Fdsh2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflashashen%2Fdsh2/lists"}