improve error handling

This commit is contained in:
Celogeek 2023-04-25 11:15:33 +02:00
parent dbec9b81e8
commit 07e04e514b
Signed by: celogeek
SSH Key Fingerprint: SHA256:njNJLzoLQdbV9PC6ehcruRb0QnEgxABoCYZ+0+aUIYc
2 changed files with 30 additions and 31 deletions

View File

@ -49,12 +49,7 @@ type epubPart struct {
}
func New(options *Options) *ePub {
uid, err := uuid.NewV4()
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
uid := uuid.Must(uuid.NewV4())
tmpl := template.New("parser")
tmpl.Funcs(template.FuncMap{
"mod": func(i, j int) bool { return i%j == 0 },
@ -71,20 +66,12 @@ func New(options *Options) *ePub {
}
func (e *ePub) render(templateString string, data any) string {
tmpl, err := e.templateProcessor.Parse(templateString)
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
var result strings.Builder
tmpl := template.Must(e.templateProcessor.Parse(templateString))
if err := tmpl.Execute(&result, data); err != nil {
panic(err)
}
result := &strings.Builder{}
if err := tmpl.Execute(result, data); err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
stripBlank := regexp.MustCompile("\n+")
return stripBlank.ReplaceAllString(result.String(), "\n")
return regexp.MustCompile("\n+").ReplaceAllString(result.String(), "\n")
}
func (e *ePub) writeImage(wz *epubzip.EpubZip, img *epubimage.Image) error {

View File

@ -21,30 +21,42 @@ func (img *ImageData) CompressedSize() uint64 {
return img.Header.CompressedSize64 + 30 + uint64(len(img.Header.Name))
}
func exitWithError(err error) {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
func New(id int, part int, img image.Image, quality int) *ImageData {
name := fmt.Sprintf("OEBPS/Images/%d_p%d.jpg", id, part)
return NewRaw(name, img, quality)
}
func NewRaw(name string, img image.Image, quality int) *ImageData {
data := bytes.NewBuffer([]byte{})
if err := jpeg.Encode(data, img, &jpeg.Options{Quality: quality}); err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
var (
data, cdata bytes.Buffer
err error
)
err = jpeg.Encode(&data, img, &jpeg.Options{Quality: quality})
if err != nil {
exitWithError(err)
}
cdata := bytes.NewBuffer([]byte{})
wcdata, err := flate.NewWriter(cdata, flate.BestCompression)
wcdata, err := flate.NewWriter(&cdata, flate.BestCompression)
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
exitWithError(err)
}
wcdata.Write(data.Bytes())
wcdata.Close()
_, err = wcdata.Write(data.Bytes())
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
exitWithError(err)
}
err = wcdata.Close()
if err != nil {
exitWithError(err)
}
t := time.Now()
return &ImageData{
&zip.FileHeader{