跳转至

插件自动同步

概述

linthis 支持插件自动同步功能,灵感来源于 oh-my-zsh 的自动更新机制。该功能会在运行 linthis 时自动检查并同步插件更新,确保您始终使用最新的插件配置。

功能特性

  • 可配置的同步间隔:自定义更新检查频率(默认:7 天)
  • 多种同步模式
  • auto:无需确认自动同步
  • prompt:同步前询问用户(默认)
  • disabled:禁用自动同步
  • 智能时间追踪:使用 Unix 时间戳避免时区问题
  • 智能更新检测:仅在有实际更新时才提示
  • 友好的用户交互:清晰的进度指示器和错误处理

配置

配置文件

.linthis/config.toml~/.linthis/config.toml 中添加:

# 插件设置
[plugin]
sources = [
    { name = "myplugin", url = "https://github.com/your-org/myplugin.git", ref = "main" }
]

# 插件自动同步设置
[plugin_auto_sync]
enabled = true           # 启用自动同步
mode = "prompt"          # 同步模式:"auto"、"prompt"、"disabled"
interval_days = 7        # 同步间隔(天)

配置选项

enabled

  • 类型:布尔值
  • 默认值true
  • 描述:是否启用自动同步

mode

  • 类型:字符串
  • 默认值"prompt"
  • 选项
  • "auto":无需用户确认自动同步
  • "prompt":同步前询问用户
  • "disabled":禁用自动同步

interval_days

  • 类型:整数
  • 默认值7
  • 描述:同步检查间隔天数

工作原理

时间追踪

自动同步使用 ~/.linthis/.plugin_sync_last_check 文件存储上次同步的时间戳(Unix 纪元秒)。

触发条件

每次运行 linthis 时,系统会: 1. 从配置加载 plugin_auto_sync 设置 2. 检查 ~/.linthis/.plugin_sync_last_check 文件 3. 计算距上次同步的时间 4. 如果超过间隔时间,触发同步流程

同步流程

根据配置的 mode

  • auto 模式
  • 检查所有插件是否有更新
  • 如果有更新,自动开始同步
  • 显示同步进度
  • 更新时间戳

  • prompt 模式

  • 检查所有插件是否有更新
  • 如果有更新,提示:Updates available for plugins. Update now? [Y/n]:
  • 等待用户输入
  • 如果确认,执行同步
  • 如果拒绝或无更新,跳过并更新时间戳

  • disabled 模式

  • 跳过所有检查

示例

示例 1:默认(Prompt 模式)

[plugin_auto_sync]
enabled = true
mode = "prompt"
interval_days = 7

当超过间隔时间且有更新可用时:

$ linthis
Updates available for plugins. Update now? [Y/n]: y
↓ Syncing project plugins...
   myplugin...  @ a1b2c3d
✓ Synced 1 plugin(s), 1 updated

示例 2:Auto 模式

[plugin_auto_sync]
enabled = true
mode = "auto"
interval_days = 3

每 3 天无需确认自动同步:

$ linthis
↓ Syncing project plugins...
   myplugin...  @ a1b2c3d
✓ Synced 1 plugin(s), 1 updated

示例 3:禁用自动同步

[plugin_auto_sync]
enabled = false

或者:

[plugin_auto_sync]
mode = "disabled"

示例 4:手动同步

无论自动同步设置如何,您都可以手动同步:

# 同步项目插件
linthis plugin sync

# 同步全局插件
linthis plugin sync -g

与 oh-my-zsh 对比

功能 oh-my-zsh linthis
默认间隔 13 天 7 天
同步模式 auto、prompt、disabled auto、prompt、disabled
时间追踪 ~/.zsh-update ~/.linthis/.plugin_sync_last_check
手动同步 omz update linthis plugin sync
智能检测 是(仅在有更新时提示)

配置优先级

配置按以下优先级加载(从高到低): 1. 项目配置 (.linthis/config.toml) 2. 全局配置 (~/.linthis/config.toml) 3. 内置默认值

故障排除

自动同步不工作

检查清单: 1. 确认 plugin_auto_sync.enabled = true 2. 确认 plugin_auto_sync.mode 不是 "disabled" 3. 检查 ~/.linthis/.plugin_sync_last_check 的权限 4. 检查输出中的错误信息

提示太频繁

解决方案:增加 interval_days

[plugin_auto_sync]
interval_days = 14  # 改为 14 天

想要完全禁用

解决方案

[plugin_auto_sync]
enabled = false

与自更新的关系

linthis 支持两种自动更新: 1. 插件自动同步(本功能):同步插件 2. 自更新:更新 linthis 本身

两者独立配置和运行:

# 同步插件
[plugin_auto_sync]
enabled = true
mode = "prompt"
interval_days = 7

# 更新 linthis 本身
[self_auto_update]
enabled = true
mode = "prompt"
interval_days = 7

执行顺序: 1. 首先检查 linthis 自更新 2. 然后检查插件同步

参考资料