docs: def zip_all(directory):
      """
      Zip source models and exposures recursively
      """
      zips = []
      for cwd, dirs, files in os.walk(directory):
          if 'ssmLT.xml' in files:
              zips.append(zip_source_model(os.path.join(cwd, 'ssmLT.xml')))
          for f in files:
              if f.endswith('.xml') and 'exposure' in f.lower():
                  zips.append(zip_exposure(os.path.join(cwd, f)))
      total = sum(os.path.getsize(z) for z in zips)
      logging.info('Generated %s of zipped data', general.humansize(total))