Betikler
JSON çıktısı, akışlar, çıkış kodları, ortam değişkenleri ve gözetimsiz ya da CI'da çalıştırma.
JSON çıktısı
--json ile stdout yalnızca iki boşlukla girintilenmiş JSON içerir, notlar ve ilerleme stderr'de kalır ve hiçbir şey sorulmaz. Bir liste { items, hasMore, nextCursor } yazdırır, bir API nesnesi API'nin döndürdüğü gibi yazdırılır, elle yazılmış bir komut ise yardımında tanımlanan nesneyi yazdırır.
openemail whoami --json | jq -r .workspaceIdopenemail emails list --status failed --json | jq -r ".items[].id"Bir hata stderr'e tek satır JSON olarak gider ve çıkış kodu bir kişinin alacağıyla aynıdır:
{"error":{"type":"permission_error","code":"insufficient_scope","message":"This API key does not have the domains:write scope.","hint":"The credential is missing a scope this call needs. Use a key that has it, or sign in again with openemail login.","next":null,"status":403,"requestId":"req_7Hc2kQ","param":null,"docUrl":"https://openemail.uk/docs/api/errors#insufficient_scope","exitCode":4}}| Alan | Ne tutar |
|---|---|
| type | API hata türü ya da CLI içindeki bir hata için cli_error, network_error veya internal_error |
| code | insufficient_scope, not_signed_in ya da unknown_flag gibi kararlı bir kod |
| message | Neyin ters gittiği, tek cümleyle |
| hint, next | Ne denenebileceği ve sonra çalıştırılacak komut, ya da null |
| status, requestId, param, docUrl | Hata API'den geldiyse API'den, yoksa null |
| exitCode | Sürecin bittiği çıkış kodu |
Akışlar
Bazı çıktılar, her satırda bir tane olmak üzere JSON nesnelerinden oluşan bir akıştır; böylece bir işlem hattı her öğeyi geldiği anda işleyebilir:
- stdout bir terminal değilken
--allile ya da--ndjsonile bir kaynak listesi.--max <n>o kadar öğeden sonra durur. openemail temp watch --json, her yeni ileti için bir satır.openemail mcp serve, her yönde satır başına bir JSON-RPC iletisi.
openemail contacts list --all > contacts.ndjsonopenemail emails list --status failed --all --max 500 | jq -r .idÇıkış kodları
| Kod | Anlamı |
|---|---|
| 0 | Tamam |
| 1 | Beklenmeyen bir hata, bir sunucu hatası ya da başarısız bir gönderim |
| 2 | Bir kullanım hatası: hatalı bir bağımsız değişken, bilinmeyen bir komut ya da bayrak, sorulamayan bir değer ya da onay, veya CLI'nin kimlik bilgisi göndermeyeceği bir kaynak ya da yol |
| 3 | Oturum açılmamış ya da oturum reddedilmiş, süresi dolmuş veya komut çalışırken kapatılmış |
| 4 | İzin yok: eksik bir kapsam ya da izin, sorulamayan ya da duraklatılmış bir doğrulama kodu, veya tarayıcı oturumu gereken yerde bir API anahtarı |
| 5 | Bulunamadı |
| 6 | Mevcut durumla bir çakışma |
| 7 | Girdi geçersizdi |
| 8 | Hız sınırına takıldı ya da yapay zekâ kotası tükendi |
| 9 | Ağ başarısız oldu ya da zaman aşımına uğradı |
| 10 | İptal edildi: bir onayı ya da istemi reddettiniz |
| 130, 143 | Ctrl+C ile ya da SIGTERM ile durduruldu |
Ortam değişkenleri
| Değişken | Ne yapar |
|---|---|
| OPENEMAIL_API_KEY | Kayıtlı her profil yerine kullanılacak bir API anahtarı |
| OPENEMAIL_PROFILE | Kullanılacak kayıtlı profil |
| OPENEMAIL_BASE_URL | OPENEMAIL_API_KEY, --api-key ve kimlik bilgisi göndermeyen komutlar için API kaynağı. Kayıtlı bir oturum yalnızca oturum açtığı API'ye gider |
| OPENEMAIL_APP_URL | Oturum açma, open ve belge bağlantıları için web uygulamasının kaynağı |
| OPENEMAIL_CONFIG_DIR | Profillerin ve kutu tokenlarının tutulduğu yer, ayarlanmamışsa ~/.openemail |
| OPENEMAIL_NO_UPDATE_CHECK | npm'de asla daha yeni bir sürüm aramayın. OPENEMAIL_DISABLE_UPDATE_NOTICE de aynısını yapar |
| NO_COLOR, FORCE_COLOR=0 | Renk yok |
| CI | Asla sorma, asla tarayıcı açma, asla güncelleme arama. Çoğu CI hizmeti bu olmadan da tanınır |
| VISUAL, EDITOR | send ve reply komutlarının bir gövde için açtığı düzenleyici |
Gözetimsiz çalıştırmalar
CLI yalnızca stdin ve stdout ikisi de terminal olduğunda ve --json, --no-input ya da CI geçerli olmadığında soru sorar. Aksi halde:
- Eksik bir zorunlu değer
2çıkış koduyla durur ve verilmesi gereken bayrağı söyler. - Yıkıcı bir komut,
--yesvermediğiniz süreceRefusing to run unattended. Pass --yes to confirm.iletisi ve2çıkış koduyla durur. - Doğrulama kodu gerektiren bir değişiklik
4çıkış koduyla durur, çünkü kodu kimse yazamaz. Bir API anahtarı kullanın ya da önceopenemail verifyçalıştırın.
CI'da
İşe yalnızca ihtiyaç duyduğu kapsamlara sahip bir API anahtarı verin, onu bir sırda tutun ve OPENEMAIL_API_KEY taşısın. Hiçbir şey kaydedilmez, hiçbir şey sorulmaz ve güncelleme kontrolü çalışmaz.
- name: Tell the team env: OPENEMAIL_API_KEY: ${{ secrets.OPENEMAIL_API_KEY }} run: | npx -y @openemail/[email protected] send \ --from [email protected] \ --to [email protected] \ --subject "Deployed ${{ github.sha }}" \ --text "Build ${{ github.run_number }} is live." \ --idempotency-key "deploy-${{ github.run_id }}"ADDRESS=$(npx -y @openemail/[email protected] temp new --ttl 15)./signup-test.sh "$ADDRESS"npx -y @openemail/[email protected] temp watch --first --json | jq -r .snippetnpx -y @openemail/[email protected] temp delete --yesfailed=$(openemail emails list --status failed --json | jq ".items | length")test "$failed" -eq 0Bir işlem hattının yeniden deneyebileceği bir gönderimde --idempotency-key verin ve onu gönderimi gerekli kılan şeyden, örneğin bir çalıştırma kimliğinden türetin. Adımı yeniden çalıştırmak o zaman iki kez göndermek yerine ilk gönderimi döndürür.