/* * Copyright (c) 2018 Arnaud Ysmal. All Rights Reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ package main import ( "flag" "fmt" "log" "os" "jsonresume/model" "jsonresume/themes" _ "jsonresume/themes/kendall" _ "jsonresume/themes/kendall2" _ "jsonresume/themes/stackoverflow" _ "jsonresume/themes/tex" ) func main() { var r *model.Resume var resume string var theme string var err error var outf string var lang string var fulladdr bool var f *os.File flag.BoolVar(&fulladdr, "a", false, "Use full address") flag.StringVar(&resume, "resume", "resume.json", "JSON of resume") flag.StringVar(&resume, "r", "resume.json", "JSON of resume") flag.StringVar(&theme, "theme", "", "Theme of resume") flag.StringVar(&theme, "t", "", "Theme of resume") flag.StringVar(&outf, "out", "-", "Output file") flag.StringVar(&outf, "o", "-", "Output file") flag.StringVar(&lang, "lang", "", "Force lang") flag.StringVar(&lang, "l", "", "Force lang") flag.Parse() if outf == "-" { f = os.Stdout } else { if f, err = os.OpenFile(outf, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0755); err != nil { log.Fatal(err) } } if r, err = model.Parse(resume); err != nil { log.Fatal(err) } if lang != "" { r.Language = lang } r.UseFullAddress = fulladdr if t, exists := themes.Themes[theme]; exists { if err = t.Render(r, f); err != nil { log.Fatal(err) } } else { fmt.Printf("No such theme\n") } }