clapp-pm 1.0.18__py3-none-any.whl → 1.0.19__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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "app_name": "clapp",
3
- "version": "1.0.18",
3
+ "version": "1.0.19",
4
4
  "author": "Melih Burak Memiş",
5
5
  "description": "Basit ve güçlü paket yöneticisi",
6
6
  "source": "https://github.com/melihburak/clapp",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: clapp-pm
3
- Version: 1.0.18
3
+ Version: 1.0.19
4
4
  Summary: Lightweight cross-language app manager for Python and Lua
5
5
  Home-page: https://github.com/mburakmmm/clapp
6
6
  Author: Melih Burak Memiş
@@ -2,26 +2,26 @@ 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=7tXrBE0pPkuaFIbsIGXg3RxH7GwisL-Zz2N2oMGe2GQ,12682
5
+ cli_commands.py,sha256=CLKimHefiMjXzBfS4wHiG1tj7C54BpwVIlVU_fDjRqI,12740
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
9
  install_command.py,sha256=1Ogy_4nOsnLXzoUBys9yeLf5jKkGv9C40wuGZo2COC0,9445
10
10
  installer.py,sha256=EkQ5Z1Cq_Z5u_Ssv2Nc8hryI5E97x4D1QVjSqEHe0dE,10619
11
11
  list_command.py,sha256=qbeocvrg2eXRklxbYS3audQhYHGXTlMBk_tNh1cMxd0,8391
12
- main.py,sha256=sDbezA6-irQ8QDRvA8wi7rkfyx73Dn7MWMCmlDiTKbI,23590
13
- manifest_schema.py,sha256=IxfKuYgcIhILJrDMOm5vjSJn2jp7hPpUoxtjPMCPvbE,2201
14
- manifest_validator.py,sha256=MTI6c_sYfVakQ6aQUu5_qkukTh4H1FcSrT4uRdE6xIg,7990
12
+ main.py,sha256=uf2-LzBBFIwIiyg1kcyZG4J1B9f5U33VHieBXu1uLi8,23889
13
+ manifest_schema.py,sha256=qR6dIpYL1zwAJmrij05gkgE_urN3qVamoUi2BgR7Lv4,2801
14
+ manifest_validator.py,sha256=JW0mETHDQCSMhodZ5sntr5KPU8T5LYv4IiVoAp4zOIY,8092
15
15
  package_registry.py,sha256=Rco15cvz-6lpCEDdCzwGZNCKtvVhlFIsEPy-WFAESMM,4233
16
- package_runner.py,sha256=jbn9OJDU4p-v63dO66C5EBSbT0dlWQIjtp7x2VE6lU0,2758
17
- package_signing.py,sha256=CdJKLNQLpQJmckgatOnnYDl_4Ve_U1tgWFlzvhXLhq8,12991
16
+ package_runner.py,sha256=GqLPlQRxh7g3bDgGDSVpmHdeRXaP5f6s8kp8QVnw5LM,5783
17
+ package_signing.py,sha256=ModMAzLk08rkI6zd8QKhyCH5BFbB-7dy8pwqKYatFQo,4579
18
18
  post_install_hint.py,sha256=wjMPCgRurZiGu6hv_se-XA36KqBCdeYdRCD1q7FrJzQ,4918
19
19
  publish_command.py,sha256=P05AFbu_mxcc1yAiwShN5Yi9PX1o_7TFXD1mowJcqJE,8589
20
20
  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=v2-Js_gwcyS6cS3GUE0svFpltW1QaNxMWqolPkiYckc,224
24
+ version.py,sha256=OnZFRa6JP1bAWkOBVf8P5NTFNziBsBUhGuKbE1Kzuy4,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
@@ -60,16 +60,25 @@ clapp-packages-repo/packages/test-app/main.py,sha256=rN4Zo9u53bIVjcUlul059knx6v-
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.18.data/data/version.json,sha256=vjVSIoBpTGhKmQn_whZcLBQvZROYh0bwmu0koOga7GE,239
64
- clapp_pm-1.0.18.dist-info/licenses/LICENSE,sha256=_hryv9pKR6udRexceUYuoYCJGmYBz7e-vRuFWmm38UY,1075
63
+ clapp_pm-1.0.19.data/data/version.json,sha256=XPwOQqKgrCzt75qizoYTYTOOtnYG9KEw9v0kX_E7OV0,239
64
+ clapp_pm-1.0.19.dist-info/licenses/LICENSE,sha256=_hryv9pKR6udRexceUYuoYCJGmYBz7e-vRuFWmm38UY,1075
65
+ docs/developer_guide.md,sha256=B-S141TSNy7e8T9KaV6Fr-ZAFhYqqgcwqWijjX0C2Xc,7336
65
66
  packages/hello-python/main.py,sha256=Dy-Ov-Vumj8oQYI6qKWU6fIKD0gCB8b7KzAJVrGyLMg,1429
