{"id":15661556,"url":"https://github.com/kennethanceyer/gowap","last_synced_at":"2025-10-26T19:08:28.521Z","repository":{"id":66098258,"uuid":"112252349","full_name":"KennethanCeyer/gowap","owner":"KennethanCeyer","description":":lock: ssh key manager written in go","archived":false,"fork":false,"pushed_at":"2019-05-06T01:09:58.000Z","size":41,"stargazers_count":4,"open_issues_count":5,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-31T00:24:51.456Z","etag":null,"topics":["cli","golang","ssh","ssh-key","ssh-manager"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KennethanCeyer.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}},"created_at":"2017-11-27T21:47:00.000Z","updated_at":"2023-10-24T07:59:23.000Z","dependencies_parsed_at":null,"dependency_job_id":"cd564c57-127f-4208-9470-3c35cd34f1c2","html_url":"https://github.com/KennethanCeyer/gowap","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KennethanCeyer%2Fgowap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KennethanCeyer%2Fgowap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KennethanCeyer%2Fgowap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KennethanCeyer%2Fgowap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KennethanCeyer","download_url":"https://codeload.github.com/KennethanCeyer/gowap/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252590523,"owners_count":21772935,"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":["cli","golang","ssh","ssh-key","ssh-manager"],"created_at":"2024-10-03T13:28:05.253Z","updated_at":"2025-10-26T19:08:23.489Z","avatar_url":"https://github.com/KennethanCeyer.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003cimg width=\"150\" src=\"https://www.pigno.se/static/assets/images/gowap-logo.svg\" /\u003e\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/KennethanCeyer/gowap\"\u003e\u003cimg src=\"https://img.shields.io/github/release/KennethanCeyer/gowap.svg\" alt=\"Github Release\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://travis-ci.org/KennethanCeyer/gowap\"\u003e\u003cimg src=\"https://travis-ci.org/KennethanCeyer/gowap.svg?branch=master\" alt=\"Build Status\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://codeclimate.com/github/KennethanCeyer/gowap/test_coverage\"\u003e\u003cimg src=\"https://api.codeclimate.com/v1/badges/f8cb6d015910de13f018/test_coverage\" alt=\"Test Coverage\"\u003e\u003c/a\u003e\n    \u003ca href='https://coveralls.io/github/KennethanCeyer/gowap?branch=feature%2Fadd-ci-environment'\u003e\u003cimg src='https://coveralls.io/repos/github/KennethanCeyer/gowap/badge.svg?branch=feature%2Fadd-ci-environment' alt='Coverage Status' /\u003e\u003c/a\u003e\n    \u003ca href=\"https://codecov.io/gh/KennethanCeyer/gowap\"\u003e\u003cimg src=\"https://codecov.io/gh/KennethanCeyer/gowap/branch/master/graph/badge.svg\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://goreportcard.com/report/github.com/KennethanCeyer/gowap\"\u003e\u003cimg src=\"https://goreportcard.com/badge/github.com/KennethanCeyer/gowap\" alt=\"Go Report Card\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://codebeat.co/projects/github-com-kennethanceyer-gowap-master\"\u003e\u003cimg src=\"https://codebeat.co/badges/8225c214-4c2b-49da-98d0-276cbccea9e8\" alt=\"codebeat badge\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.codefactor.io/repository/github/kennethanceyer/gowap\"\u003e\u003cimg src=\"https://www.codefactor.io/repository/github/kennethanceyer/gowap/badge\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://codeclimate.com/github/KennethanCeyer/gowap/maintainability\"\u003e\u003cimg src=\"https://api.codeclimate.com/v1/badges/f8cb6d015910de13f018/maintainability\" alt=\"Maintainability\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## :warning: Notice\n\nThis project is working in progress project\n\nIf you follow the below installation guide, you may not get the intended result\n\nBut you can express your interest by clicking star on this project.\n\nThe more star in this repository, the more nervous the maintainer will be and will focus more on this project than any other project.\n\n## :clap:for those who are suffering from managing multiple ssh keys\n\n#### the goal of this project is quite simple\n\n- ssh-key changes must be simple and quick\n- you can set an alias name for each of the ssh keys\n- it could be nice, if this cli can support to register your ssh-key to github by using api\n\n## :triangular_ruler: Blueprint\n\n#### rules\n\n- it must follows [cleancode rule](https://gist.github.com/wojteklu/73c6914cc446146b8b533c0988cf8d29)\n- proceed with TDD-based development\n- minimize dependence\n- support all popular os\n\n#### usage\n\n1. generate ssh key for test\n\n```bash\n$ ssh-keygen\n```\n\n2. add `~/.ssh/id_rsa` `~/.ssh/id_rsa` as `home`\n\n```bash\n$ gowap add home\nenter file in which to add the private key (~/.ssh/id_rsa):\nenter file in which to add the public key (~/.ssh/id_rsa.pub):\n...\nyour ssh key is added as `home`\n```\n\n3. hiding current ssh key for generate new ssh key\n\n```bash\n$ gowap archive\nssh key is archived *home -\u003e archive\n```\n\n4. generate new ssh key\n\n```bash\n$ ssh-keygen\n```\n\n5. add `~/.ssh/id_rsa` `~/.ssh/id_rsa` as `company`\n\n```bash\n$ gowap add company\nenter file in which to add the private key (~/.ssh/id_rsa):\nenter file in which to add the public key (~/.ssh/id_rsa.pub):\n...\nyour ssh key is added as 'company'\n```\n\n6. list all keys\n\n```bash\n$ gowap list\n* company\nhome\n```\n\n7. situation: you clone your company's private repository with company ssh-key\n\n```bash\n$ git clone git@github.com:nickname/some-awesome-project.git\n```\n\n8. you can edit and push because company ssh key has a permission for that\n\n```bash\n$ touch some-changes\n$ git add some-changes\n$ git commit -m \"add some-changes\"\n$ git push origin master\n```\n\n9. but you need to update your personal repository\n\n```bash\n$ git clone git@github.com:personal-nickname/personal-project.git\n```\n\n10. you can't clone this repository bacause company ssh key hasn't any permissions for access\n\n```bash\nPermission denied (publickey).\n```\n\n11. you can checkout your personal ssh key `home`\n\n```bash\n$ gowap checkout home\nyour now key is 'home'\n```\n\n12. you can clone now\n\n```bash\n$ git clone git@github.com:personal-nickname/personal-project.git\n```\n\n#### features\n\n**add**\n\nadd without nuts name\n\n\u003e this case, default nuts name set to `home`\n\n```bash\ngowap add \n```\n\n```bash\n# output\n? enter file in which to add the private key /Users/user/.ssh/id_rsa\n? enter file in which to add the public key /Users/user/.ssh/id_rsa.pub\n? `home` is already defined, Do you want to overwrite it? Yes\nINFO[0000] try to overwrite to `home`                    overwrite=true\nINFO[0000] new nuts has been added                       nuts=home\n```\n\nadd with nuts name\n\n```bash\ngowap add {:name}\n```\n\n```bash\n# output\n? enter file in which to add the private key /Users/user/.ssh/id_rsa\n? enter file in which to add the public key /Users/user/.ssh/id_rsa.pub\nINFO[0000] new nuts has been added                       nuts={:name}\n```\n\nadd with git config\n\n```bash\ngowap add --with git\n```\n\n```bash\n# output\n? enter file in which to add the private key /Users/user/.ssh/id_rsa\n? enter file in which to add the public key /Users/user/.ssh/id_rsa.pub\nINFO[0000] with git configuration                        git={\"user\": \"xxx\", \"mail\": \"xxx\", \"autoSign\": true, \"signKey\": \"xxx\"}\nINFO[0000] new nuts has been added                       nuts={:name}\n```\n\n**remove**\n\nremove without nuts name\n\n\u003e this case, default nuts name set to `home`\n\n```bash\ngowap remove\n```\n\n```bash\n# output:\n? are you sure? Yes\nINFO[0000] `home` nuts has been removed                 nuts=home\n```\n\nremove with nuts name\n\n```bash\ngowap remove {:name}\n```\n\n```bash\n# output:\n? are you sure? Yes\nINFO[0000] `{:name}` nuts has been removed              nuts={:name}\n```\n\n**list**\n\nshow list of nuts\n\n```bash\ngowap list\n```\n\n```bash\n# output\n* home\ncompany\ntemporary\nuser2\n```\n\nsearch list with keyword\n\n\u003e keyword will include follows:\n\u003e - git config values\n\u003e - alias name\n\u003e - nuts name\n\n```bash\ngowap list --keyword {:keyword}\n```\n\n```bash\n# output\ncompany | git user.name \"kenneth ceyer\"\ntemporary | alias name \"kenneth\"\n```\n\n**version**\n\nshow current gowap version\n\n```bash\ngowap version\n```\n\n```bash\n# output\ngowap version 0.0.1\n```\n\n## :package: Installation\n\n#### :yellow_heart: go\n\n```bash\n$ go get github.com/KennethanCeyer/gowap\n$ gowap -v\nNAME:\n   gowap - simple ssh swap tool\n\nUSAGE:\n   gowap.exe [global options] command [command options] [arguments...]\n\nVERSION:\n   x.x.x\n\nAUTHOR:\n   kenneth ceyer \u003chttps://github.com/KennethanCeyer\u003e\n\nCOMMANDS:\n     add a        add ssh profile\n     remove, r .  remove ssh profile\n     list, l      show list ssh profiles\n     archive h    archive ssh profile\n     help, h      show a list of commands or help for one command\n     version, v   show current gowap version\n     ...\n\nGLOBAL OPTIONS:\n   --help, -h     show help\n   --version, -v  print the version\n   ...\n```\n\n#### :broken_heart: linux (still yet not supported)\n\n```bash\n$ apt-get install gowap\n```\n\n#### :broken_heart: Mac (still yet not supported)\n\n```bash\n$ brew install gowap\n```\n\n#### :broken_heart: Windows (still yet not supported)\n\n```bash\n$ choco install gowap\n```\n\n## :mag: License\n\ngowap is under Apache 2.0 license\n\nyou can, of course. download it, use it, modify it\n\n[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2FKennethanCeyer%2Fgowap.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2FKennethanCeyer%2Fgowap?ref=badge_large)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkennethanceyer%2Fgowap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkennethanceyer%2Fgowap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkennethanceyer%2Fgowap/lists"}