def load_build_config(self, config=None):
<EOL>if isinstance(config, dict):<EOL><INDENT>bot.debug('<STR_LIT>')<EOL>return config<EOL><DEDENT>if config is None:<EOL><INDENT>config = self._get_and_update_setting('<STR_LIT>',<EOL>'<STR_LIT>')<EOL><DEDENT>elif os.path.exists(config):<EOL><INDENT>return read_json(config)<EOL><DEDENT>configs = self._load_templates(config)<EOL>if configs is None:<EOL><INDENT>bot.error('<STR_LIT>' %name)<EOL>sys.exit(<NUM_LIT:1>)<EOL><DEDENT>bot.info('<STR_LIT>' %config)<EOL>config = configs[<NUM_LIT:0>]<EOL>return config<EOL>
load a google compute config, meaning that we have the following cases:

       1. the user has not provided a config file directly, we look in env.
       2. the environment is not set, so we use a reasonable default
       3. if the final string is not found as a file, we look for it in library
       4. we load the library name, or the user file, else error

       Parameters
       ==========
       config: the config file the user has provided, or the library URI