66
67
  packages/hello-python/manifest.json,sha256=fJOVJk_2rwpRJ6IeWMPieklJD3gAR279jvuqRH69s90,179
67
68
  packages/test-app/main.py,sha256=rN4Zo9u53bIVjcUlul059knx6v-2Cd1MFftPS57FIRU,33
68
69
  packages/test-app/manifest.json,sha256=kJe4sjYdPRNZD5hEeca80jj3lxeEWBMJoZ59RW7tiKI,118
69
70
  packages/test-app2/main.py,sha256=lHkbjTmehFY4VuYYF2dYiVBH7W0oqHHeY0I5W85iPTY,35
70
71
  packages/test-app2/manifest.json,sha256=vshXJrtRxBc_ISM6E8KT5BSmveMbjWszenlgxgSN86w,121
71
- clapp_pm-1.0.18.dist-info/METADATA,sha256=CV70wSEfsj7lpDkbQqqNBmzwIjqoAy-1Zech_-SRp8c,3980
72
- clapp_pm-1.0.18.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
73
- clapp_pm-1.0.18.dist-info/entry_points.txt,sha256=7j-3pQVpQfnaVzUV83g7zlCA30ePlnXkhHLAGGz9xrQ,36
74
- clapp_pm-1.0.18.dist-info/top_level.txt,sha256=WMvIV8nU6pIZGL4xalAcOVmjBDjI6NoCd_Os3rdT9bI,433
75
- clapp_pm-1.0.18.dist-info/RECORD,,
72
+ templates/dart/manifest.json,sha256=ycVKZxrArzcSoRZ5LKKe8aOerwk5Z-7VX0td86aim0M,267
73
+ templates/lua/manifest.json,sha256=CRIy0dP6Pr3vH6IV4dObGs4KqqJ_sURsY0wAgK2av7E,262
74
+ templates/python/README.md,sha256=AqVgCZ-cwXBuDHFoJdYkAHAuB6SjSjqXQrjhLu0q7cc,964
75
+ templates/python/main.py,sha256=24IEuyHSuPWJp2-xYhInUNEWqeueGxAO3NBgHkEgLdQ,1562
76
+ templates/python/manifest.json,sha256=hjmKqsEkWEBTwxFgm35MkvuwWZ2CQWq9Zo8uHodqHrE,273
77
+ test-app/README.md,sha256=AqVgCZ-cwXBuDHFoJdYkAHAuB6SjSjqXQrjhLu0q7cc,964
78
+ test-app/main.py,sha256=24IEuyHSuPWJp2-xYhInUNEWqeueGxAO3NBgHkEgLdQ,1562
79
+ test-app/manifest.json,sha256=MM1nl5Bljrnsik3fwsrgFBchfgwIb2REoBwwzNpFHQU,284
80
+ clapp_pm-1.0.19.dist-info/METADATA,sha256=iuBWYnuIEotxHmSd-FXUKu15kOJNUPYoIGG7Udzncsk,3980
81
+ clapp_pm-1.0.19.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
82
+ clapp_pm-1.0.19.dist-info/entry_points.txt,sha256=7j-3pQVpQfnaVzUV83g7zlCA30ePlnXkhHLAGGz9xrQ,36
83
+ clapp_pm-1.0.19.dist-info/top_level.txt,sha256=sXrnwBW_jVjAEv4wOWMwbUXRZ22PpUseU9O9XOnCtFY,457
84
+ clapp_pm-1.0.19.dist-info/RECORD,,
@@ -6,6 +6,7 @@ clapp_core
6
6
  clean_command
