最近在折腾hexo主题,然后发现在OSX系统中可以用AppleScript脚本实现很多快捷的工作流小应用。所以花了半个下午在别人的基础上改写了两个AppleScript脚本实现hexo的快速部署。

需求

在没有脚本的情况下,用hexo新建一篇文章的流程是这样的:

1
2
3
4
5
6
7
8
hexo new "文章名"
...切换到命令行
...切换到编辑器写文章
...切换到命令行
hexo clean
hexo g
gulp
hexo d

因为我用gulp压缩要发布的html,css,js,image所以不能直接hexo d -g这样。
这样太麻烦了,为了节省自己的时间,我如上文所说的那样花了半个下午去了解了一下AppleScript并且写了两个脚本。呃呃,不知道要写多少篇文章才能把半个下午节约回来…哈哈

hexo-new

下面是新建hexo的脚本,执行效果是弹出dialog,填写文章名后确认,自动打开Atom编辑器编辑文章。

hexo-new
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
tell application "Finder"
activate
display dialog "填入文章标题" default answer "title"
set title to text returned of result as text
end tell
tell application "Terminal"
activate
if (count of windows) is 0 then
tell application "System Events"
keystroke "n" using {command down}
end tell
else
activate
end if
set win to window [0]
set currentTab to selected tab of win
do script "cd ........../hexo_blog" in currentTab
do script "hexo new " & title in currentTab
delay 1
do script "open -a Atom source/_posts/" & title & ".md" in currentTab
delay 3
close windows
end tell

hexo-publish

第二个是发布的脚本,执行效果是直接发布,什么都不用做,之后会自行关闭终端。

hexo-publish
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
tell application "Terminal"
activate
set win to window [0]
set currentTab to selected tab of win
do script "cd ........../hexo_blog" in currentTab
do script "hexo clean " in currentTab
delay 1
do script "hexo g " in currentTab
-- 生成CNAME,供域名解析
do script "cd public" in currentTab
do script "touch CNAME" in currentTab
do script "echo www.yoursite.com > CNAME" in currentTab
delay 5
-- 压缩
do script "cd ../" in currentTab
do script "gulp" in currentTab
delay 10
do script "hexo d" in currentTab
close windows
end tell

根据自己的需求加上gulp的调用和CNAME文件的写入。

使用

脚本写完之后保存的默认格式是scpt,另存为app就可以用Alfred或者spotlight或者放Dock或者别的地方打开来完成hexo写博客并发布的工作流了。