artiframe remove

artiframe remove komutu, projenizdeki bir dosyayı güvenli biçimde siler. Sıradan bir dosya silme işleminin çok ötesinde; dosyanın türünü (View mi, Sınıf mı, API mi) otomatik tespit eder, bağlı asset dosyalarını bulur, sınıf kullanımlarını tarar ve her adımda sizden onay alarak veri kaybı riskini en aza indirir.

Kullanım

$ artiframe remove [dosya-yolu] [bayraklar]
BayrakAçıklama
--force / -yOnay sorularını atlayarak tüm adımları otomatik onaylar.
--no-assetsView silinirken ilişkili CSS/JS dosyalarını silmez.
--force-classSınıf başka API dosyalarında kullanılıyor olsa bile silme işlemini zorlar.

Akıllı Dosya Tespiti

Sistem, hedef dosyanın yoluna bakarak hangi silme moduna geçeceğine karar verir:

1. View Silme (public/ dizinindeki sayfalar)

make:view ile oluşturulan bir sayfayı sildiğinizde, sistem sayfanın kaynak kodunu okur. İçindeki href ve src niteliklerini tarayarak bağlı CSS ve JS dosyalarını tespit eder ve bunları da silmek isteyip istemediğinizi sorar.

$ artiframe remove public/panel/reports

⚠️  public/panel/reports.php silinecek. Onaylıyor musunuz? [y/N]: y

⚠️  İlişkili asset dosyaları da silinsin mi?
    - public/assets/css/panel/reports.css
    - public/assets/js/panel/reports.js
    [y/N]: y

  ✅ Deleted: .../public/assets/css/panel/reports.css
  ✅ Deleted: .../public/assets/js/panel/reports.js

✅ public/panel/reports.php silindi.

2. Sınıf Silme (src/ veya app/ dizinleri)

Bir sınıf dosyasını silmeye kalktığınızda, sistem public/api/ altındaki tüm API dosyalarını recursive olarak tarar ve bu sınıfa herhangi bir referans (import, çağrı) olup olmadığını kontrol eder. Eğer kullanım bulunursa, hangi dosyada ve hangi satırlarda kullanıldığını gösterir.

$ artiframe remove src/Service/PaymentService

🚨 PaymentService sınıfı şu API dosyalarında kullanılıyor:
   -> /var/www/project/public/api/standart/payment/charge.php (Lines: 4, 17)

📌 Bu sınıfı silmeden önce ilgili API dosyalarını güncellemeniz önerilir.

❓ Yine de silmek istiyor musunuz? [y/N]: y

✅ src/Service/PaymentService.php silindi.

Güvenlik: Path Traversal Koruması

Hedef dosya proje kök dizininin dışında bir konuma işaret ediyorsa (örn. ../../etc/passwd gibi bir saldırı girişimi), realpath() ile gerçek yol çözümlenir ve proje sınırı dışındaysa işlem anında iptal edilir:

❌ Güvenlik ihlali: Hedef dosya proje dizini dışında!

Uzantısız Kullanım

.php uzantısı opsiyoneldir. Sistem önce verilen yolu tam olarak arar, bulamazsa .php ekleyerek tekrar dener. Hem göreli (proje köküne göre) hem de mutlak yol kullanabilirsiniz.