7
7
  cli_commands
8
8
  dependency_resolver
9
+ docs
9
10
  doctor_command
10
11
  info_command
11
12
  install_command
@@ -22,6 +23,8 @@ post_install_hint
22
23
  publish_command
23
24
  remote_registry
24
25
  smart_search
26
+ templates
27
+ test-app
25
28
  uninstall_command
26
29
  validate_command
27
30
  version
cli_commands.py CHANGED
@@ -118,7 +118,11 @@ def list_installed_apps(format_type="table", language_filter=None, search_term=N
118
118
  tuple: (success: bool, message: str)
119
119
  """
120
120
  try:
121
- output = list_apps(format_type, language_filter, search_term)
121
+ output = list_apps(
122
+ format_type,
123
+ language_filter or "",
124
+ search_term or ""
125
+ )
122
126
  print(output)
123
127
  return True, "Liste gösterildi"
124
128
  except Exception as e:
@@ -0,0 +1,361 @@
1
+ # clapp Geliştirici Rehberi
2
+
3
+ Bu rehber, clapp için uygulama geliştirmek isteyen geliştiriciler için hazırlanmıştır.
4
+
5
+ ## 📋 İçindekiler
6
+
7
+ 1. [Başlangıç](#başlangıç)
8
+ 2. [Manifest Dosyası](#manifest-dosyası)
9
+ 3. [Desteklenen Diller](#desteklenen-diller)
10
+ 4. [Uygulama Yapısı](#uygulama-yapısı)
11
+ 5. [Bağımlılık Yönetimi](#bağımlılık-yönetimi)
12
+ 6. [Test ve Doğrulama](#test-ve-doğrulama)
13
+ 7. [Yayınlama](#yayınlama)
14
+ 8. [En İyi Uygulamalar](#en-iyi-uygulamalar)
15
+
16
+ ## 🚀 Başlangıç
17
+
18
+ ### Yeni Uygulama Oluşturma
19
+
20
+ Yeni bir clapp uygulaması oluşturmak için:
21
+
22
+ ```bash
23
+ # Python uygulaması oluştur
24
+ clapp new python my-app
25
+
26
+ # Lua uygulaması oluştur
27
+ clapp new lua my-lua-app
28
+
29
+ # Diğer diller için
30
+ clapp new dart my-dart-app
31
+ clapp new go my-go-app
32
+ clapp new rust my-rust-app
33
+ ```
34
+
35
+ ### Manuel Oluşturma
36
+
37
+ Eğer `clapp new` komutu henüz mevcut değilse, manuel olarak oluşturabilirsiniz:
38
+
39
+ 1. Yeni bir klasör oluşturun
40
+ 2. `manifest.json` dosyası ekleyin
41
+ 3. Giriş dosyanızı oluşturun
42
+ 4. Gerekli dosyaları ekleyin
43
+
44
+ ## 📄 Manifest Dosyası
45
+
46
+ Her clapp uygulaması bir `manifest.json` dosyasına sahip olmalıdır.
47
+
48
+ ### Zorunlu Alanlar
49
+
50
+ ```json
51
+ {
52
+ "name": "my-app",
53
+ "version": "1.0.0",
54
+ "language": "python",
55
+ "entry": "main.py"
56
+ }
57
+ ```
58
+
59
+ ### Opsiyonel Alanlar
60
+
61
+ ```json
62
+ {
63
+ "name": "my-app",
64
+ "version": "1.0.0",
65
+ "language": "python",
66
+ "entry": "main.py",
67
+ "description": "Uygulama açıklaması",
68
+ "author": "Geliştirici Adı",
69
+ "license": "MIT",
70
+ "dependencies": ["other-app"],
71
+ "tags": ["utility", "tool"],
72
+ "category": "productivity"
73
+ }
74
+ ```
75
+
76
+ ### Alan Açıklamaları
77
+
78
+ - **name**: Uygulama adı (benzersiz olmalı)
79
+ - **version**: Sürüm numarası (semantic versioning önerilir)
80
+ - **language**: Programlama dili (python, lua, dart, go, rust, vb.)
81
+ - **entry**: Giriş dosyası (uygulamanın başlangıç noktası)
82
+ - **description**: Uygulama açıklaması
83
+ - **author**: Geliştirici bilgisi
84
+ - **license**: Lisans bilgisi
85
+ - **dependencies**: Bağımlılık listesi (diğer clapp uygulamaları)
86
+ - **tags**: Etiketler (arama için)
87
+ - **category**: Kategori (store, productivity, game, vb.)
88
+
89
+ ## 🌐 Desteklenen Diller
90
+
91
+ ### Python
92
+ - **Dosya uzantısı**: `.py`
93
+ - **Giriş noktası**: `python main.py`
94
+ - **Örnek**: `main.py`
95
+
96
+ ### Lua
97
+ - **Dosya uzantısı**: `.lua`
98
+ - **Giriş noktası**: `lua main.lua`
99
+ - **Örnek**: `main.lua`
100
+
101
+ ### Dart
102
+ - **Dosya uzantısı**: `.dart`
103
+ - **Giriş noktası**: `dart main.dart`
104
+ - **Örnek**: `main.dart`
105
+
106
+ ### Go
107
+ - **Dosya uzantısı**: `.go`
108
+ - **Giriş noktası**: `go run main.go`
109
+ - **Örnek**: `main.go`
110
+
111
+ ### Rust
112
+ - **Dosya uzantısı**: `.rs`
113
+ - **Giriş noktası**: `cargo run`
114
+ - **Örnek**: `Cargo.toml` + `src/main.rs`
115
+
116
+ ### Node.js
117
+ - **Dosya uzantısı**: `.js`
118
+ - **Giriş noktası**: `node main.js`
119
+ - **Örnek**: `main.js`
120
+
121
+ ### Bash
122
+ - **Dosya uzantısı**: `.sh`
123
+ - **Giriş noktası**: `bash main.sh`
124
+ - **Örnek**: `main.sh`
125
+
126
+ ### Perl
127
+ - **Dosya uzantısı**: `.pl`
128
+ - **Giriş noktası**: `perl main.pl`
129
+ - **Örnek**: `main.pl`
130
+
131
+ ### Ruby
132
+ - **Dosya uzantısı**: `.rb`
133
+ - **Giriş noktası**: `ruby main.rb`
134
+ - **Örnek**: `main.rb`
135
+
136
+ ### PHP
137
+ - **Dosya uzantısı**: `.php`
138
+ - **Giriş noktası**: `php main.php`
139
+ - **Örnek**: `main.php`
140
+
141
+ ## 📁 Uygulama Yapısı
142
+
143
+ ### Temel Yapı
144
+
145
+ ```
146
+ my-app/
147
+ ├── manifest.json # Zorunlu
148
+ ├── main.py # Giriş dosyası (manifest'te belirtilen)
149
+ ├── README.md # Opsiyonel
150
+ ├── requirements.txt # Python bağımlılıkları (opsiyonel)
151
+ └── assets/ # Statik dosyalar (opsiyonel)
152
+ ├── images/
153
+ └── data/
154
+ ```
155
+
156
+ ### Örnek Python Uygulaması
157
+
158
+ **manifest.json:**
159
+ ```json
160
+ {
161
+ "name": "hello-world",
162
+ "version": "1.0.0",
163
+ "language": "python",
164
+ "entry": "main.py",
165
+ "description": "Basit bir Hello World uygulaması",
166
+ "author": "Geliştirici",
167
+ "tags": ["example", "hello"]
168
+ }
169
+ ```
170
+
171
+ **main.py:**
172
+ ```python
173
+ #!/usr/bin/env python3
174
+
175
+ def main():
176
+ print("Merhaba Dünya!")
177
+ print("Bu bir clapp uygulamasıdır.")
178
+
179
+ if __name__ == "__main__":
180
+ main()
181
+ ```
182
+
183
+ ### Örnek Lua Uygulaması
184
+
185
+ **manifest.json:**
186
+ ```json
187
+ {
188
+ "name": "lua-calculator",
189
+ "version": "1.0.0",
190
+ "language": "lua",
191
+ "entry": "main.lua",
192
+ "description": "Basit hesap makinesi",
193
+ "tags": ["calculator", "math"]
194
+ }
195
+ ```
196
+
197
+ **main.lua:**
198
+ ```lua
199
+ #!/usr/bin/env lua
200
+
201
+ function main()
202
+ print("Lua Hesap Makinesi")
203
+ print("2 + 2 = " .. (2 + 2))
204
+ end
205
+
206
+ main()
207
+ ```
208
+
209
+ ## 🔗 Bağımlılık Yönetimi
210
+
211
+ ### clapp Bağımlılıkları
212
+
213
+ Manifest dosyasında diğer clapp uygulamalarını bağımlılık olarak belirtebilirsiniz:
214
+
215
+ ```json
216
+ {
217
+ "name": "my-app",
218
+ "version": "1.0.0",
219
+ "language": "python",
220
+ "entry": "main.py",
221
+ "dependencies": ["database-app", "auth-app"]
222
+ }
223
+ ```
224
+
225
+ ### Sistem Bağımlılıkları
226
+
227
+ Her dil için sistem bağımlılıkları farklı şekilde yönetilir:
228
+
229
+ #### Python
230
+ - `requirements.txt` dosyası kullanın
231
+ - `pip install -r requirements.txt` otomatik çalışır
232
+
233
+ #### Node.js
234
+ - `package.json` dosyası kullanın
235
+ - `npm install` otomatik çalışır
236
+
237
+ #### Rust
238
+ - `Cargo.toml` dosyası kullanın
239
+ - `cargo build` otomatik çalışır
240
+
241
+ ### Bağımlılık Kontrolü
242
+
243
+ ```bash
244
+ # Uygulama bağımlılıklarını kontrol et
245
+ clapp dependency check my-app
246
+
247
+ # Bağımlılık ağacını göster
248
+ clapp dependency tree my-app
249
+ ```
250
+
251
+ ## 🧪 Test ve Doğrulama
252
+
253
+ ### Uygulama Doğrulama
254
+
255
+ ```bash
256
+ # Uygulama klasörünü doğrula
257
+ clapp validate ./my-app
258
+ ```
259
+
260
+ ### Test Çalıştırma
261
+
262
+ ```bash
263
+ # Uygulamayı test et
264
+ clapp run my-app
265
+ ```
266
+
267
+ ### Bağımlılık Testi
268
+
269
+ ```bash
270
+ # Bağımlılıkları test et
271
+ clapp dependency check my-app
272
+ ```
273
+
274
+ ## 📦 Yayınlama
275
+
276
+ ### Yerel Test
277
+
278
+ ```bash
279
+ # Uygulamayı yerel olarak test et
280
+ clapp install ./my-app
281
+ clapp run my-app
282
+ ```
283
+
284
+ ### Paket Oluşturma
285
+
286
+ ```bash
287
+ # Paket oluştur
288
+ clapp publish ./my-app
289
+ ```
290
+
291
+ ### GitHub'a Yükleme
292
+
293
+ ```bash
294
+ # GitHub'a otomatik yükle
295
+ clapp publish ./my-app --push
296
+ ```
297
+
298
+ ## ✅ En İyi Uygulamalar
299
+
300
+ ### 1. İsimlendirme
301
+ - Uygulama adları küçük harf ve tire kullanın: `my-app`
302
+ - Açıklayıcı isimler seçin
303
+ - Benzersiz isimler kullanın
304
+
305
+ ### 2. Sürüm Yönetimi
306
+ - Semantic versioning kullanın: `1.0.0`
307
+ - Her değişiklikte sürüm artırın
308
+ - CHANGELOG.md dosyası ekleyin
309
+
310
+ ### 3. Dokümantasyon
311
+ - README.md dosyası ekleyin
312
+ - Kullanım örnekleri verin
313
+ - API dokümantasyonu ekleyin
314
+
315
+ ### 4. Hata Yönetimi
316
+ - Uygun hata mesajları verin
317
+ - Graceful degradation sağlayın
318
+ - Log dosyaları kullanın
319
+
320
+ ### 5. Güvenlik
321
+ - Hassas bilgileri kodlamayın
322
+ - Input validation yapın
323
+ - Güvenli dosya işlemleri kullanın
324
+
325
+ ### 6. Performans
326
+ - Gereksiz bağımlılıklardan kaçının
327
+ - Hızlı başlangıç sağlayın
328
+ - Bellek kullanımını optimize edin
329
+
330
+ ## 🆘 Yardım
331
+
332
+ ### Hata Ayıklama
333
+
334
+ ```bash
335
+ # Sistem durumunu kontrol et
336
+ clapp doctor
337
+
338
+ # Ortam kontrolü
339
+ clapp check-env
340
+
341
+ # Uygulama konumunu bul
342
+ clapp where my-app
343
+ ```
344
+
345
+ ### Destek
346
+
347
+ - GitHub Issues: [clapp repository](https://github.com/mburakmmm/clapp)
348
+ - Dokümantasyon: Bu rehber
349
+ - Örnekler: `templates/` klasörü
350
+
351
+ ## 📝 Örnekler
352
+
353
+ Daha fazla örnek için `templates/` klasörünü inceleyin:
354
+
355
+ - `templates/python/` - Python örnekleri
356
+ - `templates/lua/` - Lua örnekleri
357
+ - `templates/dart/` - Dart örnekleri
358
+ - `templates/go/` - Go örnekleri
359
+ - `templates/rust/` - Rust örnekleri
360
+
361
+ Her örnek tam çalışan bir uygulama içerir ve kopyalanıp değiştirilebilir.
main.py CHANGED
@@ -33,7 +33,7 @@ from where_command import locate_app_path, list_all_app_locations
33
33
  from version_command import print_version, print_detailed_version
34
34
 
35
35
  # Yeni güvenlik ve performans modülleri
36
- from package_signing import sign_package_file, verify_package_file, check_package_security
36
+ from package_signing import check_package_security
37
37
  from version_manager import check_app_updates, get_app_latest_version, increment_app_version
38
38
  from cache_manager import get_cache_stats, clear_all_caches, download_packages_parallel
39
39
  from smart_search import search_packages, get_search_suggestions, get_search_analytics, clear_search_history
@@ -52,6 +52,9 @@ from dependency_resolver import (
52
52
  handle_dependency_tree
53
53
  )
54
54
 
55
+ # Yeni uygulama oluşturma komutu
56
+ from new_command import handle_new_command
57
+
55
58
  def main():
56
59
  """Ana CLI fonksiyonu"""
57
60
 
@@ -69,6 +72,7 @@ def main():
69
72
  clapp list # Yüklü uygulamaları listele
70
73
  clapp run hello-python # hello-python uygulamasını çalıştır
71
74
  clapp info hello-python # Uygulama bilgilerini göster
75
+ clapp new python my-app # Yeni Python uygulaması oluştur
72
76
 
73
77
  🔧 Yönetim Komutları:
74
78
  clapp install app.zip # ZIP dosyasından uygulama yükle
@@ -228,6 +232,13 @@ def main():
228
232
  dep_tree_parser = dependency_subparsers.add_parser('tree', help='Bağımlılık ağacı')
229
233
  dep_tree_parser.add_argument('app_name', help='Uygulama adı')
230
234
 
235
+ # new komutu (yeni)
236
+ new_parser = subparsers.add_parser('new', help='Yeni uygulama oluştur')
237
+ new_parser.add_argument('language', nargs='?', help='Programlama dili')
238
+ new_parser.add_argument('app_name', nargs='?', help='Uygulama adı')
239
+ new_parser.add_argument('--list', action='store_true', help='Mevcut şablonları listele')
240
+ new_parser.add_argument('--target-dir', help='Hedef dizin (opsiyonel)')
241
+
231
242
  # Argümanları parse et
232
243
  args = parser.parse_args()
233
244
 
@@ -376,22 +387,17 @@ def main():
376
387
  print("❌ Geçersiz dependency komutu")
377
388
  sys.exit(1)
378
389
 
390
+ elif args.command == 'new':
391
+ # Yeni uygulama oluşturma komutu
392
+ success, message = handle_new_command(args)
393
+ if success:
394
+ print(message)
395
+ else:
396
+ print(f"❌ {message}")
397
+ sys.exit(1)
398
+
379
399
  elif args.command == 'security':
380
- if args.action == 'sign':
381
- success, message = sign_package_file(args.package_path)
382
- if success:
383
- print(f"✅ {message}")
384
- else:
385
- print(f"❌ {message}")
386
- sys.exit(1)
387
-
388
- elif args.action == 'verify':
389
- signature_path = args.signature or args.package_path.replace('.zip', '.sig')
390
- success, message = verify_package_file(args.package_path, signature_path)
391
- print(f"{'✅' if success else '❌'} {message}")
392
- sys.exit(0 if success else 1)
393
-
394
- elif args.action == 'check':
400
+ if args.action == 'check':
395
401
  results = check_package_security(args.package_path)
396
402
  print("🔒 Paket Güvenlik Kontrolü")
397
403
  print("=" * 40)
@@ -402,6 +408,9 @@ def main():
402
408
  print("\n⚠️ Uyarılar:")
403
409
  for warning in results['warnings']:
404
410
  print(f" - {warning}")
411
+ else:
412
+ print("❌ İmzalama özelliği geçici olarak devre dışı")
413
+ sys.exit(1)
405
414
 
406
415
  elif args.command == 'update':
407
416
  if args.action == 'check':
manifest_schema.py CHANGED
@@ -42,7 +42,11 @@ def validate_manifest(manifest):
42
42
  # Opsiyonel alanlar
43
43
  optional_fields = {
44
44
  'description': str,
45
- 'dependencies': list
45
+ 'dependencies': list,
46
+ 'author': str,
47
+ 'license': str,
48
+ 'tags': list,
49
+ 'category': str
46
50
  }
47
51
 
48
52
  # Gerekli alanları kontrol et
@@ -52,9 +56,16 @@ def validate_manifest(manifest):
52
56
  if not isinstance(manifest[field], expected_type):
53
57
  return False
54
58
 
55
- # Dil kontrolü
56
- if manifest['language'] not in ['python', 'lua']:
57
- return False
59
+ # Dil kontrolü - package_runner'dan desteklenen dilleri al
60
+ try:
61
+ from package_runner import get_supported_languages
62
+ supported_languages = get_supported_languages()
63
+ if manifest['language'] not in supported_languages:
64
+ return False
65
+ except ImportError:
66
+ # Fallback: Temel diller
67
+ if manifest['language'] not in ['python', 'lua', 'dart', 'go', 'rust', 'node', 'bash', 'perl', 'ruby', 'php']:
68
+ return False
58
69
 
59
70
  # Opsiyonel alanları kontrol et (varsa)
60
71
  for field, expected_type in optional_fields.items():
@@ -79,6 +90,10 @@ def get_schema():
79
90
  },
80
91
  "optional_fields": {
81
92
  "description": "string",
82
- "dependencies": "list"
93
+ "dependencies": "list",
94
+ "author": "string",
95
+ "license": "string",
96
+ "tags": "list",
97
+ "category": "string"
83
98
  }
84
99
  }
manifest_validator.py CHANGED
@@ -39,8 +39,8 @@ def validate_manifest_verbose(manifest):
39
39
  elif field == "language":
40
40
  if not isinstance(value, str):
41
41
  errors.append(f"'{field}' alanı string olmalı")
42
- elif value.lower() not in ["python", "lua"]:
43
- errors.append(f"'{field}' alanı 'python' veya 'lua' olmalı, '{value}' geçersiz")
42
+ elif value.lower() not in ["python", "lua", "dart", "go", "rust", "node", "bash", "perl", "ruby", "php"]:
43
+ errors.append(f"'{field}' alanı desteklenen bir dil olmalı, '{value}' geçersiz")
44
44
  elif field == "entry":
45
45
  if not isinstance(value, str) or not value.strip():
46
46
  errors.append(f"'{field}' alanı boş olmayan bir string olmalı")
@@ -61,7 +61,7 @@ def validate_manifest_verbose(manifest):
61
61
  errors.append(f"'dependencies[{i}]' boş olmayan bir string olmalı")
62
62
 
63
63
  # Bilinmeyen alanları kontrol et
64
- known_fields = set(required_fields.keys()) | {"description", "dependencies"}
64
+ known_fields = set(required_fields.keys()) | {"description", "dependencies", "author", "license", "tags", "category"}
65
65
  for field in manifest.keys():
66
66
  if field not in known_fields:
67
67
  errors.append(f"Bilinmeyen alan: '{field}' (göz ardı edilecek)")