Current section

Files

Jump to
opencode_sdk lib opencode generated file.ex
Raw

lib/opencode/generated/file.ex

defmodule OpenCode.Generated.File do
@moduledoc """
Provides API endpoints related to file
"""
@default_client OpenCode.Client
@doc """
List files
List files and directories in a specified path.
## Options
* `directory`
* `workspace`
* `path`
"""
@spec file_list(opts :: keyword) :: {:ok, [OpenCode.Generated.FileNode.t()]} | :error
def file_list(opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :path, :workspace])
client.request(%{
args: [],
call: {OpenCode.Generated.File, :file_list},
url: "/file",
method: :get,
query: query,
response: [{200, [{OpenCode.Generated.FileNode, :t}]}],
opts: opts
})
end
@doc """
Read file
Read the content of a specified file.
## Options
* `directory`
* `workspace`
* `path`
"""
@spec file_read(opts :: keyword) :: {:ok, OpenCode.Generated.FileContent.t()} | :error
def file_read(opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :path, :workspace])
client.request(%{
args: [],
call: {OpenCode.Generated.File, :file_read},
url: "/file/content",
method: :get,
query: query,
response: [{200, {OpenCode.Generated.FileContent, :t}}],
opts: opts
})
end
@doc """
Get file status
Get the git status of all files in the project.
## Options
* `directory`
* `workspace`
"""
@spec file_status(opts :: keyword) :: {:ok, [OpenCode.Generated.File.t()]} | :error
def file_status(opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :workspace])
client.request(%{
args: [],
call: {OpenCode.Generated.File, :file_status},
url: "/file/status",
method: :get,
query: query,
response: [{200, [{OpenCode.Generated.File, :t}]}],
opts: opts
})
end
@doc """
Find files
Search for files or directories by name or pattern in the project directory.
## Options
* `directory`
* `workspace`
* `query`
* `dirs`
* `type`
* `limit`
"""
@spec find_files(opts :: keyword) :: {:ok, [String.t()]} | :error
def find_files(opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :dirs, :limit, :query, :type, :workspace])
client.request(%{
args: [],
call: {OpenCode.Generated.File, :find_files},
url: "/find/file",
method: :get,
query: query,
response: [{200, [:string]}],
opts: opts
})
end
@doc """
Find symbols
Search for workspace symbols like functions, classes, and variables using LSP.
## Options
* `directory`
* `workspace`
* `query`
"""
@spec find_symbols(opts :: keyword) :: {:ok, [OpenCode.Generated.Symbol.t()]} | :error
def find_symbols(opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :query, :workspace])
client.request(%{
args: [],
call: {OpenCode.Generated.File, :find_symbols},
url: "/find/symbol",
method: :get,
query: query,
response: [{200, [{OpenCode.Generated.Symbol, :t}]}],
opts: opts
})
end
@type find_text_200_json_resp :: %{
absolute_offset: integer,
line_number: integer,
lines: OpenCode.Generated.File.find_text_200_json_resp_lines(),
path: OpenCode.Generated.File.find_text_200_json_resp_path(),
submatches: [OpenCode.Generated.File.find_text_200_json_resp_submatches()]
}
@type find_text_200_json_resp_lines :: %{text: String.t()}
@type find_text_200_json_resp_path :: %{text: String.t()}
@type find_text_200_json_resp_submatches :: %{
end: integer,
match: OpenCode.Generated.File.find_text_200_json_resp_submatches_match(),
start: integer
}
@type find_text_200_json_resp_submatches_match :: %{text: String.t()}
@doc """
Find text
Search for text patterns across files in the project using ripgrep.
## Options
* `directory`
* `workspace`
* `pattern`
"""
@spec find_text(opts :: keyword) ::
{:ok, [OpenCode.Generated.File.find_text_200_json_resp()]} | :error
def find_text(opts \\ []) do
client = opts[:client] || @default_client
query = Keyword.take(opts, [:directory, :pattern, :workspace])
client.request(%{
args: [],
call: {OpenCode.Generated.File, :find_text},
url: "/find",
method: :get,
query: query,
response: [{200, [{OpenCode.Generated.File, :find_text_200_json_resp}]}],
opts: opts
})
end
@type t :: %__MODULE__{added: integer, path: String.t(), removed: integer, status: String.t()}
defstruct [:added, :path, :removed, :status]
@doc false
@spec __fields__(atom) :: keyword
def __fields__(type \\ :t)
def __fields__(:find_text_200_json_resp) do
[
absolute_offset: :integer,
line_number: :integer,
lines: {OpenCode.Generated.File, :find_text_200_json_resp_lines},
path: {OpenCode.Generated.File, :find_text_200_json_resp_path},
submatches: [{OpenCode.Generated.File, :find_text_200_json_resp_submatches}]
]
end
def __fields__(:find_text_200_json_resp_lines) do
[text: :string]
end
def __fields__(:find_text_200_json_resp_path) do
[text: :string]
end
def __fields__(:find_text_200_json_resp_submatches) do
[
end: :integer,
match: {OpenCode.Generated.File, :find_text_200_json_resp_submatches_match},
start: :integer
]
end
def __fields__(:find_text_200_json_resp_submatches_match) do
[text: :string]
end
def __fields__(:t) do
[
added: :integer,
path: :string,
removed: :integer,
status: {:enum, ["added", "deleted", "modified"]}
]
end
end