-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.py
More file actions
executable file
·96 lines (79 loc) · 3.38 KB
/
Copy pathapp.py
File metadata and controls
executable file
·96 lines (79 loc) · 3.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
===============================================================================
UpGit — Universal CLI & TUI Entry Point
GitHub TUI Uploader & Repository Automation Suite
Supports English and German localization.
===============================================================================
"""
from __future__ import annotations
import argparse
import sys
from pathlib import Path
# Lokales Verzeichnis priorisiert in sys.path registrieren
BASE_DIR = Path(__file__).resolve().parent
if str(BASE_DIR) not in sys.path:
sys.path.insert(0, str(BASE_DIR))
from core.auth import clear_token, detect_system_gh_token, get_saved_token, save_token
from core.github_api import verify_token
from core.scanner import scan_workspace
from core.i18n import (
t,
set_language,
get_language,
load_configured_language,
save_configured_language,
)
from upgit_app import UpGitApp
def main() -> None:
load_configured_language()
parser = argparse.ArgumentParser(
description="UpGit — Professioneller GitHub TUI Uploader & Repository Manager",
formatter_class=argparse.RawDescriptionHelpFormatter,
)
parser.add_argument("--status", action="store_true", help="Zeigt aktuellen GitHub Login- und Tokenstatus im Terminal")
parser.add_argument("--list", type=str, nargs="?", const=".", help="Scannt ein Verzeichnis und listet Projekte im Terminal")
parser.add_argument("--logout", action="store_true", help="Löscht das gespeicherte GitHub Token")
parser.add_argument("--lang", choices=["de", "en"], help="Sprache wählen ('de' oder 'en') / Select language ('de' or 'en')")
parser.add_argument("--version", action="version", version="UpGit 1.0.0 (CachyOS Edition 2026)")
args = parser.parse_args()
if args.lang:
set_language(args.lang)
save_configured_language(args.lang)
if not (args.status or args.list or args.logout):
print(t("cli_lang_saved", lang=args.lang))
sys.exit(0)
if args.logout:
clear_token()
print("✓ Gespeichertes GitHub Token erfolgreich entfernt.")
sys.exit(0)
if args.status:
token = get_saved_token() or detect_system_gh_token()
if not token:
print(t("cli_not_logged_in"))
sys.exit(1)
ok, profile, msg = verify_token(token)
if ok and profile:
print(t("cli_connected"))
print(f"Benutzer / User: @{profile['login']} ({profile['name']})")
print(f"URL: {profile['html_url']}")
print(f"Repos: {profile['public_repos']} public / {profile['total_private_repos']} private")
print(f"Scopes: {', '.join(profile['scopes'])}")
print(f"Rate-Limit: {profile['rate_limit_remaining']}")
else:
print(f"Status: [ERROR/FEHLER] {msg}")
sys.exit(1)
sys.exit(0)
if args.list is not None:
target_dir = Path(args.list).resolve()
projects = scan_workspace(target_dir)
print(f"=== Projects in {target_dir} ({len(projects)} found) ===")
for p in projects:
print(f" • {p['name']:<25} [{p['status_tag']:<15}] Git={p['has_git']} | README={p['has_readme']}")
sys.exit(0)
# Standardmäßig interaktive Textual TUI starten
app = UpGitApp()
app.run()
if __name__ == "__main__":
main()