この日報の一番の不便なところは記事の冒頭に以下のような呪文を記載する必要がある。

---
layout: post
title:  "便利な Rakefile を作った"
categories: tech
date: "2018-06-15 16:47:31"
---

超めんどくさいから勝手に作ってくれ。 ということでスクリプト書いた。

task :default => :new

desc "create new post"
task :new do
  title = ""
  now = Time.now
  path = "_posts/#{now.strftime('%F')}-report.md"

  path = checkFilename(path)

  File.open(path, "w") do |f|
    f.puts "---"
    f.puts "layout: post"
    f.puts "title:  \"\""
    f.puts "categories: unknown"
    f.puts "date: \"#{now.strftime('%F %T')}\""
    f.puts "---"
    f.puts ""
    f.puts ""
  end
  sh "atom #{path}"
end

desc "check duplicate filename"
def checkFilename(filename)
  while File.exist?(filename)
    result = filename.match(/(.*)(\d+)?.md/)
    unless result[2].nil?
      filename = "#{result[1]}#{(result[2].to_i + 1).to_s}.md"
    else
      filename = "#{result[1]}2.md"
    end
  end
  return filename
end

上書きが怖いので重複した場合、インクリメントすることで避ける。 日付とかタイトルとかカテゴリーとかは自分の思想信条に関わるものっぽいので記載しない。 プログラミング言語に重複するファイルがあった場合にファイル名に勝手にインクリメントつけてくれる機能欲しい。

task :default を今頃知った。めっちゃ楽だな。