
The initializer for Formula does a number of validations, but it does them in a weird order, and some attributes aren't validated under certain circumstances. This became even more of a mess when most software package attributes were moved into the SoftwareSpec class. This commit removes the last vestiges of storing these attributes as instance variables. In particular, it eliminates #set_instance_variable and #validate_variable, replacing them with methods that operate on SoftwareSpec instances, and generate more useful errors. Doing these validations unconditionally in the initializer means we bail out much earlier if the formula has invalid attributes or is not fully specified, and no longer need to validate in #prefix. Technically we don't need to validate in #brew either, but we continue to do so anyway as a safety measure, and because we cannot enforce calls to super in subclasses.
56 lines
2.0 KiB
Ruby
56 lines
2.0 KiB
Ruby
# Base classes for specialized types of formulae.
|
|
|
|
# See youtube-dl.rb for an example
|
|
class ScriptFileFormula < Formula
|
|
def install
|
|
bin.install Dir['*']
|
|
end
|
|
end
|
|
|
|
# See flac.rb for an example
|
|
class GithubGistFormula < ScriptFileFormula
|
|
def initialize name='__UNKNOWN__', path=nil
|
|
url = self.class.stable.url
|
|
self.class.stable.version(File.basename(File.dirname(url))[0,6])
|
|
super
|
|
end
|
|
end
|
|
|
|
# This formula serves as the base class for several very similar
|
|
# formulae for Amazon Web Services related tools.
|
|
class AmazonWebServicesFormula < Formula
|
|
# Use this method to peform a standard install for Java-based tools,
|
|
# keeping the .jars out of HOMEBREW_PREFIX/lib
|
|
def standard_install
|
|
rm Dir['bin/*.cmd'] # Remove Windows versions
|
|
prefix.install "bin"
|
|
# Put the .jars in prefix/jars/lib, which isn't linked to the Cellar
|
|
# This will prevent conflicts with other versions of these jars.
|
|
(prefix+'jars').install 'lib'
|
|
(prefix+'jars/bin').make_symlink '../bin'
|
|
end
|
|
|
|
# Use this method to generate standard caveats.
|
|
def standard_instructions var_name, var_value=linked_keg+'jars'
|
|
<<-EOS.undent
|
|
Before you can use these tools you must export some variables to your $SHELL
|
|
and download your X.509 certificate and private key from Amazon Web Services.
|
|
|
|
Your certificate and private key are available at:
|
|
http://aws-portal.amazon.com/gp/aws/developer/account/index.html?action=access-key
|
|
|
|
Download two ".pem" files, one starting with `pk-`, and one starting with `cert-`.
|
|
You need to put both into a folder in your home directory, `~/.ec2`.
|
|
|
|
To export the needed variables, add them to your dotfiles.
|
|
* On Bash, add them to `~/.bash_profile`.
|
|
* On Zsh, add them to `~/.zprofile` instead.
|
|
|
|
export JAVA_HOME="$(/usr/libexec/java_home)"
|
|
export EC2_PRIVATE_KEY="$(/bin/ls "$HOME"/.ec2/pk-*.pem | /usr/bin/head -1)"
|
|
export EC2_CERT="$(/bin/ls "$HOME"/.ec2/cert-*.pem | /usr/bin/head -1)"
|
|
export #{var_name}="#{var_value}"
|
|
EOS
|
|
end
|
|
end
|