Ускоряем Jekyll с помощью Kotlin
Одним из первых постов в этот блог был пост про ускорение работы с Jekyll с помощью Java. Там я писал, что:
Я засек время потраченное на написание программы 34 минуты. Мне надо сделать около 50 постов, чтобы оно окупилось, и надо чтобы в программе не нашлось новых багов.
Я написал эти 50 постов. Сейчас в блоге 125 записей. И эксперимент оказался очень удачным. Я решил продолжить его перевести программу для генерации постов с Java на Kotlin. Это оказалось очень просто, IntelliJ IDEA умеет делать это автоматически:
package ru.yamakarov.jekyll
import java.io.IOException
import java.nio.file.FileSystems
import java.nio.file.Files
import java.text.SimpleDateFormat
import java.util.*
fun main(args: Array<String>) {
if (args.size < 2)
{
println("No command do nothing\n" +
"possible options:\n" +
"-n name Creates new post \n")
}
val command = args[0]
if ("-n" == command)
{
val name = args[1]
val date = Date(System.currentTimeMillis())
val template = "---\n" +
"layout: post\n" +
"title: \"\"\n" +
"date: " + SimpleDateFormat("yyyy-MM-dd HH:mm").format(date) + "\n" +
"categories: \n" +
"---\n\n"
val fileName = SimpleDateFormat("yyyy-MM-dd").format(date) +
"-" + name + ".markdown"
val path = FileSystems.getDefault().getPath("_posts",
fileName)
try {
if (!Files.exists(path)) {
Files.createFile(path)
}
Files.write(path, listOf(template))
println(fileName)
} catch (e: IOException) {
println("Exception writing file")
e.printStackTrace()
}
}
}
Оказалось очень удобно. Хочется отметить следующие моменты:
- На Kotlin можно писать один в один как на Java. Это не значит, что нужно так делать. Но то, что можно очень хорошо. Существенно упрощает переход на новый язык.
- Я не знал, но оказывается можно не ставить точку с запятой в конце утверждения
- В IDEA работает
sout
тоже удобно для тех, кто переходит с Java - В сконвертированной программе нет ни одного объявления типа, а значит не надо писать Борщ борщ = new Борщ(), это удобно на мой взгляд.