Ler e editar arquivos locais salvos por SHA-256
Verifique um projeto, liste e leia arquivos salvos e substitua o conteúdo deles somente quando o SHA-256 esperado ainda corresponder.
Use o Altifigence CLI 0.1.9 no Linux para trabalhar com os arquivos salvos de um projeto local sem abrir o IDE. Cada substituição informa o SHA-256 do conteúdo que você leu, e o comando a recusa quando o arquivo salvo não tem mais esse SHA-256.
Verificar o projeto
Use um caminho absoluto para seu projeto local. Este exemplo usa $HOME/alti-projects/demo-project. Execute os comandos com sua conta de usuário comum.
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 primeiro conclui qualquer transação de arquivo pendente e, depois, informa o projeto. Exija o status de saída 0 e ok igual a true. name é o nome da pasta do projeto e git indica se o projeto tem uma pasta .git.
Listar e ler arquivos
alti ide workspace files --project "$PROJECT" --limit 100 > "$WORK/files.json"
jq '{total, truncated, first: .files[:5]}' "$WORK/files.json"files lista os arquivos salvos como caminhos ordenados relativos ao projeto. total conta todos os arquivos listados e truncated é true quando total excede --limit. O limite padrão é 500 e o máximo é 20000. Pastas como .git, .alti, .altifigence, node_modules, target e dist ficam de fora.
Leia um arquivo de texto UTF-8 salvo. Estes exemplos usam notes/review.txt:
alti ide workspace read --project "$PROJECT" notes/review.txt > "$WORK/review.json"
jq '{path, encoding, sha256}' "$WORK/review.json"O resultado tem path, encoding (utf-8), sha256 e content. sha256 é o SHA-256 hexadecimal em minúsculas do conteúdo salvo. É possível ler arquivos de até 4194304 bytes.
Substituir um arquivo
Grave o novo conteúdo em um arquivo e, depois, passe o sha256 que você leu como --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"Exija o status de saída 0 e outcome igual a committed:
{
"outcome": "committed"
}O comprovante também tem transactionId, generation, recoveryStatus e files, em que cada entrada tem path, beforeSha256 e afterSha256. write substitui um arquivo existente. --content - lê o novo conteúdo da entrada padrão. Mantenha o conteúdo em até 4194304 bytes.
Editar vários arquivos juntos
Leia cada arquivo e, depois, prepare um array JSON com uma entrada path, expected_sha256 e content por arquivo:
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"Após o status de saída 0, os campos selecionados do comprovante são:
{
"outcome": "committed",
"files": [
"notes/review.txt",
"notes/todo.txt"
]
}edit verifica todas as entradas antes de alterar qualquer arquivo e aplica as substituições como uma única transação. Use de 1 a 64 entradas, uma entrada por caminho, cada uma com novo conteúdo. Mantenha cada arquivo em até 4194304 bytes e o conteúdo original e novo de todas as entradas em até 16777216 bytes.
Resolver uma edição rejeitada
Quando o mecanismo do espaço de trabalho rejeita uma solicitação write ou edit, o comando termina com o status de saída 1 e grava no erro padrão um objeto altifigence.ide-workspace-error.v1 com uma message. A CLI informa uma entrada grande demais ou uma solicitação de edição cujo JSON não é um array no erro padrão com o prefixo error: e termina com o status de saída 1. Para cada mensagem abaixo, nenhum arquivo é alterado.
Para workspace edit original digest mismatch: notes/review.txt, o arquivo mudou depois que você o leu. Leia-o novamente, revise o content atual dele e repita a substituição com o novo sha256.
Para workspace edit has no content change: notes/review.txt, o novo conteúdo é igual ao conteúdo salvo. Remova essa entrada ou altere o conteúdo dela.
Para workspace edit transaction contains a duplicate path, combine as entradas desse caminho em uma única entrada com o conteúdo final.
Para workspace edit SHA-256 digest must be 64 lowercase hexadecimal characters, copie o valor de sha256 de read sem alterações.
Para workspace path is outside the editable file surface, use um caminho relativo ao projeto da listagem de files, sem segmentos . ou ...
Para workspace exceeds 20000 files; narrow the project vindo de files, abra uma pasta de projeto menor.