111 lines
2.6 KiB
Bash
Executable File
111 lines
2.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# 注册到全局命令(临时)
|
|
# alias todo="sh ~/todo/todo.sh"
|
|
# 注册到全局命令(永久)
|
|
# echo 'alias todo="sh ~/todo/todo.sh"' >> ~/.bashrc
|
|
# source ~/.bashrc
|
|
|
|
# 正则检查文件中所有 TODO 的行
|
|
function search_todo() {
|
|
grep "^.*#TODO:" $file
|
|
}
|
|
|
|
function ergodic() {
|
|
for file in `ls $1`
|
|
do
|
|
if [ -d $1"/"$file ]
|
|
then
|
|
ergodic $1"/"$file
|
|
else
|
|
echo "$file"
|
|
# 获取文件后缀, 仅检查支持的后缀类型
|
|
# search_todo $1"/"$file
|
|
fi
|
|
done
|
|
}
|
|
|
|
function show() {
|
|
# 展示读取的列表
|
|
# 取用状态/完成未完成
|
|
# 按照序列操作
|
|
|
|
loop=1
|
|
cat ~/.todo/main.md | while read line
|
|
do
|
|
echo -e "\e[2m $loop) $line \e[0m"
|
|
#echo -e “Default \e[39mDefault”
|
|
#echo -e "\e[1;32m Green \e[0m"
|
|
loop=`expr $loop + 1`
|
|
done
|
|
# 列出当前目录下排除git之后的所有可识别后缀的文件中的注释TODO
|
|
# 选中TODO时使用工具打开并跳到指定行
|
|
# echo -e "\e[1;32m Green \e[0m"
|
|
|
|
# 打印指定目录的最后修改时间
|
|
FILE_NAME='.'
|
|
LAST_MODIFY_TIMESTAMP=`stat -c %Y $FILE_NAME`
|
|
echo `date '+%Y-%m-%d %H:%M:%S' -d @$LAST_MODIFY_TIMESTAMP`
|
|
|
|
# 扫描目录中支持的文件格式, 并排除 .gitignore 列举的目录
|
|
# ergodic "."
|
|
}
|
|
|
|
#TODO: 加入目录命令, 使之检查目录最后一次更改
|
|
#TODO: 如果目录中包含已加入的目录, 则合并
|
|
#TODO: 如果目录中包含 .gitignore 则排除其列举的文件
|
|
#TODO: 通过检查目录的最后更改状态, 避免大量文件的反复检查
|
|
#TODO: 每个超出记录时间后更新的文件, 都要被重新索引TODO
|
|
#TODO: 索引精确到行, 且按照各类文件支持不同格式的注释
|
|
#TODO: 可能存在编码格式问题
|
|
#TODO: 每次显示都从缓存, 如果时解压来的文件夹, 其时间并不被公信, 其不应该存在TODO
|
|
|
|
# 不存在则创建目录
|
|
if [ ! -d "$HOME/.todo" ]; then
|
|
echo "todo init"
|
|
mkdir ~/.todo
|
|
fi
|
|
|
|
# 不存在则创建文件
|
|
if [ ! -f "$HOME/.todo/main.md" ]; then
|
|
echo "todo init main.md"
|
|
touch "$HOME/.todo/main.md"
|
|
fi
|
|
|
|
case $1 in
|
|
"" | list)
|
|
show
|
|
;;
|
|
add | create)
|
|
echo $2 >> ~/.todo/main.md
|
|
show
|
|
;;
|
|
rm | del | remove | delete)
|
|
for i in $*
|
|
do
|
|
case $i in
|
|
[0-9]*)
|
|
sed -i "${2}d" ~/.todo/main.md
|
|
;;
|
|
esac
|
|
done
|
|
show
|
|
;;
|
|
[0-9]*)
|
|
sed -n "${1}p" ~/.todo/main.md
|
|
;;
|
|
*)
|
|
cat <<-EOF
|
|
**************************
|
|
TODO version 0.1
|
|
**************************
|
|
1) add: to | add | create (新建任务)
|
|
2) end: do | end | ok (归档任务)
|
|
3) del: rm | del | remove | delete (移除任务)
|
|
4) add: copy
|
|
5) add: exit
|
|
**************************
|
|
EOF
|
|
;;
|
|
esac
|