code: async function africa(packageName, questions = {}, config = {}) {
    if (typeof packageName != 'string') {
      throw new Error('Package name is required.');
    }
  
    const {
      homedir = (0, _os.homedir)(),
      rcNameFunction = p => `.${p}rc`,
      force = false,
      local = false,
      questionsTimeout
    } = config;
    const rc = rcNameFunction(packageName);
    const path = (0, _path.resolve)(homedir, rc);
    const homeEx = await (0, _lib.exists)(path);
  
    if (local) {
      const localPath = (0, _path.resolve)(rc);
      const localEx = await (0, _lib.exists)(localPath);
      const c = await handleLocal(homeEx, localEx, path, localPath, questions, questionsTimeout, force);
      return c;
    }
  
    const c = await handleHome(homeEx, path, questions, questionsTimeout, force);
    return c;
  }
docs: Read package configuration from the home directory, or ask questions with
  readline interface to create a new configuration in `~/.${packageName}rc`
  @param {string} packageName the name of the package
  @param {Questions} questions an object with questions to be passed to reloquent
  @param {AfricaConfig} [config] configuration object
  @param {boolean} [config.force=false] Force asking questions and re-writing config. Default false.
  @param {string} [config.homedir] Path to the home directory.
  @param {string} [config.questionsTimeout] How log to wait before timing out. Will wait forever by default.
  @param {string} [config.local] Look up for the `.rc` file in the current directory first, and use homedir if not found. When initialising, the local file will be created and default values for questions read from the home `.rc` if exists.. Default `false`.
  @param {(s: string) => string} [config.rcNameFunction] Function used to generate the rc name