{"id":22946627,"url":"https://github.com/mmower/godo","last_synced_at":"2025-08-12T23:32:58.029Z","repository":{"id":385717,"uuid":"3054","full_name":"mmower/godo","owner":"mmower","description":"go (to project) do (stuffs)","archived":false,"fork":false,"pushed_at":"2008-05-30T20:09:11.000Z","size":115,"stargazers_count":9,"open_issues_count":0,"forks_count":5,"subscribers_count":3,"default_branch":"master","last_synced_at":"2023-04-10T21:12:57.235Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://rubymatt.rubyforge.org/godo","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mmower.png","metadata":{"files":{"readme":"README.txt","changelog":"CHANGES.txt","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2008-03-08T13:59:49.000Z","updated_at":"2019-08-13T13:21:52.000Z","dependencies_parsed_at":"2022-07-18T08:17:19.925Z","dependency_job_id":null,"html_url":"https://github.com/mmower/godo","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmower%2Fgodo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmower%2Fgodo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmower%2Fgodo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmower%2Fgodo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mmower","download_url":"https://codeload.github.com/mmower/godo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":229717769,"owners_count":18113395,"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":[],"created_at":"2024-12-14T14:47:35.360Z","updated_at":"2024-12-14T14:47:35.837Z","avatar_url":"https://github.com/mmower.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"= godo\n\n* version: 1.0.8\n* released: 2008-05-28\n* http://simplyruby.rubyforge.org/godo\n\n== DESCRIPTION:\n\ngo (to project) do (stuffs)\n\ngodo provides a smart way of opening a project folder in multiple terminal tabs and, in each tab,\ninvoking a commands appropriate to that project. For example if the folder contains a Rails project\nthe actions might include: starting mongrel, tailing one or more logs, starting consoles or IRB\nsessions, tailing production logs, opening an editor, running autospec, or gitk.\n\ngodo works by searching your project paths for a given search string and trying to match it against\npaths found in one or more configured project roots. It will make some straightforward efforts to\ndisambiguate among multiple matches to find the one you want.\n\ngodo then uses configurable heuristics to figure out what type of project it is, for example \"a RoR\nproject using RSpec and Subversion\". From that it will invokes a series of action appropriate to the type of project detected with each action being run, from the project folder, in its own terminal session.\n\ngodo is entirely configured by a YAML file (~/.godo) that contains project types, heuristics, actions, project paths, and a session controller. A sample configuration file is provided that can be installed using godo --install.\n\t\ngodo comes with an iTerm session controller for MacOSX that uses the rb-appscript gem to control iTerm (see lib/session.rb and lib/sessions/iterm_session.rb). It should be relatively straightforward to add new controller (e.g. for Leopard Terminal.app), or a controller that works in a different way (e.g. by creating new windows instead of new tabs). There is nothing MacOSX specific about the rest of godo so creating controllers for other unixen should be straightforward if they can be controlled from ruby.\n\ngodo is a rewrite of my original 'gp' script (http://matt.blogs.it/entries/00002674.html) which fixes a number of the deficiencies of that script, turns it into a gem, has a better name, and steals the idea of using heuristics to detect project types from Solomon White's gp variant (http://onrails.org/articles/2007/11/28/scripting-the-leopard-terminal).\n  \ngodo now includes contributions from Lee Marlow \u003clee.marlow@gmail.com\u003e including support for project level .godo files to override the global configuration, support for Terminal.app, and maximum depth support to speed up the finder.\n\t\ngodo lives at the excellent GitHub: http://github.com/mmower/godo/ and accepts patches and forks.\n\n== FEATURES/PROBLEMS:\n\n* All-in-one configuration file\n* Flexible heuristics for detecting project type\n* Flexible actions for running commands\n* Project level customizations\n\n== SYNOPSIS:\n\nTo install the default configuration (will not overwrite an existing configuration file)\n\ngodo --install\n\nTo open a project with it's actions\n\ngodo \u003cproject\u003e\n\nWhere project is a search term that will match part of the project path name.\n\nIf the project has a .godo file at its root, then those actions will be used\ninstead of using the heuristics.  A project level .godo file can reference\nactions defined in ~/.godo, a group of actions by project type, and\narbitrary commands.\n\nHere's a sample project level .godo file:\n---\nactions:\n  - terminal\n  - command: echo 'tab before matcher'\n    label: This tab goes before the project matcher\n  - matcher: rails+git\n  - command: echo 'tab after matcher'\n  - terminal\n\nTo open a project and override the project type (i.e. do not use heuristics nor\na project level .godo file):\n\ngodo -o \u003cmatcher\u003e \u003cproject\u003e\n\nTo see what project types are available:\n\ngodo --list-types\n\n== REQUIREMENTS:\n\n* Trollop\n* rb-appscript\n\n== INSTALL:\n\n* sudo gem install godo\n* godo --install\n* mate|vi|emacs ~/.godo\n\n== LICENSE:\n\n(The MIT License)\n\nCopyright (c) 2008 Matt Mower \u003cself@mattmower.com\u003e\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmmower%2Fgodo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmmower%2Fgodo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmmower%2Fgodo/lists"}