code: def _do_identity_role_list(args):
      
      rest_client = RestClient(args.url)
      state = rest_client.list_state(subtree=IDENTITY_NAMESPACE + _ROLE_PREFIX)
  
      head = state['head']
      state_values = state['data']
      printable_roles = []
      for state_value in state_values:
          role_list = RoleList()
          decoded = b64decode(state_value['data'])
          role_list.ParseFromString(decoded)
  
          for role in role_list.roles:
              printable_roles.append(role)
  
      printable_roles.sort(key=lambda r: r.name)
  
      if args.format == 'default':
          tty_width = tty.width()
          for role in printable_roles:
              # Set value width to the available terminal space, or the min width
              width = tty_width - len(role.name) - 3
              width = width if width > _MIN_PRINT_WIDTH else _MIN_PRINT_WIDTH
              value = (role.policy_name[:width] + '...'
                       if len(role.policy_name) > width
                       else role.policy_name)
              print('{}: {}'.format(role.name, value))
      elif args.format == 'csv':
          try:
              writer = csv.writer(sys.stdout, quoting=csv.QUOTE_ALL)
              writer.writerow(['KEY', 'VALUE'])
              for role in printable_roles:
                  writer.writerow([role.name, role.policy_name])
          except csv.Error:
              raise CliException('Error writing CSV')
      elif args.format == 'json' or args.format == 'yaml':
          roles_snapshot = {
              'head': head,
              'roles': {role.name: role.policy_name
                        for role in printable_roles}
          }
          if args.format == 'json':
              print(json.dumps(roles_snapshot, indent=2, sort_keys=True))
          else:
              print(yaml.dump(roles_snapshot, default_flow_style=False)[0:-1])
      else:
          raise AssertionError('Unknown format {}'.format(args.format))
docs: Lists the current on-chain configuration values.