330 Commits

Author SHA1 Message Date
Vlad Shablinsky
6a0dcc8324 don't use new name rack if old name rack is a dir
Everything that used HOMEBREW_CELLAR/canonical_name
could point to something that doesn't exist because
loader_for tries to load new name formula if no old
name found. However there can be software installed
from path with the same name that renamed formulae
had and we still need to link/unlink/uninstall etc
that software. The solution is Formulary#to_rack
method that returns rack for given name.
- Add Formulary#to_rack
- Update ARGV.kegs
- Update cmd/switch
2015-08-10 13:57:59 +01:00
Vlad Shablinsky
2cc6b90329 formulary: change logic for renamed formulae 2015-08-10 13:57:59 +01:00
CNA-Bld
194618beb8 implement formulary#find_with_priority 2015-08-10 12:17:26 +01:00
CNA-Bld
68a5b1fe46 add fully qualified name for core formulae 2015-08-06 22:28:44 +08:00
Xu Cheng
b121e5fd7b more core file style updated by rubocop 2015-08-06 17:23:56 +08:00
BrewTestBot
13d544e11e Core files style updates.
Closes Homebrew/homebrew#42354.

Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
2015-08-03 13:22:35 +01:00
Xu Cheng
8f0249e9a1 handle mxcl/master synonym inside Tab#from_file_content 2015-08-02 16:12:14 +08:00
Xu Cheng
be9fde6266 Formulary#from_rack: auto resolve spec 2015-07-31 19:44:02 +08:00
Xu Cheng
b1fff32055 BottleLoader: check version mismatch
Closes Homebrew/homebrew#42049.

Signed-off-by: Xu Cheng <xucheng@me.com>
2015-07-24 15:59:28 +08:00
Xu Cheng
140f8e3df7 improve TapLoader and TapFormulaUnavailableError
* Restore the ability to load formula by `user/homebrew-repo/foo`.
* Only suggest to install tap when tap isn't installed.

Closes Homebrew/homebrew#41705.

Signed-off-by: Xu Cheng <xucheng@me.com>
2015-07-19 12:10:33 +08:00
Xu Cheng
c1fb7a8e4a tap_paths: prevent conflicted formulae happen in the same tap
Closes Homebrew/homebrew#40606.

Signed-off-by: Xu Cheng <xucheng@me.com>
2015-06-12 16:20:44 +08:00
Xu Cheng
f2d0a88292 remove Pathname#find_formula
Closes Homebrew/homebrew#40486.

Signed-off-by: Xu Cheng <xucheng@me.com>
2015-06-11 15:28:30 +08:00
Jack Nagel
7d8bec3f20 Always treat formula files as UTF-8 2015-06-08 22:27:27 -04:00
Jack Nagel
9516444dfd Give namespace modules a name so formula objects can be marshaled
Fixes Homebrew/homebrew#40311.
2015-06-02 20:51:16 -04:00
Xu Cheng
99ba9faf09 BottleLoader: use bottle_resolve_formula_names 2015-06-02 16:45:43 +08:00
Jack Nagel
45a71898e8 Isolate formula class namespaces
Closes Homebrew/homebrew#40151.
Closes Homebrew/homebrew#40203.
2015-06-01 19:24:47 -04:00
Misty De Meo
102170b957 Formulary: accept mxcl/master as synonym for Homebrew/homebrew
Fixes Homebrew/homebrew#40171.
2015-05-28 16:24:46 -07:00
Xu Cheng
647c7626f0 Formulary: add from_rack 2015-05-27 13:53:40 +08:00
Xu Cheng
e91d152af8 Formulary#canonical_name: handle TapFormulaAmbiguityError
If there are multiple tap formulae with the name of ref,
then ref is the canonical name
2015-05-27 13:53:40 +08:00
Xu Cheng
811c4c5add load tap formula through direct search 2015-05-27 13:53:40 +08:00
Xu Cheng
3a3a49bd93 add Formulary.core_path method, deprecate Formula.path 2015-05-27 13:53:40 +08:00
Xu Cheng
3108fb5d22 BottleLoader: using Formulary.path to search formula file 2015-05-27 13:53:40 +08:00
Xu Cheng
8297810e3c add Formulary::path method
This is a little code refactoring splited from Homebrew/homebrew#36753

The idea is to eliminate `Formula#path` outside of `formulary.rb`.
And I indent to deprecate `Formula#path` method when I reimplement
symlink free tap function.

