def generate_markdown_from_files()

in guardrails/generate-roles-markdown.py [0:0]


def generate_markdown_from_files(foldername):
  frames=[]
  iam_actions_frames=[]
  files=os.listdir(foldername)
  files.sort()
  for filename in files:
    #print(filename)
    with open(f"{foldername}/{filename}") as json_file:
      #print(f"{json_file}")
      data=json.load(json_file)
      if "SCP-Type" in data:
        continue

      if "Identifier" in data:
        identifier=data["Identifier"]
        identifier_link=f'<a id="{identifier}" href="#{identifier}" >{identifier}</a>'
        data["Identifier"]=identifier_link
      if "Authorized Principals" in data:
        del data["Authorized Principals"]
      #print(len(data))
      if "References" in data:
        references=convert_string_to_list(data["References"])
        link_references=""
        for ref in references: 
          link_references+=f"[{ref}]({ref})<br><br>"
        data["References"]=link_references

      if "IAM Actions" in data:
        iam_actions=convert_string_to_list(data["IAM Actions"])
        link_iam_actions=""
        is_actions=False
        for action in iam_actions:
          if not action:
            continue
          service=action.split(":")[0]
          #print(iam_actions,data)
          if action!="*":
            api=action.split(":")[1]
          api=api.strip()
          if "*" not in api and service in names and "docname" in names[service] and names[service]["docname"]:
            docname=names[service]["docname"]
            if "s3"==service:
              link_iam_actions+=f"[{service}:{api}](https://docs.aws.amazon.com/{docname}/latest/API/API_{api}.html)<br>"
            else:
              link_iam_actions+=f"[{service}:{api}](https://docs.aws.amazon.com/{docname}/latest/APIReference/API_{api}.html)<br>"
          else:
            link_iam_actions+=f"{action}<br>"
        data["IAM Actions"]=link_iam_actions
        if len(iam_actions)>0:
          print(iam_actions)
          iam_actions_data=dict(data)
          if "Policy" in data:
            del data["Policy"]
          iam_actions_frames.append(data)
      frames.append(data)

  if not iam_actions_frames:
    return ""  

  recommendations=pandas.DataFrame(frames)
  #print(result.shape)
  #print(result.columns)
  recommendations_markdown=recommendations.to_markdown(showindex=False)
  folder=f"{prefix}/{foldername}"
  Path(folder).mkdir(parents=True,exist_ok=True) 
  md_filename=f"{prefix}/{foldername}/guardrails.md"
  #print(md_filename)
  print(foldername)
  service_name=names[foldername]["servicename"]
  with open(md_filename,'w') as out:
    out.write(template_header.format(name=service_name))
    out.write(recommendations_markdown)

  if iam_actions_frames:
    iam_role_recommendations=pandas.DataFrame(iam_actions_frames)
    iam_role_recommendations_markdown=iam_role_recommendations.to_markdown(showindex=False)
    with open(iam_roles_filename,'a') as out:
      out.write(iam_roles_header.format(name=service_name))
      out.write(iam_role_recommendations_markdown)
      out.write("\n\n\n")

  index=f"[{service_name}](./guardrails/{foldername}/guardrails.html)"
  return index