Membaca dan mengedit file lokal tersimpan berdasarkan SHA-256

Periksa proyek, tampilkan daftar dan baca file tersimpan, lalu ganti isinya hanya jika SHA-256 yang diharapkan masih cocok.

Gunakan Altifigence CLI 0.1.9 di Linux untuk bekerja dengan file tersimpan di proyek lokal tanpa membuka IDE. Setiap penggantian menyebutkan SHA-256 dari isi yang Anda baca, dan perintah menolaknya jika file tersimpan tidak lagi memiliki SHA-256 tersebut.

Memeriksa proyek

Gunakan jalur absolut ke proyek lokal Anda. Contoh ini menggunakan $HOME/alti-projects/demo-project. Jalankan perintah sebagai pengguna biasa.

set -euo pipefail
PROJECT="$(cd "$HOME/alti-projects/demo-project" && pwd -P)"
WORK="$(mktemp -d)"
alti ide workspace health --project "$PROJECT" > "$WORK/health.json"
jq '{ok, git}' "$WORK/health.json"

health lebih dulu menyelesaikan transaksi file yang tertunda, lalu melaporkan proyek. Pastikan status keluar adalah 0 dan ok sama dengan true. name adalah nama folder proyek dan git menunjukkan apakah proyek memiliki folder .git.

Menampilkan daftar dan membaca file

alti ide workspace files --project "$PROJECT" --limit 100 > "$WORK/files.json"
jq '{total, truncated, first: .files[:5]}' "$WORK/files.json"

files menampilkan daftar file tersimpan sebagai jalur terurut yang relatif terhadap proyek. total menghitung semua file yang terdaftar dan truncated bernilai true jika total melebihi --limit. Batas bawaannya adalah 500 dan maksimumnya 20000. Folder seperti .git, .alti, .altifigence, node_modules, target, dan dist dikecualikan.

Baca satu file teks UTF-8 yang tersimpan. Contoh ini menggunakan notes/review.txt:

alti ide workspace read --project "$PROJECT" notes/review.txt > "$WORK/review.json"
jq '{path, encoding, sha256}' "$WORK/review.json"

Hasil memiliki path, encoding (utf-8), sha256, dan content. sha256 adalah SHA-256 heksadesimal huruf kecil dari isi tersimpan. File hingga 4194304 byte dapat dibaca.

Mengganti satu file

Tulis isi baru ke sebuah file, lalu berikan sha256 yang Anda baca sebagai --expected-sha256:

printf 'Third review\n' > "$WORK/review.txt"
alti ide workspace write --project "$PROJECT" notes/review.txt \
  --expected-sha256 "$(jq -r .sha256 "$WORK/review.json")" \
  --content "$WORK/review.txt" > "$WORK/write.receipt.json"
jq '{outcome}' "$WORK/write.receipt.json"

Pastikan status keluar adalah 0 dan outcome sama dengan committed:

{
  "outcome": "committed"
}

Tanda terima juga memiliki transactionId, generation, recoveryStatus, dan files, tempat setiap entri memiliki path, beforeSha256, dan afterSha256. write mengganti file yang sudah ada. --content - membaca isi baru dari standard input. Batasi isi hingga 4194304 byte.

Mengedit beberapa file sekaligus

Baca setiap file, lalu siapkan array JSON dengan satu entri path, expected_sha256, dan content untuk setiap file:

alti ide workspace read --project "$PROJECT" notes/review.txt > "$WORK/review.json"
alti ide workspace read --project "$PROJECT" notes/todo.txt > "$WORK/todo.json"
jq -s '[
  {path: .[0].path, expected_sha256: .[0].sha256, content: "Fourth review\n"},
  {path: .[1].path, expected_sha256: .[1].sha256, content: "Check the review\n"}
]' "$WORK/review.json" "$WORK/todo.json" > "$WORK/edit.json"
alti ide workspace edit --project "$PROJECT" --request "$WORK/edit.json" \
  > "$WORK/edit.receipt.json"
jq '{outcome, files: [.files[].path]}' "$WORK/edit.receipt.json"

Setelah status keluar 0, kolom tanda terima yang dipilih adalah:

{
  "outcome": "committed",
  "files": [
    "notes/review.txt",
    "notes/todo.txt"
  ]
}

edit memeriksa setiap entri sebelum mengubah file apa pun, dan menerapkan penggantian sebagai satu transaksi. Gunakan 1 hingga 64 entri, satu entri per jalur, masing-masing dengan isi baru. Batasi setiap file hingga 4194304 byte dan isi asli serta isi baru dari semua entri hingga 16777216 byte.

Mengatasi pengeditan yang ditolak

Saat mesin workspace menolak permintaan write atau edit, perintah keluar dengan status 1 dan menulis objek altifigence.ide-workspace-error.v1 dengan message ke standard error. CLI melaporkan input terlalu besar atau permintaan edit yang JSON-nya bukan array di standard error dengan awalan error: dan keluar dengan status 1. Untuk setiap pesan di bawah, tidak ada file yang diubah.

Untuk workspace edit original digest mismatch: notes/review.txt, file berubah setelah Anda membacanya. Baca lagi, tinjau content saat ini, dan ulangi penggantian dengan sha256 yang baru.

Untuk workspace edit has no content change: notes/review.txt, isi baru sama dengan isi tersimpan. Hapus entri itu atau ubah isinya.

Untuk workspace edit transaction contains a duplicate path, gabungkan entri untuk jalur itu menjadi satu entri dengan isi akhir.

Untuk workspace edit SHA-256 digest must be 64 lowercase hexadecimal characters, salin nilai sha256 dari read tanpa perubahan.

Untuk workspace path is outside the editable file surface, gunakan jalur relatif terhadap proyek dari daftar files, tanpa segmen . atau ...

Untuk workspace exceeds 20000 files; narrow the project dari files, buka folder proyek yang lebih kecil.

Membuat, mengganti, dan menghapus file lokal