Closes Homebrew/homebrew#39313.
2015-05-08 13:51:26 +08:00
Jack Nagel
a2a24b3a0d Load formulae into private namespace 2015-01-03 22:39:07 -05:00
Jack Nagel
26a2e4c4d3 Avoid formula lookup when we know it will fail
Formulary.loader_for cannot raise exceptions, as canonical_name must
work for nonexistent formulae. However, we can skip the constant lookup
and a redundant file existence check by returning a loader that raises
immediately in #get_formula.
2015-01-01 13:21:29 -05:00
Jack Nagel
34fc227f92 Get rid of StandardLoader class 2015-01-01 13:21:29 -05:00
Jack Nagel
648c47e85d Re-raise NameError when it doesn't match our constant 2014-12-31 17:28:21 -05:00
Jack Nagel
5bf92cd7ca Check file existence instead of rescuing LoadError 2014-12-31 17:28:21 -05:00
Jack Nagel
2cb160dc46 Stop rescuing NameError
This clause originated in 4a36c56ac7b36904712aa472b9bd50ef1b0c80d3,
attempting to catch NameErrors raised by const_defined? calls earlier in
the method body. Those const_defined? calls have since been moved out of
the body of the begin block.

Stop rescuing NameError here, which will make true programming errors in
formulae easier to debug.
2014-12-31 17:28:21 -05:00
Jack Nagel
a955665102 Preserve backtrace from original exception 2014-12-29 15:23:01 -05:00
Jack Nagel
633f29af5d Remove duplicated logic from FromUrlLoader 2014-12-29 14:59:18 -05:00
Jack Nagel
2bf1f93721 Extract method 2014-12-29 14:59:18 -05:00
Jack Nagel
5beaa512e6 Pass the requested spec into the formula instance 2014-06-20 21:32:36 -05:00
Jack Nagel
6e1450e974 Handle illegal constant names when fetching remote formulae 2014-06-15 20:23:20 -05:00
Jack Nagel
c8fd1214bd Revert "Only do formula class sanity checks once"
This reverts commit ace78b1f3a59a893c7068e485555acf792470080.

Fixes Homebrew/homebrew#30154.
2014-06-14 16:04:38 -05:00
Jack Nagel
fdcbc5e4db Only do formula class sanity checks once 2014-06-09 19:55:31 -05:00
Geoff Nixon
3cd5f17426 Print debug messages to stderr
Closes Homebrew/homebrew#29294.

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
2014-05-16 00:00:41 -05:00
Adam Vandenberg
37760ce3f8 add comment 2014-05-02 07:39:23 -07:00
Jack Nagel
bdee729a41 Yield absolute paths from find_formula 2014-04-25 18:58:16 -05:00
Tsukasa OMOTO
54004a4759 Make the on-disk representation of taps unambiguous
This commit supports "-" and "_" in names of user and repository.

Closes Homebrew/homebrew#28203.

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
2014-04-24 17:10:41 -05:00
David Turner
629b244cf8 Handle formula URLs with query parameters. This is useful for fetching formulas from cgit repositories, which uses ?h= to choose branches.
Closes Homebrew/homebrew#28314.

Signed-off-by: Adam Vandenberg <flangy@gmail.com>
2014-04-18 08:40:39 -07:00
Jack Nagel
af272e04c7 Restore recursive tap search
Fixes Homebrew/homebrew#28234.
2014-04-07 18:44:29 -05:00
Jack Nagel
d0831c4ef7 Always resolve one symlink when loading formula files
This means that tapped formula will always have the correct path, and we
can stop calling realpath everywhere.
2014-04-06 00:31:07 -05:00
Jack Nagel
20f4b31763 Implement canonical_name in Formulary 2014-04-05 22:03:49 -05:00
Jack Nagel
e891bb4272 Drop support for passing incomplete paths
`brew install ./foo` treats `./foo` like `./foo.rb`. This requires
a confusing special case in the name resolution logic and doesn't make
a whole lot of sense from a UX perspective.

Drop support for this. The argument should be an absolute path,
a relative path, or a formula name, rather than a hybrid.

cf. https://github.com/Homebrew/homebrew/issues/23430#issuecomment-26776962
2014-04-05 22:03:40 -05:00
Jack Nagel
0d90deac27 Extract alias resolution to a separate loader class 2014-04-05 22:03:40 -05:00
Jack Nagel
caaa32325c Use StandardLoader when we know the path already 2014-04-05 22:03:40 -05:00
Jack Nagel
686ab7ad7f Drop readable? check since we don't do that for any other case 2014-04-05 22:03:40 -05:00
Jack Nagel
757c8ade0b Simplify tap formula loading 2014-04-05 22:03:40 -05:00
Jack Nagel
e008ceb332 Pass path directly to StandardLoader when possible
Now we can avoid computing the path twice in the common case.
2014-04-05 22:03:39 -05:00