You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
1.9 KiB
73 lines
1.9 KiB
// Lexington is a command line tool to convert between several formats used for screenwriting. |
|
// When you write a screenplay in Fountain, you can use this tool to convert it into other formats. |
|
// The tool uses an internal format called lex which can be used to tweak the output. |
|
// Run the compiled tool with --help to get information about usage. |
|
package main |
|
|
|
import ( |
|
"git.kiefte.eu/lapingvino/printdraftfast/pdf" |
|
"git.kiefte.eu/lapingvino/printdraftfast/rules" |
|
|
|
"flag" |
|
"io" |
|
"log" |
|
"os" |
|
"strings" |
|
"time" |
|
) |
|
|
|
func main() { |
|
start := time.Now() |
|
defer func() { |
|
log.Printf("Conversion took %v", time.Since(start)) |
|
}() |
|
config := flag.String("config", "printdraftfast.toml", "Configuration file to use.") |
|
dump := flag.Bool("dumpconfig", false, "Dump the default configuration to the location of --config to be adapted manually.") |
|
elements := flag.String("e", "default", "Element settings from settings file to use.") |
|
input := flag.String("i", "-", "Input from provided filename. - means standard input.") |
|
output := flag.String("o", "-", "Output to provided filename.") |
|
help := flag.Bool("help", false, "Show this help message") |
|
flag.Parse() |
|
|
|
if *help { |
|
flag.PrintDefaults() |
|
return |
|
} |
|
|
|
if *dump { |
|
err := rules.Dump(*config) |
|
if err != nil { |
|
log.Println("Error dumping configuration: ", err) |
|
} |
|
log.Println("Configuration dumped to ", *config) |
|
return |
|
} |
|
|
|
var infile io.Reader |
|
var outfile io.Writer |
|
|
|
conf := rules.GetConf(*config) |
|
|
|
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 |
|
} |
|
} |
|
|
|
// TODO: Parser goes here |
|
|
|
if *output == "-" && len(ins) > 0 && ins[0] != "" { |
|
*output = ins[0] + ".pdf" |
|
} |
|
if *output == "-" { |
|
log.Println("Cannot write PDF to standard output") |
|
return |
|
} |
|
pdf.Create(*output, conf.Elements[*elements], i) |
|
}
|
|
|