class Configuring: """ Class which will run the configuration for the user especially useful the first time """ def __init__(self): self.config = VikiConfig() # Return functions here, which are used with lazy evaluation, # such that we can evaluate already set options # Also, initialize it in this way, because of order self.default_options = OrderedDict() self.default_options['ros_version'] = lambda: 'indigo' self.default_options['ros_dir'] = lambda: '/opt/ros/' + self.config.get_option('ros_version') self.default_options['viki_dir'] = lambda: os.getcwd() self.default_options['catkin_workspace'] = lambda : '~/catkin_ws' self.default_options['root_module_directory'] = lambda : self.config.get_option('catkin_workspace') + '/src/viki_modules' def run(self): print "Configuring settings:\nPress enter to use default, or enter your own value" for option in self.default_options.keys(): default = self.config.get_option(option, True) if default is None: default = self.default_options[option]() value = self.ask_config_option(option, default) self.config.set_option(option, value) self.config.save_config() def ask_config_option(self, option, value): input = raw_input("{}: [{}]".format(option, value)) if input is not "": return input return value