@@ -29,9 +29,12 @@ def extract_min_essentials_version(repo):
2929 logging .error (f"Error processing repo { repo .name } : { e } " )
3030 return "N/A"
3131
32- def generate_markdown_file (repos ):
33- logging .debug ("Generating markdown file." )
34-
32+ def process_repositories (repo_list ):
33+ """
34+ Processes the repositories to calculate counts and generate the markdown file.
35+ """
36+ logging .debug ("Processing repositories to calculate counts and generate markdown." )
37+
3538 # Initialize counters
3639 total_epi_repos = 0
3740 total_release_1_x = 0
@@ -40,17 +43,35 @@ def generate_markdown_file(repos):
4043
4144 with open ('README.md' , 'w' , newline = '\n ' ) as file :
4245 file .write ("# Essentials Plugin Library\n \n " )
43-
46+
4447 # Iterate through repos to calculate counts
45- for repo in sorted (repos , key = lambda x : x .name ):
48+ for repo in sorted (repo_list , key = lambda x : x .name ):
4649 if repo .name .startswith ('epi-' ):
50+ logging .debug (f"Processing repository: { repo .name } " )
4751 total_epi_repos += 1
48- releases = repo .get_releases ()
52+
53+ # Convert PaginatedList to list before accessing
54+ releases = list (repo .get_releases ())
55+ tags = list (repo .get_tags ())
56+
4957 current_release = "N/A"
50- for release in releases :
51- if not release .prerelease :
52- current_release = release .tag_name
53- break
58+ latest_build_tag = "N/A"
59+
60+ # Get the latest release
61+ if releases :
62+ for release in releases :
63+ if not release .prerelease :
64+ current_release = release .tag_name
65+ break
66+ else :
67+ logging .warning (f"No releases found for repository: { repo .name } " )
68+
69+ # Get the latest build tag
70+ if tags :
71+ latest_build_tag = tags [0 ].name # Get the most recent tag
72+ else :
73+ latest_build_tag = "N/A" # Handle empty tags list
74+ logging .warning (f"No tags found for repository: { repo .name } " )
5475
5576 # Count based on release version
5677 if current_release .startswith ("1." ):
@@ -69,24 +90,37 @@ def generate_markdown_file(repos):
6990 file .write (f"| Total Essentials N/A | { total_release_na } |\n \n \n " )
7091
7192 # Write the table header
72- file .write ("| Repository | Visibility | Release | Min Essentials |\n " )
73- file .write ("|-------------------------------------|------------|---------|----------------|\n " )
93+ file .write ("| Repository | Visibility | Release | Build Output | Min Essentials |\n " )
94+ file .write ("|-------------------------------------|------------|---------|--------------|-------------- --|\n " )
7495
7596 # Write the table rows
76- for repo in sorted (repos , key = lambda x : x .name ):
97+ for repo in sorted (repo_list , key = lambda x : x .name ):
7798 if repo .name .startswith ('epi-' ):
7899 logging .debug (f"Processing repo: { repo .name } , Public: { not repo .private } " )
79100 visibility = "Public" if not repo .private else "Internal"
80- releases = repo .get_releases ()
101+
102+ # Convert PaginatedList to list before accessing
103+ releases = list (repo .get_releases ())
104+ tags = list (repo .get_tags ())
105+
81106 current_release = "N/A"
82- for release in releases :
83- if not release .prerelease :
84- current_release = release .tag_name
85- break
107+ latest_build_tag = "N/A"
108+
109+ # Get the latest release
110+ if releases :
111+ for release in releases :
112+ if not release .prerelease :
113+ current_release = release .tag_name
114+ break
115+
116+ # Get the latest build tag
117+ if tags :
118+ latest_build_tag = tags [0 ].name # Get the most recent tag
86119
87120 min_essentials_version = extract_min_essentials_version (repo )
88121
89- file .write (f"| [{ repo .name } ]({ repo .html_url } ) | { visibility } | { current_release } | { min_essentials_version } |\n " )
122+ file .write (f"| [{ repo .name } ]({ repo .html_url } ) | { visibility } | { current_release } | { latest_build_tag } | { min_essentials_version } |\n " )
123+
90124
91125def main ():
92126 logging .debug ("Starting script." )
@@ -114,11 +148,21 @@ def main():
114148
115149 try :
116150 org = g .get_organization (org_name )
117- repos = list (org .get_repos (type = 'all' )) # Fetch all types of repositories
118- logging .debug (f"Number of repos before filtering: { len (repos )} " )
119- generate_markdown_file (repos )
151+ repos = org .get_repos (type = 'all' )
152+ logging .debug (f"Repos object type: { type (repos )} " )
153+
154+ # Explicitly iterate over the PaginatedList to collect repositories
155+ repo_list = []
156+ for repo in repos :
157+ logging .debug (f"Fetched repo: { repo .name } " )
158+ repo_list .append (repo )
159+ logging .debug (f"Number of repos after iteration: { len (repo_list )} " )
160+
161+ # Process the repositories after the list is fully populated
162+ process_repositories (repo_list )
120163 except Exception as e :
121164 logging .error (f"Error accessing organization or repositories: { e } " )
122165
166+
123167if __name__ == "__main__" :
124- main ()
168+ main ()
0 commit comments