adowu commited on
Commit
8a3568a
1 Parent(s): 41a6f7c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +47 -4
app.py CHANGED
@@ -2,6 +2,7 @@ import gradio as gr
2
  from github import Github, GithubException
3
  import os
4
  import requests
 
5
 
6
  # Załaduj token z pliku .env lub ustaw bezpośrednio
7
  GITHUB_TOKEN = os.getenv('GITHUB_TOKEN')
@@ -15,6 +16,14 @@ def get_file_content(owner, repo_name, path, branch="main"):
15
  else:
16
  return f"Błąd pobierania pliku: {response.status_code}"
17
 
 
 
 
 
 
 
 
 
18
 
19
  def github_tool(
20
  action: str,
@@ -33,7 +42,8 @@ def github_tool(
33
  labels: str = None, # etykiety oddzielone przecinkami
34
  tag: str = None,
35
  name: str = None, # nazwa release
36
- file_url: str = None, # URL pliku do pobrania
 
37
  ):
38
  """Narzędzie do zarządzania repozytoriami GitHub."""
39
  user = g.get_user()
@@ -251,10 +261,40 @@ def github_tool(
251
  }
252
  return info # Zwraca słownik z informacjami
253
 
254
- elif action == "get_file_content": # Dodana akcja
255
  if not all([owner, repo_name, path]):
256
  raise ValueError("Brakujące parametry: owner, repo_name, path")
257
- return get_file_content(owner, repo_name, path, branch)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
258
 
259
  else:
260
  raise ValueError(f"Nieznana akcja: {action}")
@@ -292,7 +332,8 @@ with gr.Blocks() as demo:
292
  "list_forks",
293
  "list_files",
294
  "get_repository_info",
295
- "get_file_content", # Dodana akcja
 
296
  ],
297
  label="Akcja",
298
  )
@@ -312,6 +353,7 @@ with gr.Blocks() as demo:
312
  tag = gr.Textbox(label="Tag")
313
  release_name = gr.Textbox(label="Nazwa release") # Zmieniona nazwa
314
  file_url = gr.Textbox(label="URL pliku") # Dodane pole
 
315
 
316
  with gr.Row():
317
  run_button = gr.Button("Wykonaj")
@@ -337,6 +379,7 @@ with gr.Blocks() as demo:
337
  tag,
338
  release_name, # Użycie zmienionej nazwy
339
  file_url, # Dodany argument
 
340
  ],
341
  outputs=output,
342
  api_name="github_tool"
 
2
  from github import Github, GithubException
3
  import os
4
  import requests
5
+ import re
6
 
7
  # Załaduj token z pliku .env lub ustaw bezpośrednio
8
  GITHUB_TOKEN = os.getenv('GITHUB_TOKEN')
 
16
  else:
17
  return f"Błąd pobierania pliku: {response.status_code}"
18
 
19
+ def extract_repo_info(url):
20
+ """Wyodrębnia nazwę użytkownika i repozytorium z linku GitHub."""
21
+ match = re.search(r"github\.com/([^/]+)/([^/]+)", url)
22
+ if match:
23
+ return match.group(1), match.group(2)
24
+ else:
25
+ return None, None
26
+
27
 
28
  def github_tool(
29
  action: str,
 
42
  labels: str = None, # etykiety oddzielone przecinkami
43
  tag: str = None,
44
  name: str = None, # nazwa release
45
+ file_url: str = None, # URL pliku do pobrania,
46
+ repo_url: str = None, # Link do repozytorium
47
  ):
48
  """Narzędzie do zarządzania repozytoriami GitHub."""
49
  user = g.get_user()
 
261
  }
262
  return info # Zwraca słownik z informacjami
263
 
264
+ elif action == "get_file_content":
265
  if not all([owner, repo_name, path]):
266
  raise ValueError("Brakujące parametry: owner, repo_name, path")
267
+ return get_file_content(owner, repo_name, path, branch)
268
+
269
+ elif action == "analyze_repository_by_url":
270
+ if not repo_url:
271
+ raise ValueError("Brakujący parametr: repo_url")
272
+
273
+ owner, repo_name = extract_repo_info(repo_url)
274
+ if not owner or not repo_name:
275
+ raise ValueError("Nieprawidłowy link do repozytorium")
276
+
277
+ try:
278
+ repo = g.get_repo(f"{owner}/{repo_name}")
279
+
280
+ # Pobierz listę plików i katalogów
281
+ contents = repo.get_contents("")
282
+
283
+ # Iteruj po liście i pobieraj zawartość plików
284
+ file_analyses = []
285
+ for content in contents:
286
+ if content.type == "file":
287
+ file_content = content.decoded_content.decode()
288
+ file_analyses.append({
289
+ "name": content.name,
290
+ "path": content.path,
291
+ "content": file_content,
292
+ # Możesz dodać tutaj analizę zawartości pliku
293
+ })
294
+ return file_analyses
295
+
296
+ except GithubException as e:
297
+ return f"Błąd GitHub: {str(e)}"
298
 
299
  else:
300
  raise ValueError(f"Nieznana akcja: {action}")
 
332
  "list_forks",
333
  "list_files",
334
  "get_repository_info",
335
+ "get_file_content",
336
+ "analyze_repository_by_url",
337
  ],
338
  label="Akcja",
339
  )
 
353
  tag = gr.Textbox(label="Tag")
354
  release_name = gr.Textbox(label="Nazwa release") # Zmieniona nazwa
355
  file_url = gr.Textbox(label="URL pliku") # Dodane pole
356
+ repo_url = gr.Textbox(label="Link do repozytorium") # Dodane pole
357
 
358
  with gr.Row():
359
  run_button = gr.Button("Wykonaj")
 
379
  tag,
380
  release_name, # Użycie zmienionej nazwy
381
  file_url, # Dodany argument
382
+ repo_url, # Dodany argument
383
  ],
384
  outputs=output,
385
  api_name="github_tool"