srt-indexer/main.go
2021-04-26 10:46:17 -07:00

64 lines
1.1 KiB
Go

package main
import (
"bufio"
"fmt"
"io"
"log"
"os"
)
func main() {
if len(os.Args) != 2 {
log.Fatalln("one argument: file name")
}
f, err := os.Open(os.Args[1])
if err != nil {
log.Fatalf("failed to open file %s: %s", os.Args[1], err.Error())
}
defer f.Close()
var i int
o := os.Stdout
defer o.Close()
// File should always start with '1'
i++
if _, err = o.WriteString(fmt.Sprintf("%d\n", i)); err != nil {
log.Fatalln("failed to write index:", err)
}
r := bufio.NewReader(f)
var emptyLine bool
for {
emptyLine = false
l, err := r.ReadString('\n')
if err == io.EOF {
break
}
if err != nil {
log.Fatalln("failed to read line:", err)
}
if len(l) == 1 {
emptyLine = true
}
if _, err = o.WriteString(l); err != nil {
log.Fatalln("failed to write to output:", err)
}
if emptyLine {
i++
if _, err := o.WriteString(fmt.Sprintf("%d\n", i)); err != nil {
log.Fatalln("failed to write index:", err)
}
}
}
}