設定済みのワークスペースサービスに接続する

設定済みのワークスペースサービスに接続し、実験と保持されたファイルを確認して、競合からの復旧を伴う、レビュー済みの 1 ファイル置換を適用します。

Linux 上の Altifigence CLI 0.1.9 を使用して、既存の Digital Design Studio ワークスペースサービスを操作します。サービスのオリジン、ワークスペースへのアクセス、および有効な機能は運用担当者から提供されます。リクエストは、そのサービスのワークスペースファイルと実験を対象とします。

保存した結果を読む前に、終了ステータスが 0 であることを確認してください。標準エラー出力は別に保存し、以下で説明する結果フィールドを確認します。

接続を設定する

ALTI_STUDIO_ENDPOINT に運用担当者から提供されたオリジンを設定します。リモートサービスには HTTPS を使用し、IP ループバックサービスには HTTP を使用できます。パスが空のオリジンを指定し、認証が有効な場合は運用担当者から提供された ALTI_STUDIO_SERVICE_SECRET を設定してください。CLI はこの値を x-service-secret として送信します。各コマンドでは、--endpoint でオリジンを選択することもできます。

実験と保持されたファイルを確認する

接続を設定したら、最大 5 件の実験を一覧表示します。空のワークスペースでは、以下のようなレシートが返されます。HTTP 200 の場合は終了コード 0 で終了します。

alti --json ide service evolve list --limit 5
{"schema":"altifigence.dds.service-receipt.v1","operation":"evolve.list","ok":true,"httpStatus":200,"body":{"runs":[]}}

保持された結果には、サービスワークスペース内の正確なパスを使用します。この例のパスを、アクセスが許可されたワークスペースに存在するファイルのパスに置き換えてください。レスポンスボディは、content を含め、所有者のファイルフィールドを保持します。

alti --json ide service evolve read-file evolve/adder/results/report.md

レビュー済みの 1 ファイルを検索して置換する

ワークスペースのテキスト検索には Linux サービスが必要です。置換に使用するサービスと同じサービスで検索し、一致したファイル、位置、および検索範囲のメタデータを確認してください。各一致には contentHash が含まれます。CLI は truncated と replaceScopeComplete を保持するため、返された範囲を評価できます。

alti --json ide service workspace search --query old_signal --match-case --whole-word

以下を replace.json として保存し、例示用の 64 文字のハッシュを、選択した rtl/top.sv の一致結果にある実際の contentHash に置き換えます。クエリとオプションはレビュー内容と一致させてください。リクエストは 1 ファイルを対象とし、match を省略すると、そのファイル内の一致箇所に置換が適用されます。期待するハッシュにより、更新はレビューしたファイルバージョンに結び付けられます。

{
  "query": "old_signal",
  "replacement": "new_signal",
  "options": {
    "matchCase": true,
    "wholeWord": true
  },
  "paths": [
    "rtl/top.sv"
  ],
  "expectedHashes": {
    "rtl/top.sv": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
  }
}
alti --json ide service workspace replace --request replace.json

競合と設定エラーから復旧する

ファイルが変更されている場合の競合レシートの例を以下に示します。HTTP 409 の場合は終了コード 1 で終了します。同じサービスに対して検索を再実行し、現在の一致箇所とファイルバージョンを確認してから、新しい contentHash で expectedHashes を更新し、新たな置換を送信してください。

{"schema":"altifigence.dds.service-receipt.v1","operation":"workspace.replace","ok":false,"httpStatus":409,"body":{"ok":false,"code":"search_replace_conflict","conflicts":[{"path":"rtl/top.sv","expectedHash":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","actualHash":"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"}],"replacements":0,"files":[]}}

httpStatus: null を伴う STUDIO_ENDPOINT_REQUIRED は終了コード 2 で終了します。運用担当者から提供されたオリジンを設定して再実行してください。HTTP 401 の場合は、対応するサービスシークレットを運用担当者から取得します。置換後にタイムアウトした場合は、現在のファイルを確認して再検索してから、次の更新を行うかどうか判断してください。