clapp-pm 1.0.19__py3-none-any.whl → 1.0.20__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- clapp-packages-repo/packages/hello-python/main.py +49 -0
- clapp-packages-repo/packages/hello-python/manifest.json +8 -0
- {clapp_pm-1.0.19.data → clapp_pm-1.0.20.data}/data/version.json +1 -1
- {clapp_pm-1.0.19.dist-info → clapp_pm-1.0.20.dist-info}/METADATA +1 -1
- {clapp_pm-1.0.19.dist-info → clapp_pm-1.0.20.dist-info}/RECORD +13 -19
- {clapp_pm-1.0.19.dist-info → clapp_pm-1.0.20.dist-info}/top_level.txt +0 -1
- cli_commands.py +29 -28
- install_command.py +12 -12
- installer.py +18 -12
- version.py +1 -1
- packages/hello-python/main.py +0 -49
- packages/hello-python/manifest.json +0 -8
- packages/test-app/main.py +0 -1
- packages/test-app/manifest.json +0 -1
- packages/test-app2/main.py +0 -1
- packages/test-app2/manifest.json +0 -1
- {clapp_pm-1.0.19.dist-info → clapp_pm-1.0.20.dist-info}/WHEEL +0 -0
- {clapp_pm-1.0.19.dist-info → clapp_pm-1.0.20.dist-info}/entry_points.txt +0 -0
- {clapp_pm-1.0.19.dist-info → clapp_pm-1.0.20.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,49 @@
|
|
1
|
+
#!/usr/bin/env python3
|
2
|
+
"""
|
3
|
+
Hello Python - Basit Python merhaba dünya uygulaması
|
4
|
+
clapp paket yöneticisi için örnek uygulama
|
5
|
+
"""
|
6
|
+
|
7
|
+
import sys
|
8
|
+
import os
|
9
|
+
from datetime import datetime
|
10
|
+
|
11
|
+
def main():
|
12
|
+
"""Ana fonksiyon"""
|
13
|
+
print("🐍 Merhaba Python Dünyası!")
|
14
|
+
print("=" * 40)
|
15
|
+
|
16
|
+
# Uygulama bilgileri
|
17
|
+
print(f"📦 Uygulama: hello-python")
|
18
|
+
print(f"🔢 Sürüm: 1.0.0")
|
19
|
+
print(f"💻 Dil: Python {sys.version.split()[0]}")
|
20
|
+
print(f"📅 Tarih: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
|
21
|
+
|
22
|
+
# Sistem bilgileri
|
23
|
+
print(f"\n🖥️ Sistem Bilgileri:")
|
24
|
+
print(f" İşletim Sistemi: {os.name}")
|
25
|
+
print(f" Python Sürümü: {sys.version}")
|
26
|
+
print(f" Çalışma Dizini: {os.getcwd()}")
|
27
|
+
|
28
|
+
# Basit hesaplama
|
29
|
+
print(f"\n🧮 Basit Hesaplama:")
|
30
|
+
a, b = 15, 25
|
31
|
+
print(f" {a} + {b} = {a + b}")
|
32
|
+
print(f" {a} * {b} = {a * b}")
|
33
|
+
|
34
|
+
# Dosya listesi
|
35
|
+
print(f"\n📁 Mevcut Dizin İçeriği:")
|
36
|
+
try:
|
37
|
+
files = os.listdir('.')
|
38
|
+
for i, file in enumerate(files[:5], 1):
|
39
|
+
print(f" {i}. {file}")
|
40
|
+
if len(files) > 5:
|
41
|
+
print(f" ... ve {len(files) - 5} dosya daha")
|
42
|
+
except Exception as e:
|
43
|
+
print(f" Dosya listesi alınamadı: {e}")
|
44
|
+
|
45
|
+
print(f"\n✅ hello-python uygulaması başarıyla çalıştı!")
|
46
|
+
print("🎉 clapp paket yöneticisine hoş geldiniz!")
|
47
|
+
|
48
|
+
if __name__ == "__main__":
|
49
|
+
main()
|
@@ -2,12 +2,12 @@ cache_manager.py,sha256=HdQ3vnZO_YP0vyotzjP5wozltVNgkJAxrvYFXhGLGCI,13287
|
|
2
2
|
check_env.py,sha256=9O8CrdWGcxd_WBV5bsAAZG9iAaiO-nGYDYY-gYZ9G3M,4132
|
3
3
|
clapp_core.py,sha256=5tkzt7J4GKSv7Chv5Zoe9N0dv_sWlYGqYxmIn3dhEPY,1764
|
4
4
|
clean_command.py,sha256=nmzitkdNo0Ovgi-tGPUxa9mkAIFzwEzGNaTm82MUdvw,6806
|
5
|
-
cli_commands.py,sha256=
|
5
|
+
cli_commands.py,sha256=nC7bGzUQZwV11KI4iV0s-tvmnT8nwZHFLy0GfV0a1qE,13143
|
6
6
|
dependency_resolver.py,sha256=OyzWOW45OWTr8BX0gcy5fFbk9qIVBP9JQyMtXrKPmEM,24499
|
7
7
|
doctor_command.py,sha256=8Tv_em4mp-ibaDPXli6uyhYV--Fb6lHyDnnS2S0_d7c,7654
|
8
8
|
info_command.py,sha256=b74Pl1-x_PSezALx-lS3FkEcVNTF7a9McTKk5XTDhjM,5629
|
9
|
-
install_command.py,sha256=
|
10
|
-
installer.py,sha256=
|
9
|
+
install_command.py,sha256=9m7C7dVvRop5-4TUy5V2aGb59jSPRp4NAx8QJIOC2tA,9556
|
10
|
+
installer.py,sha256=IElGtgQl1GvakiWGOiewLPIepdf00K_uek_KZcsC85A,10976
|
11
11
|
list_command.py,sha256=qbeocvrg2eXRklxbYS3audQhYHGXTlMBk_tNh1cMxd0,8391
|
12
12
|
main.py,sha256=uf2-LzBBFIwIiyg1kcyZG4J1B9f5U33VHieBXu1uLi8,23889
|
13
13
|
manifest_schema.py,sha256=qR6dIpYL1zwAJmrij05gkgE_urN3qVamoUi2BgR7Lv4,2801
|
@@ -21,7 +21,7 @@ remote_registry.py,sha256=rPBIM_ESXUt0br5cARQ4YbzUoTda0G4e1KGzfyYMbpQ,8235
|
|
21
21
|
smart_search.py,sha256=R5O5CDXqlQc-N-6R6D5k36_-arCB-wnKfmWr5zMYWUI,15741
|
22
22
|
uninstall_command.py,sha256=rQYbZ-XMw8Xxw1fmgGdDaBQmgBGqyJ_rTBZkvEV5HV0,7066
|
23
23
|
validate_command.py,sha256=idaujErzrwuZNT6DYCVTVwZqBDEEi1GTxIXAGBgKMKM,7623
|
24
|
-
version.py,sha256=
|
24
|
+
version.py,sha256=DMXUNBIpCO2h5TM6F6PU54p2mpOWyr1HvIyqrSE7UCo,224
|
25
25
|
version_command.py,sha256=DZuYWtohSeM5PJNYCflBy36_k0vex3tYV2C8ixEA9ho,4259
|
26
26
|
version_manager.py,sha256=fpC7jxhIW1wZhJ9IkVwyqkgJN4mhBjUUbaLefXLDMiM,11423
|
27
27
|
where_command.py,sha256=TcLoXLGmrPSHQuvlceVuuKBsfeadIwz-E0G_5okH14g,6420
|
@@ -54,21 +54,15 @@ backup_current/where_command.py,sha256=TcLoXLGmrPSHQuvlceVuuKBsfeadIwz-E0G_5okH1
|
|
54
54
|
clapp-packages-repo/README.md,sha256=stsqg4c5qWcUZxRabvbD0DEwzjJEGDGvxpA4bGbzJqg,1688
|
55
55
|
clapp-packages-repo/index.json,sha256=Z1tF-OZrWxMjue7q-nUMVJy1UhWop9zwh05gDqy5fCM,894
|
56
56
|
clapp-packages-repo/packages.json,sha256=kjcUn29aMFs89bmjZLK33EMeuy0KZQmyLbdvuCwzCZQ,1148
|
57
|
-
clapp-packages-repo/packages/hello-python/main.py,sha256=
|
58
|
-
clapp-packages-repo/packages/hello-python/manifest.json,sha256=
|
57
|
+
clapp-packages-repo/packages/hello-python/main.py,sha256=Dy-Ov-Vumj8oQYI6qKWU6fIKD0gCB8b7KzAJVrGyLMg,1429
|
58
|
+
clapp-packages-repo/packages/hello-python/manifest.json,sha256=fJOVJk_2rwpRJ6IeWMPieklJD3gAR279jvuqRH69s90,179
|
59
59
|
clapp-packages-repo/packages/test-app/main.py,sha256=rN4Zo9u53bIVjcUlul059knx6v-2Cd1MFftPS57FIRU,33
|
60
60
|
clapp-packages-repo/packages/test-app/manifest.json,sha256=kJe4sjYdPRNZD5hEeca80jj3lxeEWBMJoZ59RW7tiKI,118
|
61
61
|
clapp-packages-repo/packages/test-app2/main.py,sha256=lHkbjTmehFY4VuYYF2dYiVBH7W0oqHHeY0I5W85iPTY,35
|
62
62
|
clapp-packages-repo/packages/test-app2/manifest.json,sha256=vshXJrtRxBc_ISM6E8KT5BSmveMbjWszenlgxgSN86w,121
|
63
|
-
clapp_pm-1.0.
|
64
|
-
clapp_pm-1.0.
|
63
|
+
clapp_pm-1.0.20.data/data/version.json,sha256=FtynQTbhdQzZL8px_bdoOmnDJ3uCbv6bwgSZdh9q4vg,239
|
64
|
+
clapp_pm-1.0.20.dist-info/licenses/LICENSE,sha256=_hryv9pKR6udRexceUYuoYCJGmYBz7e-vRuFWmm38UY,1075
|
65
65
|
docs/developer_guide.md,sha256=B-S141TSNy7e8T9KaV6Fr-ZAFhYqqgcwqWijjX0C2Xc,7336
|
66
|
-
packages/hello-python/main.py,sha256=Dy-Ov-Vumj8oQYI6qKWU6fIKD0gCB8b7KzAJVrGyLMg,1429
|
67
|
-
packages/hello-python/manifest.json,sha256=fJOVJk_2rwpRJ6IeWMPieklJD3gAR279jvuqRH69s90,179
|
68
|
-
packages/test-app/main.py,sha256=rN4Zo9u53bIVjcUlul059knx6v-2Cd1MFftPS57FIRU,33
|
69
|
-
packages/test-app/manifest.json,sha256=kJe4sjYdPRNZD5hEeca80jj3lxeEWBMJoZ59RW7tiKI,118
|
70
|
-
packages/test-app2/main.py,sha256=lHkbjTmehFY4VuYYF2dYiVBH7W0oqHHeY0I5W85iPTY,35
|
71
|
-
packages/test-app2/manifest.json,sha256=vshXJrtRxBc_ISM6E8KT5BSmveMbjWszenlgxgSN86w,121
|
72
66
|
templates/dart/manifest.json,sha256=ycVKZxrArzcSoRZ5LKKe8aOerwk5Z-7VX0td86aim0M,267
|
73
67
|
templates/lua/manifest.json,sha256=CRIy0dP6Pr3vH6IV4dObGs4KqqJ_sURsY0wAgK2av7E,262
|
74
68
|
templates/python/README.md,sha256=AqVgCZ-cwXBuDHFoJdYkAHAuB6SjSjqXQrjhLu0q7cc,964
|
@@ -77,8 +71,8 @@ templates/python/manifest.json,sha256=hjmKqsEkWEBTwxFgm35MkvuwWZ2CQWq9Zo8uHodqHr
|
|
77
71
|
test-app/README.md,sha256=AqVgCZ-cwXBuDHFoJdYkAHAuB6SjSjqXQrjhLu0q7cc,964
|
78
72
|
test-app/main.py,sha256=24IEuyHSuPWJp2-xYhInUNEWqeueGxAO3NBgHkEgLdQ,1562
|
79
73
|
test-app/manifest.json,sha256=MM1nl5Bljrnsik3fwsrgFBchfgwIb2REoBwwzNpFHQU,284
|
80
|
-
clapp_pm-1.0.
|
81
|
-
clapp_pm-1.0.
|
82
|
-
clapp_pm-1.0.
|
83
|
-
clapp_pm-1.0.
|
84
|
-
clapp_pm-1.0.
|
74
|
+
clapp_pm-1.0.20.dist-info/METADATA,sha256=yMASz7ZaVYc8WTMVlHRigxdojDkHqqCXEJ7isHs4h8k,3980
|
75
|
+
clapp_pm-1.0.20.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
76
|
+
clapp_pm-1.0.20.dist-info/entry_points.txt,sha256=7j-3pQVpQfnaVzUV83g7zlCA30ePlnXkhHLAGGz9xrQ,36
|
77
|
+
clapp_pm-1.0.20.dist-info/top_level.txt,sha256=PDW9iD4QCnGlt2SkHs89m5CsQQOOCsWm_l99B6CIIio,448
|
78
|
+
clapp_pm-1.0.20.dist-info/RECORD,,
|
cli_commands.py
CHANGED
@@ -5,6 +5,7 @@ from installer import install_package, uninstall_package, create_package_from_di
|
|
5
5
|
from package_registry import list_packages, get_manifest
|
6
6
|
from dependency_resolver import get_dependency_report, get_system_dependency_report
|
7
7
|
from manifest_validator import validate_manifest_file, get_validation_summary
|
8
|
+
from progress_utils import show_success_message, show_error_message, show_info_message, show_warning_message
|
8
9
|
|
9
10
|
# Yeni komut modüllerini import et
|
10
11
|
from publish_command import publish_app
|
@@ -51,30 +52,30 @@ def install_from_remote_legacy(app_name, force=False):
|
|
51
52
|
if not download_url:
|
52
53
|
return False, f"'{app_name}' için indirme URL'si bulunamadı"
|
53
54
|
|
54
|
-
|
55
|
-
|
56
|
-
|
55
|
+
show_info_message(f"📦 {app_name} v{package_info.get('version', '0.0.0')}")
|
56
|
+
show_info_message(f"📝 {package_info.get('description', 'Açıklama yok')}")
|
57
|
+
show_info_message(f"💻 Dil: {package_info.get('language', 'Bilinmiyor')}")
|
57
58
|
|
58
59
|
# Bağımlılıkları göster
|
59
60
|
dependencies = package_info.get('dependencies', [])
|
60
61
|
if dependencies:
|
61
|
-
|
62
|
+
show_info_message(f"🔗 Bağımlılıklar: {', '.join(dependencies)}")
|
62
63
|
|
63
|
-
|
64
|
+
show_info_message(f"⬇️ İndiriliyor: {download_url}")
|
64
65
|
|
65
66
|
# Paketi yükle
|
66
67
|
success, message = install_package(download_url, force)
|
67
68
|
|
68
69
|
if success:
|
69
|
-
|
70
|
+
show_success_message(message)
|
70
71
|
|
71
72
|
# Bağımlılık kontrolü
|
72
|
-
|
73
|
+
show_info_message("🔍 Bağımlılıklar kontrol ediliyor...")
|
73
74
|
dep_report = get_dependency_report(app_name)
|
74
75
|
print(dep_report)
|
75
76
|
|
76
77
|
else:
|
77
|
-
|
78
|
+
show_error_message(message)
|
78
79
|
|
79
80
|
return success, message
|
80
81
|
|
@@ -152,15 +153,15 @@ def upgrade_package(app_name):
|
|
152
153
|
|
153
154
|
remote_version = remote_package.get('version', '0.0.0')
|
154
155
|
|
155
|
-
|
156
|
-
|
157
|
-
|
156
|
+
show_info_message(f"📦 {app_name}")
|
157
|
+
show_info_message(f"📱 Yerel sürüm: {local_version}")
|
158
|
+
show_info_message(f"🌐 Uzak sürüm: {remote_version}")
|
158
159
|
|
159
160
|
# Sürüm karşılaştırması (basit string karşılaştırması)
|
160
161
|
if local_version == remote_version:
|
161
162
|
return True, f"'{app_name}' zaten güncel (v{local_version})"
|
162
163
|
|
163
|
-
|
164
|
+
show_info_message(f"🔄 Güncelleme mevcut: {local_version} → {remote_version}")
|
164
165
|
|
165
166
|
# Güncelleme için yeniden yükle
|
166
167
|
return install_from_remote(app_name, force=True)
|
@@ -181,13 +182,13 @@ def publish_package(app_path):
|
|
181
182
|
if not os.path.isdir(app_path):
|
182
183
|
return False, f"'{app_path}' bir dizin değil"
|
183
184
|
|
184
|
-
|
185
|
+
show_info_message(f"📁 Paket hazırlanıyor: {app_path}")
|
185
186
|
|
186
187
|
# Manifest doğrulama
|
187
188
|
manifest_path = os.path.join(app_path, "manifest.json")
|
188
189
|
is_valid, errors = validate_manifest_file(manifest_path)
|
189
190
|
|
190
|
-
|
191
|
+
show_info_message("🔍 Manifest doğrulanıyor...")
|
191
192
|
print(get_validation_summary(errors))
|
192
193
|
|
193
194
|
if not is_valid:
|
@@ -197,15 +198,15 @@ def publish_package(app_path):
|
|
197
198
|
success, message, output_file = create_package_from_directory(app_path)
|
198
199
|
|
199
200
|
if success:
|
200
|
-
|
201
|
-
|
201
|
+
show_success_message(message)
|
202
|
+
show_info_message("\n📋 Yayınlama talimatları:")
|
202
203
|
print("1. Oluşturulan .clapp.zip dosyasını GitHub'a yükleyin")
|
203
204
|
print("2. packages.json dosyasını güncelleyin")
|
204
205
|
print("3. Pull request oluşturun")
|
205
206
|
print(f"\n📁 Paket dosyası: {output_file}")
|
206
207
|
|
207
208
|
else:
|
208
|
-
|
209
|
+
show_error_message(message)
|
209
210
|
|
210
211
|
return success, message
|
211
212
|
|
@@ -219,14 +220,14 @@ def search_remote_packages(query):
|
|
219
220
|
Returns:
|
220
221
|
tuple: (success: bool, message: str)
|
221
222
|
"""
|
222
|
-
|
223
|
+
show_info_message(f"🔍 Arama yapılıyor: '{query}'")
|
223
224
|
|
224
225
|
results = search_packages(query)
|
225
226
|
|
226
227
|
if not results:
|
227
228
|
return False, f"'{query}' için sonuç bulunamadı"
|
228
229
|
|
229
|
-
|
230
|
+
show_success_message(f"{len(results)} sonuç bulundu:\n")
|
230
231
|
|
231
232
|
for package in results:
|
232
233
|
name = package.get('name', 'Bilinmiyor')
|
@@ -323,25 +324,25 @@ def check_system_health():
|
|
323
324
|
Returns:
|
324
325
|
tuple: (success: bool, message: str)
|
325
326
|
"""
|
326
|
-
|
327
|
+
show_info_message("🏥 Sistem Sağlık Kontrolü")
|
327
328
|
print("=" * 40)
|
328
329
|
|
329
330
|
# Bağımlılık kontrolü
|
330
|
-
|
331
|
+
show_info_message("🔍 Bağımlılıklar kontrol ediliyor...")
|
331
332
|
dep_report = get_system_dependency_report()
|
332
333
|
print(dep_report)
|
333
334
|
|
334
335
|
# Uzak bağlantı kontrolü
|
335
|
-
|
336
|
+
show_info_message("🌐 Uzak bağlantı kontrol ediliyor...")
|
336
337
|
from remote_registry import check_remote_connectivity
|
337
338
|
|
338
339
|
if check_remote_connectivity():
|
339
|
-
|
340
|
+
show_success_message("Uzak paket deposuna bağlantı başarılı")
|
340
341
|
else:
|
341
|
-
|
342
|
+
show_error_message("Uzak paket deposuna bağlantı kurulamadı")
|
342
343
|
|
343
344
|
# Manifest doğrulama
|
344
|
-
|
345
|
+
show_info_message("\n🔍 Tüm manifest'ler doğrulanıyor...")
|
345
346
|
local_packages = list_packages()
|
346
347
|
invalid_count = 0
|
347
348
|
|
@@ -352,13 +353,13 @@ def check_system_health():
|
|
352
353
|
|
353
354
|
is_valid, errors = validate_manifest_file(manifest_path)
|
354
355
|
if not is_valid:
|
355
|
-
|
356
|
+
show_error_message(f"{app_name}: Geçersiz manifest")
|
356
357
|
invalid_count += 1
|
357
358
|
|
358
359
|
if invalid_count == 0:
|
359
|
-
|
360
|
+
show_success_message("Tüm manifest'ler geçerli")
|
360
361
|
else:
|
361
|
-
|
362
|
+
show_error_message(f"{invalid_count} geçersiz manifest bulundu")
|
362
363
|
|
363
364
|
return True, "Sistem sağlık kontrolü tamamlandı"
|
364
365
|
|
install_command.py
CHANGED
@@ -18,6 +18,7 @@ from pathlib import Path
|
|
18
18
|
from typing import Tuple, Optional, Dict, Any
|
19
19
|
|
20
20
|
from manifest_validator import validate_manifest_verbose
|
21
|
+
from progress_utils import download_with_progress, extract_with_progress, show_success_message, show_error_message
|
21
22
|
|
22
23
|
def get_apps_directory() -> str:
|
23
24
|
"""Uygulamaların kurulacağı dizini döndürür"""
|
@@ -91,21 +92,18 @@ def download_app_from_github(app_info: Dict[str, Any], temp_dir: str) -> Tuple[b
|
|
91
92
|
else:
|
92
93
|
return False, f"Desteklenmeyen repo URL: {repo_url}"
|
93
94
|
|
94
|
-
|
95
|
+
# Progress bar ile indir
|
96
|
+
zip_path = os.path.join(temp_dir, "repo.zip")
|
97
|
+
success = download_with_progress(zip_url, zip_path, f"📦 {app_name} indiriliyor")
|
95
98
|
|
96
|
-
|
97
|
-
|
98
|
-
if response.status_code != 200:
|
99
|
-
return False, f"İndirme hatası: {response.status_code}"
|
99
|
+
if not success:
|
100
|
+
return False, "İndirme başarısız"
|
100
101
|
|
101
|
-
#
|
102
|
-
|
103
|
-
with open(zip_path, 'wb') as f:
|
104
|
-
f.write(response.content)
|
102
|
+
# Progress bar ile çıkar
|
103
|
+
success = extract_with_progress(zip_path, temp_dir, f"📦 {app_name} çıkarılıyor")
|
105
104
|
|
106
|
-
|
107
|
-
|
108
|
-
zip_ref.extractall(temp_dir)
|
105
|
+
if not success:
|
106
|
+
return False, "Çıkarma başarısız"
|
109
107
|
|
110
108
|
# Çıkarılan klasörü bul (genellikle repo-main formatında)
|
111
109
|
extracted_folders = [d for d in os.listdir(temp_dir) if os.path.isdir(os.path.join(temp_dir, d))]
|
@@ -156,6 +154,8 @@ def install_app_locally(app_name: str, source_path: str) -> Tuple[bool, str]:
|
|
156
154
|
shutil.rmtree(target_path)
|
157
155
|
return False, f"Manifest doğrulama hatası: {errors}"
|
158
156
|
|
157
|
+
show_success_message(f"'{app_name}' başarıyla yüklendi!")
|
158
|
+
|
159
159
|
# Bağımlılık çözümleme entegrasyonu
|
160
160
|
print("5️⃣ Bağımlılıklar kontrol ediliyor...")
|
161
161
|
from dependency_resolver import check_and_install_python_dependencies, check_and_install_lua_dependencies, check_engine_availability
|
installer.py
CHANGED
@@ -6,6 +6,7 @@ import shutil
|
|
6
6
|
import json
|
7
7
|
from manifest_validator import validate_manifest_verbose
|
8
8
|
from package_registry import app_exists
|
9
|
+
from progress_utils import download_with_progress, extract_with_progress, copy_with_progress, show_success_message, show_error_message
|
9
10
|
|
10
11
|
def find_app_folder(extract_path, app_name):
|
11
12
|
"""
|
@@ -81,6 +82,8 @@ def install_package(source, force=False):
|
|
81
82
|
if os.path.exists(target_dir):
|
82
83
|
shutil.rmtree(target_dir)
|
83
84
|
shutil.copytree(app_real_folder, target_dir)
|
85
|
+
|
86
|
+
show_success_message(f"'{app_name}' başarıyla yüklendi!")
|
84
87
|
return True, f"✅ '{app_name}' başarıyla yüklendi!"
|
85
88
|
except Exception as e:
|
86
89
|
return False, f"Yükleme hatası: {e}"
|
@@ -100,8 +103,6 @@ def download_package(url, temp_dir):
|
|
100
103
|
str or None: İndirilen dosyanın yolu veya None
|
101
104
|
"""
|
102
105
|
try:
|
103
|
-
print(f"Paket indiriliyor: {url}")
|
104
|
-
|
105
106
|
# Dosya adını URL'den çıkar
|
106
107
|
filename = os.path.basename(url)
|
107
108
|
if not filename.endswith('.zip'):
|
@@ -109,14 +110,16 @@ def download_package(url, temp_dir):
|
|
109
110
|
|
110
111
|
zip_path = os.path.join(temp_dir, filename)
|
111
112
|
|
112
|
-
#
|
113
|
-
|
113
|
+
# Progress bar ile indir
|
114
|
+
success = download_with_progress(url, zip_path, f"📦 {filename} indiriliyor")
|
114
115
|
|
115
|
-
|
116
|
-
|
116
|
+
if success:
|
117
|
+
return zip_path
|
118
|
+
else:
|
119
|
+
return None
|
117
120
|
|
118
121
|
except Exception as e:
|
119
|
-
|
122
|
+
show_error_message(f"İndirme hatası: {e}")
|
120
123
|
return None
|
121
124
|
|
122
125
|
def extract_package(zip_path, extract_path):
|
@@ -134,12 +137,14 @@ def extract_package(zip_path, extract_path):
|
|
134
137
|
# Çıkarma dizinini oluştur
|
135
138
|
os.makedirs(extract_path, exist_ok=True)
|
136
139
|
|
137
|
-
#
|
138
|
-
|
139
|
-
|
140
|
+
# Progress bar ile çıkar
|
141
|
+
filename = os.path.basename(zip_path)
|
142
|
+
success = extract_with_progress(zip_path, extract_path, f"📦 {filename} çıkarılıyor")
|
140
143
|
|
141
|
-
|
142
|
-
|
144
|
+
if success:
|
145
|
+
return True, "Paket başarıyla çıkarıldı"
|
146
|
+
else:
|
147
|
+
return False, "Çıkarma hatası"
|
143
148
|
|
144
149
|
except zipfile.BadZipFile:
|
145
150
|
return False, "Geçersiz zip dosyası"
|
@@ -259,6 +264,7 @@ def install_from_directory(source_dir, force=False):
|
|
259
264
|
# Dosyaları kopyala
|
260
265
|
shutil.copytree(source_dir, target_dir)
|
261
266
|
|
267
|
+
show_success_message(f"'{app_name}' başarıyla yüklendi!")
|
262
268
|
return True, f"✅ '{app_name}' başarıyla yüklendi!"
|
263
269
|
|
264
270
|
except Exception as e:
|
version.py
CHANGED
packages/hello-python/main.py
DELETED
@@ -1,49 +0,0 @@
|
|
1
|
-
#!/usr/bin/env python3
|
2
|
-
"""
|
3
|
-
Hello Python - Basit Python merhaba dünya uygulaması
|
4
|
-
clapp paket yöneticisi için örnek uygulama
|
5
|
-
"""
|
6
|
-
|
7
|
-
import sys
|
8
|
-
import os
|
9
|
-
from datetime import datetime
|
10
|
-
|
11
|
-
def main():
|
12
|
-
"""Ana fonksiyon"""
|
13
|
-
print("🐍 Merhaba Python Dünyası!")
|
14
|
-
print("=" * 40)
|
15
|
-
|
16
|
-
# Uygulama bilgileri
|
17
|
-
print(f"📦 Uygulama: hello-python")
|
18
|
-
print(f"🔢 Sürüm: 1.0.0")
|
19
|
-
print(f"💻 Dil: Python {sys.version.split()[0]}")
|
20
|
-
print(f"📅 Tarih: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
|
21
|
-
|
22
|
-
# Sistem bilgileri
|
23
|
-
print(f"\n🖥️ Sistem Bilgileri:")
|
24
|
-
print(f" İşletim Sistemi: {os.name}")
|
25
|
-
print(f" Python Sürümü: {sys.version}")
|
26
|
-
print(f" Çalışma Dizini: {os.getcwd()}")
|
27
|
-
|
28
|
-
# Basit hesaplama
|
29
|
-
print(f"\n🧮 Basit Hesaplama:")
|
30
|
-
a, b = 15, 25
|
31
|
-
print(f" {a} + {b} = {a + b}")
|
32
|
-
print(f" {a} * {b} = {a * b}")
|
33
|
-
|
34
|
-
# Dosya listesi
|
35
|
-
print(f"\n📁 Mevcut Dizin İçeriği:")
|
36
|
-
try:
|
37
|
-
files = os.listdir('.')
|
38
|
-
for i, file in enumerate(files[:5], 1):
|
39
|
-
print(f" {i}. {file}")
|
40
|
-
if len(files) > 5:
|
41
|
-
print(f" ... ve {len(files) - 5} dosya daha")
|
42
|
-
except Exception as e:
|
43
|
-
print(f" Dosya listesi alınamadı: {e}")
|
44
|
-
|
45
|
-
print(f"\n✅ hello-python uygulaması başarıyla çalıştı!")
|
46
|
-
print("🎉 clapp paket yöneticisine hoş geldiniz!")
|
47
|
-
|
48
|
-
if __name__ == "__main__":
|
49
|
-
main()
|
packages/test-app/main.py
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
print("Test app çalışıyor!")
|
packages/test-app/manifest.json
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"name": "test-app", "version": "1.0.0", "language": "python", "description": "Test uygulaması", "entry": "main.py"}
|
packages/test-app2/main.py
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
print("Test app 2 çalışıyor!")
|
packages/test-app2/manifest.json
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"name": "test-app2", "version": "1.0.0", "language": "python", "description": "Test uygulaması 2", "entry": "main.py"}
|
File without changes
|
File without changes
|
File without changes
|