aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/dev-cmd/edit.rb
diff options
context:
space:
mode:
authorMike McQuaid2016-09-05 21:37:02 +0100
committerMike McQuaid2016-09-08 20:46:37 +0100
commitaf8605ea4ba1d9856c055c8c76b447e030540e3f (patch)
treed093b11340406c21a4b873a80effe3b068fd07d4 /Library/Homebrew/dev-cmd/edit.rb
parent4f6bae46f9c0f7b713cdbb999318460135f423de (diff)
downloadbrew-af8605ea4ba1d9856c055c8c76b447e030540e3f.tar.bz2
Move developer-focused commands to dev-cmd.
Diffstat (limited to 'Library/Homebrew/dev-cmd/edit.rb')
-rw-r--r--Library/Homebrew/dev-cmd/edit.rb50
1 files changed, 50 insertions, 0 deletions
diff --git a/Library/Homebrew/dev-cmd/edit.rb b/Library/Homebrew/dev-cmd/edit.rb
new file mode 100644
index 000000000..ef325b8b6
--- /dev/null
+++ b/Library/Homebrew/dev-cmd/edit.rb
@@ -0,0 +1,50 @@
+#: * `edit`:
+#: Open all of Homebrew for editing.
+#:
+#: * `edit` <formula>:
+#: Open <formula> in the editor.
+
+require "formula"
+
+module Homebrew
+ def edit
+ unless (HOMEBREW_REPOSITORY/".git").directory?
+ raise <<-EOS.undent
+ Changes will be lost!
+ The first time you `brew update', all local changes will be lost, you should
+ thus `brew update' before you `brew edit'!
+ EOS
+ end
+
+ # If no brews are listed, open the project root in an editor.
+ if ARGV.named.empty?
+ editor = File.basename which_editor
+ if editor == "mate" || editor == "subl"
+ # If the user is using TextMate or Sublime Text,
+ # give a nice project view instead.
+ exec_editor HOMEBREW_REPOSITORY+"bin/brew",
+ HOMEBREW_REPOSITORY+"README.md",
+ HOMEBREW_REPOSITORY+".gitignore",
+ *library_folders
+ else
+ exec_editor HOMEBREW_REPOSITORY
+ end
+ else
+ # Don't use ARGV.formulae as that will throw if the file doesn't parse
+ paths = ARGV.named.map do |name|
+ path = Formulary.path(name)
+ unless path.file? || ARGV.force?
+ raise FormulaUnavailableError, name
+ end
+ path
+ end
+ exec_editor(*paths)
+ end
+ end
+
+ def library_folders
+ Dir["#{HOMEBREW_LIBRARY}/*"].reject do |d|
+ case File.basename(d) when "LinkedKegs", "Aliases" then true end
+ end
+ end
+end