def _loader(self, current_path=None, user_settings_values=None, user_options_values=None): # The disk settings definition, already including the default disk values settings = self._paths.settings options = OptionsValues() if current_path: conan_info_path = os.path.join(current_path, CONANINFO) if os.path.exists(conan_info_path): existing_info = ConanInfo.load_file(conan_info_path) settings.values = existing_info.full_settings options = existing_info.full_options # Take existing options from conaninfo.txt if user_settings_values: aux_values = Values.from_list(user_settings_values) settings.values = aux_values if user_options_values is not None: # Install will pass an empty list [] # Install OVERWRITES options, existing options in CONANINFO are not taken # into account, just those from CONANFILE + user command line options = OptionsValues.from_list(user_options_values) return ConanFileLoader(self._runner, settings, options=options)
def _loader(self, current_path=None, user_settings_values=None, user_options_values=None, scopes=None): # The disk settings definition, already including the default disk values settings = self._paths.settings options = OptionsValues() conaninfo_scopes = Scopes() if current_path: conan_info_path = os.path.join(current_path, CONANINFO) if os.path.exists(conan_info_path): existing_info = ConanInfo.load_file(conan_info_path) settings.values = existing_info.full_settings options = existing_info.full_options # Take existing options from conaninfo.txt conaninfo_scopes = existing_info.scope if user_settings_values: aux_values = Values.from_list(user_settings_values) settings.values = aux_values if user_options_values is not None: # Install will pass an empty list [] # Install OVERWRITES options, existing options in CONANINFO are not taken # into account, just those from CONANFILE + user command line options = OptionsValues.from_list(user_options_values) if scopes: conaninfo_scopes.update_scope(scopes) self._current_scopes = conaninfo_scopes return ConanFileLoader(self._runner, settings, options=options, scopes=conaninfo_scopes)
def create_options(conanfile): try: package_options = PackageOptions(getattr(conanfile, "options", None)) options = Options(package_options) default_options = getattr(conanfile, "default_options", None) if default_options: if isinstance(default_options, tuple): default_values = OptionsValues.loads("\n".join(default_options)) elif isinstance(default_options, list): default_values = OptionsValues.from_list(default_options) elif isinstance(default_options, basestring): default_values = OptionsValues.loads(default_options) else: raise ConanException("Please define your default_options as list or " "multiline string") options.values = default_values return options except Exception as e: raise ConanException("Error while initializing options. %s" % str(e))
def create_options(conanfile): try: package_options = PackageOptions(getattr(conanfile, "options", None)) options = Options(package_options) default_options = getattr(conanfile, "default_options", None) if default_options: if isinstance(default_options, tuple): default_values = OptionsValues.loads("\n".join(default_options)) elif isinstance(default_options, list): default_values = OptionsValues.from_list(default_options) elif isinstance(default_options, str): default_values = OptionsValues.loads(default_options) else: raise ConanException("Please define your default_options as list or " "multiline string") options.values = default_values return options except Exception as e: raise ConanException("Error while initializing options. %s" % str(e))
def load_virtual(self, reference, path): fixed_options = [] # If user don't specify namespace in options, assume that it's for the reference (keep compatibility) for option_name, option_value in self._options.as_list(): if ":" not in option_name: tmp = ("%s:%s" % (reference.name, option_name), option_value) else: tmp = (option_name, option_value) fixed_options.append(tmp) options = OptionsValues.from_list(fixed_options) conanfile = ConanFile(None, self._runner, self._settings.copy(), path) conanfile.requires.add(str(reference)) # Convert to string necessary # conanfile.options.values = options conanfile.options.initialize_upstream(options) conanfile.generators = ["txt"] conanfile.scope = self._scopes.package_scope() return conanfile
def load_virtual(self, reference, path): fixed_options = [] # If user don't specify namespace in options, assume that it's for the reference (keep compatibility) for option_name, option_value in self._options.as_list(): if ":" not in option_name: tmp = ("%s:%s" % (reference.name, option_name), option_value) else: tmp = (option_name, option_value) fixed_options.append(tmp) options = OptionsValues.from_list(fixed_options) conanfile = ConanFile(None, self._runner, self._settings.copy(), path) conanfile.requires.add(str(reference)) # Convert to string necessary # conanfile.options.values = options conanfile.options.initialize_upstream(options) conanfile.generators = ["txt"] conanfile.scope = self._scopes.package_scope() return conanfile
def test_from_list(self): option_values = OptionsValues.from_list(self.sut.as_list()) self.assertEqual(option_values.dumps(), self.sut.dumps())
def test_from_list(self): option_values = OptionsValues.from_list(self.sut.as_list()) self.assertEqual(option_values.dumps(), self.sut.dumps())