Skip to content

Latest commit

 

History

History
222 lines (167 loc) · 6.06 KB

它是如何工作的.md

File metadata and controls

222 lines (167 loc) · 6.06 KB

它是如何工作的

配置文件

在程序初次运行时,会生成一个配置文件 config.json 如下:

  • "astro-project":
    • "clone_repo": "你自己本地仓库(克隆)的地址【自动生成的】"
    • "backup_repo": "你自己本地仓库(备份)的地址【自动生成的】"
    • "local_repo": "你自己本地仓库的地址"
    • "name": "你自己的项目在程序中的标识"
    • "remote_repo": "你使用的主题的远程仓库 URL"
  • "name": "当前的目标项目"

程序功能

Note

🤖 此项代表由程序自动操作

🧑‍💻 此项代表需要用户进行操作

新增项目

说明

在配置文件中新添加一个项目。

操作流程

  1. 🧑‍💻 用户输入自己本地仓库的地址;
  2. 🧑‍💻 用户输入使用的主题的远程仓库 URL

结果

在配置文件中新添加一个项目配置。

更改项目

说明

更改当前程序操作的项目。

操作流程

  1. 🧑‍💻 用户输入需要操作的项目名字;

结果

修改配置文件中的 name 项。

更新项目

说明

通过远程仓库与规则集更新当前程序指向的项目。

操作流程

  1. 🤖 新创建一个目录 _clone 克隆远程仓库

    🤖 如果已经存在,则会拉取

    🤖 如果拉取冲突,则会删除原目录重新克隆

  2. 🤖 新创建一个目录 _backup 备份本地仓库

  3. 🤖 比较 local_repoclone_repo 中的文件内容

    如果仅在 local_repo 中存在,标记为 [local only]

    如果仅在 clone_repo 中存在,标记为 [clone only]

    如果在两个目录中都存在且文件内容不同,标记为 [diff files]

  4. 🤖 根据规则集处理返回的路径

    🤖 如果存在规则集,解析本地仓库下的规则集

    🧑‍💻 如果不存在规则集,需要用户自己配置

  5. 🧑‍💻 用户主动抉择不在规则集下的文件

  6. 🤖 进行项目修改操作

  7. 🤖 解析博客配置文件

  8. 🧑‍💻 用户修改配置

  9. 🤖 更新项目依赖

  10. 🤖 提交远程仓库

结果

更新本地仓库的主题。

生成规则

🚧 此内容还在建设 🚧

更新规则

更新规则由在本地项目根目录下的文件 rule.json 决定。

设计

rule.json 的结构如下:

最前:适用的项目名字

然后是两个部分,分别存贮扫描目录与比较文件的规则

  1. 第一部分由下面几个内容组成
    • 所忽略的目录与文件(这应该有两个配置,分布是目录与文件)
    • 可以直接覆盖的目录与文件(这只针对轻量用户,不排除用户修改此部分的内容,因此需要必要检查。有关检查的部分请见-)
    • 需要审查的目录与文件(这代表存在主题代码与用户内容共存的部分)
    • 此博客的配置文件(需要特殊的代码解析配置)
    • 其他文件默认忽略,但是会爆出警告,代表未检查的忽略,是否添加进忽略列表?
  2. 第二部分将操作第一部分中从 “需要审查的目录与文件” 中获取的文件目录

第二部分不分成小部分,使用下面的格式定义:

"第二部分": [
   {
      "生效的目录": "",
      "生效的文件": "",
      "操作的函数": "",
      "函数来源": ""
   },
   {
      "生效的目录": "",
      "生效的文件": "",
      "操作的函数": "",
      "函数来源": ""
   },
]

这代表可以为不同的文件赋予不同的操作。

下面是一个例子:

{
  "project_name": "Astro",
  "rules": {
    "scan_rules": {
      "ignore_directories": [
        "node_modules",
        "dist",
        "coverage",
        "logs"
      ],
      "ignore_files": [
        ".DS_Store",
        "Thumbs.db",
        "*.tmp",
        "*.log"
      ],
      "overwrite_directories": [
        "public",
        "assets"
      ],
      "overwrite_files": [
        "config.default.json",
        "style.default.css"
      ],
      "review_directories": [
        "src/components",
        "src/pages"
      ],
      "review_files": [
        "analysis.cpp",
        "theme.config.json"
      ],
      "config_files": [
        "astro.config.js",
        "tailwind.config.js"
      ],
      "untracked_warning": true
    },
    "operation_rules": [
      {
        "active_directory": "src/components",
        "active_file": "analysis.cpp",
        "operation_function": "mergeAnalysis",
        "function_source": "local"
      },
      {
        "active_directory": "src/pages",
        "active_file": "index.astro",
        "operation_function": "reviewContent",
        "function_source": "local"
      },
      {
        "active_directory": "config",
        "active_file": "theme.config.json",
        "operation_function": "parseThemeConfig",
        "function_source": "local"
      }
    ]
  }
}

说明

  1. project_name: 项目的名称,这里默认填入“Astro 更新程序”。
  2. scan_rules:
    • ignore_directories: 忽略的目录列表。
    • ignore_files: 忽略的文件列表。
    • overwrite_directories: 可以直接覆盖的目录列表。
    • overwrite_files: 可以直接覆盖的文件列表。
    • review_directories: 需要审查的目录列表。
    • review_files: 需要审查的文件列表。
    • config_files: 需要特殊解析的配置文件列表。
    • untracked_warning: 为未跟踪的文件提供警告。
  3. operation_rules: 操作规则,应用于需要审查的目录与文件。
    • active_directory: 生效的目录。
    • active_file: 生效的文件。
    • operation_function: 进行操作的函数名称。
    • function_source: 该函数的来源。

你可以根据实际的项目目录结构和需求来调整这些规则配置。

🚧 此文档正在施工中 🚧