mirror of
https://github.com/chromebrew/chromebrew.git
synced 2026-01-06 22:24:12 -05:00
* lib/package: Cleanup functions, get rid of `eval` strings Signed-off-by: supechicken <me@supechicken666.dev> * Fix error Signed-off-by: supechicken <me@supechicken666.dev> * Fix error Signed-off-by: supechicken <me@supechicken666.dev> * Add comments Signed-off-by: supechicken <me@supechicken666.dev> * Make rubocop happy Signed-off-by: supechicken <me@supechicken666.dev> * Fix error Signed-off-by: supechicken <me@supechicken666.dev> * Simplify Signed-off-by: supechicken <me@supechicken666.dev> * Bump crew version Signed-off-by: supechicken <me@supechicken666.dev> --------- Signed-off-by: supechicken <me@supechicken666.dev>
58 lines
1.8 KiB
Ruby
58 lines
1.8 KiB
Ruby
class InstallError < RuntimeError; end
|
|
|
|
def create_placeholder(*functions)
|
|
# create_placeholder: create a placeholder for functions that will be used by crew later
|
|
functions.each do |func_name|
|
|
define_singleton_method(func_name) { true }
|
|
end
|
|
end
|
|
|
|
def property(*properties)
|
|
# property: like attr_accessor, but `=` is not needed to define a value
|
|
# Examples:
|
|
# {prop_name}('example') # set {prop_name} to 'example'
|
|
# {prop_name} # return the value of {prop_name}
|
|
properties.each do |prop_name|
|
|
define_singleton_method(prop_name) do |prop_value = nil, &block|
|
|
prop_var_name = "@#{prop_name}"
|
|
|
|
if block
|
|
# store the block if a block is provided
|
|
instance_variable_set(prop_var_name, block)
|
|
elsif prop_value
|
|
instance_variable_set(prop_var_name, prop_value)
|
|
else
|
|
# return current value if nothing is provided
|
|
return instance_variable_get(prop_var_name)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
def boolean_property(*boolean_properties)
|
|
# boolean_property: if this exists in a package, it will return true
|
|
# Examples:
|
|
# {prop_name} # this will return #{prop_name} as true
|
|
|
|
define_singleton_method(:available_boolean_properties) do
|
|
# available_boolean_properties: Return all available boolean properties for use in commands/{prop,help}.rb
|
|
# Usage:
|
|
# puts Package.available_boolean_properties => [:conflicts_ok, ...]
|
|
return boolean_properties
|
|
end
|
|
|
|
boolean_properties.each do |prop_name|
|
|
prop_var_name = "@#{prop_name}"
|
|
|
|
# Adds the self.{symbol} method
|
|
define_singleton_method(prop_name) do
|
|
instance_variable_set(prop_var_name, true)
|
|
end
|
|
|
|
# Adds the self.{symbol}? method
|
|
define_singleton_method("#{prop_name}?") do
|
|
return !!instance_variable_get(prop_var_name)
|
|
end
|
|
end
|
|
end
|