11package imgconv
22
33import (
4- "flag"
54 "fmt"
65 "os"
76 "path/filepath"
87 "strings"
98)
109
11- var (
12- // flags
13- f = flag .String ("f" , "jpg" , "file extention before convert" )
14- t = flag .String ("t" , "png" , "file extention after convert" )
15- dryRun = flag .Bool ("n" , false , "dry run" )
16-
17- // allow extensions
18- allowedExts = exts {"png" , "jpg" , "jpeg" , "gif" , "bmp" , "tiff" , "tif" }
19- )
20-
21- func init () {
22- flag .Parse ()
23- }
10+ var allowedExts = []string {"png" , "jpg" , "jpeg" , "gif" , "bmp" , "tiff" , "tif" }
2411
2512// Run is to convert image file format
26- func Run () error {
27- // check options ext
28- to := strings .ToLower (* t )
29- from := strings .ToLower (* f )
30- targetExts := []string {to , from }
31- for _ , e := range targetExts {
32- if err := allowedExts .include (e ); err != nil {
33- return fmt .Errorf ("%w. ext is only allowd in %s" , err , allowedExts )
34- }
13+ func Run (options Options , args Args ) error {
14+ // validator
15+ if err := options .validate (allowedExts ); err != nil {
16+ return err
3517 }
3618
3719 // get target image paths from args
38- dns := flag .Args ()
39- udns := uniq (dns )
40- paths , err := getPaths (udns , from )
20+ udns := args .uniq ()
21+ paths , err := getPaths (udns , * options .From )
4122 if err != nil {
4223 return err
4324 }
4425
4526 // convert
46- imgs , err := createConvImages (paths , from , to )
27+ imgs , err := createConvImages (paths , * options . From , * options . To )
4728 if err != nil {
4829 return err
4930 }
@@ -52,7 +33,7 @@ func Run() error {
5233 return err
5334 }
5435
55- if * dryRun {
36+ if * options . DryRun {
5637 fmt .Println (img .filename + "." + img .fromExt , "=>" , img .filename + "." + img .toExt )
5738 } else {
5839 if err := img .encode (); err != nil {
@@ -64,20 +45,6 @@ func Run() error {
6445 return nil
6546}
6647
67- func uniq (s []string ) []string {
68- m := map [string ]bool {}
69- u := []string {}
70-
71- for _ , v := range s {
72- if ! m [v ] {
73- m [v ] = true
74- u = append (u , v )
75- }
76- }
77-
78- return u
79- }
80-
8148func getPaths (dns []string , from string ) ([]string , error ) {
8249 paths := []string {}
8350
0 commit comments