バッチファイルで処理を自動化する

このサイトはWindowsのローカルマシンでサイトの内容を作成したのち、バッチファイルでレンタルサーバーにファイルをコピーしています。

hugoはコマンドが実行シンプルなので制作時に迷いを感じる事はほぼないのですが、それでもファイルをFTPでアップしたりといった作業に、いちいちFTPソフトを立ち上げてマウスをクリックして~と、続くとしんどくなってきます。

そのため、幾つかの作業はバッチファイルで自動化して行うようにしています。

memo

ローカルでつくってそれをそのままタイムラグ無しでWebにあげるという、hugoの小回りの良さを生かすようにしています。

処理や規模によってはもちろんgithub等使っても良いでしょう。

記事を作成する

c:cd (hudoインストールフォルダ)でhudoインストールドライブに移動し(この場合はcドライブにファイルがある)、作成したい記事slagを入力します。

hugoで記事を管理する場合、(posts/フォルダ名/index.md)という感じで記事毎にフォルダを分けて管理するようにした方が、リソースの参照がとっちらからずに便利です。

@echo off
c:
cd (hudoインストールフォルダ)
:INPUT_CHECK
SET INPUTSTR=
SET /P INPUTSTR="作成する記事slagを入力してください:
IF "%INPUTSTR%"=="" GOTO :INPUT_CHECK
hugo new --kind post posts/%INPUTSTR%/index.md
ECHO 記事を作成しました [%INPUTSTR%]
pause

ローカルドライブにバックアップを作成する

powershellのcompress-archiveを使ってzip圧縮します。

NASやクラウド系のドライブに保存するのもよいでしょう。

@echo off
set yyyy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
set time2=%time: =0%
set hh=%time2:~0,2%
set mn=%time2:~3,2%
set ss=%time2:~6,2%
set filename=%yyyy%%mm%%dd%%hh%%mn%%ss%
powershell compress-archive (作成元フォルダ) (作成先フォルダ)%filename%.zip

ここら辺はgitを使う人が多いんでしょうが、ローカルのバックアップが欲しくなることもままあるので、自分の場合は保険的に実行してます。

時間の部分なんですが、Windowsで時刻形式を変更しているとうまく動きません。自分の環境に合わせて適時変更してあげる必要があります。

ファイルをアップする

WindowsでFTPを使う場合、WinSCPを使うのが便利です。

WinSCPはコマンドラインから繰作出来るローカルからサーバーファイルへのファイルの同期機能が用意されていますので、これを利用します。

"(WinSCPインストールドライブ\WinSCP.exe)" (ID):(パスワード)@(サーバーURL) /command "synchronize remote (hudoインストールフォルダ)\public (アップ先ディレクトリ名)" exit

こうするとバッチ一発でファイルをあげてくれるので便利です。ただし、ファイル名を変えたり削除したりするとゴミがたまってくるので、そのあたりはソフトを起動して整理してあげる必要があります。

hugoワークフロー

hugoのコマンドはシンプルでバッチファイルとも相性が良く、「ローカルサーバーで動かして問題がなさそうならbuildしてそのままFTPでアップ」みたいな処理をバッチファイル経由で一気に動かす事が出来ます。FTPでそのままあげているだけなので、アップロード待ちもありません。

この当たりの小回りの良さと見通しの良さが非常に魅力です。