Documentation
¶
Overview ¶
Package external_edit 实现远程文件外部编辑 binder: 仅做依赖装配和 IPC 转发,状态机/编码/审计等业务逻辑都下沉到 external_edit_svc。
Index ¶
- type CompareResult
- type ExternalEdit
- func (e *ExternalEdit) ApplyExternalEditMerge(req MergeApplyRequest) (*SaveResult, error)
- func (e *ExternalEdit) Cleanup()
- func (e *ExternalEdit) CompareExternalEditSession(sessionID string) (*CompareResult, error)
- func (e *ExternalEdit) ContinueExternalEditSession(sessionID string) (*Session, error)
- func (e *ExternalEdit) GetExternalEditSettings() (*Settings, error)
- func (e *ExternalEdit) ListExternalEditSessions() ([]*Session, error)
- func (e *ExternalEdit) OpenExternalEdit(req OpenRequest) (*Session, error)
- func (e *ExternalEdit) PrepareExternalEditMerge(sessionID string) (*MergePrepareResult, error)
- func (e *ExternalEdit) RecoverExternalEditSession(sessionID string) (*Session, error)
- func (e *ExternalEdit) RefreshExternalEditSession(sessionID string) (*Session, error)
- func (e *ExternalEdit) ResolveExternalEditConflict(sessionID, resolution string) (*SaveResult, error)
- func (e *ExternalEdit) SaveExternalEditSession(sessionID string) (*SaveResult, error)
- func (e *ExternalEdit) SaveExternalEditSettings(input SettingsInput) (*Settings, error)
- func (e *ExternalEdit) SelectExternalEditWorkspaceRoot() (string, error)
- func (e *ExternalEdit) SelectExternalEditorExecutable() (string, error)
- func (e *ExternalEdit) Startup(ctx context.Context)
- type LangProvider
- type MergeApplyRequest
- type MergePrepareResult
- type OpenRequest
- type SaveResult
- type Session
- type Settings
- type SettingsInput
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CompareResult ¶
type CompareResult = external_edit_svc.CompareResult
Type aliases 让 Wails 在生成 TS binding 时把 service 内部类型挂在本包下, 前端只需要 import 一个稳定的 external_edit 命名空间。
type ExternalEdit ¶
type ExternalEdit struct {
// contains filtered or unexported fields
}
ExternalEdit 外部编辑 binder:仅依赖 sftpSvc + sshMgr,不直接持有数据库。
func New ¶
func New(appCtx context.Context, lang LangProvider, sftpSvc *sftp_svc.Service, sshMgr *ssh_svc.Manager) *ExternalEdit
New 构造 external edit binder。sftpSvc/sshMgr 由 main.go 创建后注入。
func (*ExternalEdit) ApplyExternalEditMerge ¶
func (e *ExternalEdit) ApplyExternalEditMerge(req MergeApplyRequest) (*SaveResult, error)
func (*ExternalEdit) Cleanup ¶
func (e *ExternalEdit) Cleanup()
Cleanup 关闭 service:watcher / 后台 goroutine / 文件句柄都在 service.Close 里收口。
func (*ExternalEdit) CompareExternalEditSession ¶
func (e *ExternalEdit) CompareExternalEditSession(sessionID string) (*CompareResult, error)
CompareExternalEditSession 只暴露"生成只读差异快照"的能力; 编码 / BOM / round-trip 校验与远端身份确认仍由 service 串行裁决。
func (*ExternalEdit) ContinueExternalEditSession ¶
func (e *ExternalEdit) ContinueExternalEditSession(sessionID string) (*Session, error)
func (*ExternalEdit) GetExternalEditSettings ¶
func (e *ExternalEdit) GetExternalEditSettings() (*Settings, error)
func (*ExternalEdit) ListExternalEditSessions ¶
func (e *ExternalEdit) ListExternalEditSessions() ([]*Session, error)
func (*ExternalEdit) OpenExternalEdit ¶
func (e *ExternalEdit) OpenExternalEdit(req OpenRequest) (*Session, error)
OpenExternalEdit IPC 边界只转发"打开哪个远程文件"的意图; 文本判定、会话复用、编码快照、审计和事件广播全部交由 service 串行裁决。
func (*ExternalEdit) PrepareExternalEditMerge ¶
func (e *ExternalEdit) PrepareExternalEditMerge(sessionID string) (*MergePrepareResult, error)
func (*ExternalEdit) RecoverExternalEditSession ¶
func (e *ExternalEdit) RecoverExternalEditSession(sessionID string) (*Session, error)
func (*ExternalEdit) RefreshExternalEditSession ¶
func (e *ExternalEdit) RefreshExternalEditSession(sessionID string) (*Session, error)
func (*ExternalEdit) ResolveExternalEditConflict ¶
func (e *ExternalEdit) ResolveExternalEditConflict(sessionID, resolution string) (*SaveResult, error)
ResolveExternalEditConflict resolution 只是用户决策信号:overwrite / recreate / reread 的副作用和状态迁移全部封装在 service 内,IPC 层不额外拼分支。
func (*ExternalEdit) SaveExternalEditSession ¶
func (e *ExternalEdit) SaveExternalEditSession(sessionID string) (*SaveResult, error)
SaveExternalEditSession 保存和冲突处理都以 sessionID 作为唯一入口, 桌面事件、审计和状态恢复围绕同一份会话记录运转。
func (*ExternalEdit) SaveExternalEditSettings ¶
func (e *ExternalEdit) SaveExternalEditSettings(input SettingsInput) (*Settings, error)
func (*ExternalEdit) SelectExternalEditWorkspaceRoot ¶
func (e *ExternalEdit) SelectExternalEditWorkspaceRoot() (string, error)
SelectExternalEditWorkspaceRoot 工作区目录由前端选择,但最终是否落盘以后端配置逻辑为准。
func (*ExternalEdit) SelectExternalEditorExecutable ¶
func (e *ExternalEdit) SelectExternalEditorExecutable() (string, error)
SelectExternalEditorExecutable 弹出文件选择器返回用户挑的绝对路径; 真正的可执行性校验留给 service 统一处理,避免桌面端和测试端出现双重规则。
func (*ExternalEdit) Startup ¶
func (e *ExternalEdit) Startup(ctx context.Context)
Startup 保存 Wails ctx 后再启动 service:Emit 回调依赖 ctx 才能 EventsEmit。
type LangProvider ¶
type LangProvider interface {
Lang() string
}
LangProvider 由 system binder 实现,提供当前 UI 语言。
type MergeApplyRequest ¶
type MergeApplyRequest = external_edit_svc.MergeApplyRequest
Type aliases 让 Wails 在生成 TS binding 时把 service 内部类型挂在本包下, 前端只需要 import 一个稳定的 external_edit 命名空间。
type MergePrepareResult ¶
type MergePrepareResult = external_edit_svc.MergePrepareResult
Type aliases 让 Wails 在生成 TS binding 时把 service 内部类型挂在本包下, 前端只需要 import 一个稳定的 external_edit 命名空间。
type OpenRequest ¶
type OpenRequest = external_edit_svc.OpenRequest
Type aliases 让 Wails 在生成 TS binding 时把 service 内部类型挂在本包下, 前端只需要 import 一个稳定的 external_edit 命名空间。
type SaveResult ¶
type SaveResult = external_edit_svc.SaveResult
Type aliases 让 Wails 在生成 TS binding 时把 service 内部类型挂在本包下, 前端只需要 import 一个稳定的 external_edit 命名空间。
type Session ¶
type Session = external_edit_svc.Session
Type aliases 让 Wails 在生成 TS binding 时把 service 内部类型挂在本包下, 前端只需要 import 一个稳定的 external_edit 命名空间。
type Settings ¶
type Settings = external_edit_svc.Settings
Type aliases 让 Wails 在生成 TS binding 时把 service 内部类型挂在本包下, 前端只需要 import 一个稳定的 external_edit 命名空间。
type SettingsInput ¶
type SettingsInput = external_edit_svc.SettingsInput
Type aliases 让 Wails 在生成 TS binding 时把 service 内部类型挂在本包下, 前端只需要 import 一个稳定的 external_edit 命名空间。