程序员自动生成工作报告!为 gitday 新添加一个 debug 功能

每周都得发周报,挺烦的。就写一个自动生成周报的工具。

12345678
# 安装 npm i -g wll8/gitday # 例: 以 月/周/天 的形式导出报告 gitday --x-template=month-week-day # 查看使用说明 gitday --help

先来一个功能说明:

 
123456789101112131415161718192021222324252627282930313233343536373839404142434445
读取 git log 的数据生成类似月报/周报/日报的 markdown 文档. 参数: --help 显示使用方法 --author=[作者名称] 默认为 git config user.name 的值 --after=[时间范围] 默认为 --x-template 的最大标志日期, 例如 month-week 则自动取最近一个月. 支持 git 的参数形式 --x-template=[格式模板] 默认 week, 支持 month/week/day 或其组合 示例: gitday --x-template=month ## 2021年01月 - commitMsg - commitMsg gitday --x-template=month-week ## 2021年01月 ### 第1周 - commitMsg - commitMsg gitday --x-template=month-week-day ## 2021年01月 ### 第1周 #### 21日 星期1 - commitMsg - commitMsg gitday --x-template=week ## 2021年01月 第1周 - commitMsg - commitMsg gitday --x-template=week-day ## 2021年01月 第1周 ### 21日 星期1 - commitMsg - commitMsg gitday --x-template=day ## 2021年01月24日 - commitMsg - commitMsg

再给给大家看看来一个自动生成的月报摘录:


2022年04月

第4周

21日 星期四

  • test: 并发测试
  • build: 添加发布命令

20日 星期三

  • chore: 使用依赖锁文件

  • fix(test): 处理测试功能的一些错误

  • feat: 简化 --config 参数输出的内容

    更改 full.mm.config.js 为 simple.mm.config.js, 让配置看起来更容易使用, 不那么吓人和混乱.

  • test: 并行运行测试

18日 星期一

  • refactor: 支持传入完善的配置, 拆分测试用例
  • doc: 完善更新日志

第3周

15日 星期五

  • feat: 支持从 config.api 拦截 config.db 的接口

    12345678910111213141516171819202122
    config = { api: { '/books/:id' (req, res, next) { // 在所有自定义 api 之前添加中间件 req.body.a = 1 // 修改用户传入的数据 next() res.mm.resHandleJsonApi = (arg) => { arg.res.locals.data // json-server 原始的数据 arg.data // 经预处理的数据, 例如将分页统计放置于响应体中 arg.resHandleJsonApi // 是全局 config.resHandleJsonApi 的引用, 若无需处理则直接 return arg.data arg.data.a = 2 // 修改响应, 不会存储到 db.json return arg.resHandleJsonApi(arg) } }, }, db: { book: [ { name: `js`, }, ] }, }

12日 星期二

  • fix: config.api 是 config.proxy 的子路径并携带参数时应能覆盖

    例如以下配置不应导致 /api/test?a=1 不能使用

    12345678
    config = { proxy: { '/api/': `http://172.16.203.81/api/`, }, api: { '/api/test': {msg: 123}, }, }

11日 星期一

  • index on dev: b356560 doc: 添加 todo

  • doc: 添加 todo

  • feat: 重放时特殊处理 get 携带 body 的情况

    在浏览器端 get 请求是不能携带 body 的, 包括 {}.

    https://github.com/axios/axios/issues/4589

第2周

08日 星期五

  • refactor: 使用 undefined 更直观的表述 没有做任何事

  • fix: 处理边界情况

    confg.proxy['/'] 可能为对象, 当时应取对象中的 target

  • refactor: 去除冗余的逻辑

  • feat: 支持禁用请求记录

第1周

01日 星期五

  • doc: update log

  • feat: 未启动进程守护时, 遇到错误连同父进程退出

  • feat: 在错误日志中保存退出码

  • fix: 重载时 global.INJECTION_REQUEST 中的值不应丢失

    • server 应该把值保存在文件中, 而不是变量中
    • client 应在请求时获取 INJECTION_REQUEST, 而不是刷新页面才获取

2022年03月

第5周

31日 星期四

  • fix: 删除 apiWeb 中的空对象, 避免手动编辑 apiWeb 时出现重复的 key

28日 星期一

  • doc: 添加 todo

好吧,有周报水了这么长的篇幅,现在到达正文。


之前造成周报的时候,很担心周报生成是否正确。经常要 git log 加上时间简单核查一下。

后面索性在 gitday 上加了一个 --x-debug 参数, 答应出每个 commit 的时间及 id,这样就能一眼看出来时间是否错误:

 
123456789
## 2022年03月 ### 第5周 #### 31日 星期四 - 2022-03-31 16:07:45 41adea1d88b0fba0d18311f25dbf79e2e06c46ef wll8 <xwdaysme@gmail.com> fix: 删除 apiWeb 中的空对象, 避免手动编辑 apiWeb 时出现重复的 key #### 28日 星期一 - 2022-03-28 18:05:24 6b9550c92f7b222e87ea8fe9d4eb190eadaa3acd wll8 <xwdaysme@gmail.com> doc: 添加 todo

但,肯定是没有错误的啦。

为什么添加的参数那么长? --x-debug 而不是 -d--debug ?因为 gitday 可以把命令参数转移给 git,所以避免参数与 git 的冲突,就弄个 --x- 前缀。

image.png

添加参数并设置默认值: false 。

现在来对参数做处理:

image.png

我们在要修改的地方添加一个函数:
image.png

为什么是添加一个函数,而不是直接在那个地方写逻辑?
因为要避免造成 git diff 时大量修改,以及避免逻辑混乱。

image.png

现在可以发现,当有此参数时,就会输出 date commit author 这些信息,没有时就是空字符串拼接。
image.png

再也不担心被发现周报是自动生成的啦。

当然,同时我也加入了一些新的功能需求:

 
123456789101112131415161718192021222324252627
- [ ] feat: 支持输出为 html 以方便携带格式进入邮件 - [x] feat: 支持 --x-debug 模式, 以确定输出是否正确 - [ ] feat: 格式化输出 - 每个 commit 前插入一个空行 - 多行 commit 消息时再每行后面添加两个空格, 这样默认 markdown 才会显示换行效果 - 移除 commit title 与 body 之前的空行 - 移除 body 后面多于的空行 - 合并两个空行为一个 - 转换 msg 提交标志, 例如转换 `fix(client): xxx` 为 `修复 client 中的缺陷: xxx` ``` # 主要type feat: 增加新功能 fix: 修复bug # 特殊type docs: 只改动了文档相关的内容 style: 不影响代码含义的改动,例如去掉空格、改变缩进、增删分号 build: 构造工具的或者外部依赖的改动,例如webpack,npm refactor: 代码重构时使用 revert: 执行git revert打印的message # 暂不使用type test: 添加测试或者修改现有测试 perf: 提高性能的改动 ci: 与CI(持续集成服务)有关的改动 chore: 不修改src或者test的其余修改,例如构建过程或辅助工具的变动 ```

很明显,在偷懒这条路上我是越走越远,有没有要一起偷懒的?

# nodejs
关于 h5 获取摄像头图像
如何通过 npm 私服解锁新姿势
wll8wll8前端
文章23
分类4
标签5