diff options
Diffstat (limited to 'main.go')
-rw-r--r-- | main.go | 71 |
1 files changed, 70 insertions, 1 deletions
@@ -2,10 +2,79 @@ package main import ( "github.com/lapingvino/lexington/lex" + "github.com/lapingvino/lexington/fountain" "github.com/lapingvino/lexington/pdf" "github.com/lapingvino/lexington/rules" + + "flag" + "log" + "os" + "io" ) func main() { - pdf.Create("fountain.pdf", rules.Default, lex.Screenplay{}) + input := flag.String("i", "-", "Input from provided filename") + output := flag.String("o", "-", "Output to provided filename") + from := flag.String("from", "fountain", "Input file type. Choose from fountain, fdx, lex") + to := flag.String("to", "pdf", "Output file type. Choose from pdf, html, epub, mobi, docx, odt, fountain, fdx, lex") + help := flag.Bool("help", false, "Show this help message") + flag.Parse() + + if *help { + flag.PrintDefaults() + return + } + + var infile io.Reader + var outfile io.Writer + var i lex.Screenplay + + if *input == "-" { + infile = os.Stdin + log.Println("Reading from Stdin") + } else { + var err error + infile, err = os.Open(*input) + if err != nil { + log.Println("Error opening file: ", err) + return + } + } + + if *output == "-" { + outfile = os.Stdout + log.Println("Writing to Stdout") + } else { + var err error + outfile, err = os.Create(*output) + if err != nil { + log.Println("Error creating output file: ", err) + return + } + } + + + log.Println("Input type is ", *from) + switch *from { + case "lex": + i = lex.Parse(infile) + case "fountain": + i = fountain.Parse(infile) + default: + log.Printf("%s is not a valid input type", *from) + } + + log.Println("Output type is ", *to) + switch *to { + case "pdf": + if *output == "-" { + log.Println("Cannot write PDF to standard output") + return + } + pdf.Create(*output, rules.Default, i) + case "lex": + lex.Write(i, outfile) + default: + log.Printf("%s is not a valid output type", *to) + } } |