@@ -19,7 +19,7 @@ import (
1919var (
2020 fileTypes = []struct {
2121 ext string
22- decompress func (src io.Reader , cmd , os , arch string ) (io.Reader , error )
22+ decompress func (src io.Reader , relExe , os , arch string ) (io.Reader , error )
2323 }{
2424 {".zip" , unzip },
2525 {".tar.gz" , untar },
@@ -37,23 +37,23 @@ var (
3737// DecompressCommand decompresses the given source. Archive and compression format is
3838// automatically detected from 'url' parameter, which represents the URL of asset,
3939// or simply a filename (with an extension).
40- // This returns a reader for the decompressed command given by 'cmd '. '.zip',
40+ // This returns a reader for the decompressed command given by 'url '. '.zip',
4141// '.tar.gz', '.tar.xz', '.tgz', '.gz', '.bz2' and '.xz' are supported.
4242//
4343// These wrapped errors can be returned:
4444// - ErrCannotDecompressFile
4545// - ErrExecutableNotFoundInArchive
46- func DecompressCommand (src io.Reader , url , cmd , os , arch string ) (io.Reader , error ) {
46+ func DecompressCommand (src io.Reader , url , relExe , os , arch string ) (io.Reader , error ) {
4747 for _ , fileType := range fileTypes {
4848 if strings .HasSuffix (url , fileType .ext ) {
49- return fileType .decompress (src , cmd , os , arch )
49+ return fileType .decompress (src , relExe , os , arch )
5050 }
5151 }
5252 log .Print ("File is not compressed" )
5353 return src , nil
5454}
5555
56- func unzip (src io.Reader , cmd , os , arch string ) (io.Reader , error ) {
56+ func unzip (src io.Reader , relExe , os , arch string ) (io.Reader , error ) {
5757 log .Print ("Decompressing zip file" )
5858
5959 // Zip format requires its file size for Decompressing.
@@ -70,82 +70,82 @@ func unzip(src io.Reader, cmd, os, arch string) (io.Reader, error) {
7070 }
7171
7272 for _ , file := range z .File {
73- _ , name := filepath .Split (file .Name )
74- if ! file .FileInfo ().IsDir () && matchExecutableName (cmd , os , arch , name ) {
73+ _ , target := filepath .Split (file .Name )
74+ if ! file .FileInfo ().IsDir () && matchExecutableName (relExe , os , arch , target ) {
7575 log .Printf ("Executable file %q was found in zip archive" , file .Name )
7676 return file .Open ()
7777 }
7878 }
7979
80- return nil , fmt .Errorf ("%w in zip file: %q" , ErrExecutableNotFoundInArchive , cmd )
80+ return nil , fmt .Errorf ("%w in zip file: %q" , ErrExecutableNotFoundInArchive , relExe )
8181}
8282
83- func untar (src io.Reader , cmd , os , arch string ) (io.Reader , error ) {
83+ func untar (src io.Reader , relExe , os , arch string ) (io.Reader , error ) {
8484 log .Print ("Decompressing tar.gz file" )
8585
8686 gz , err := gzip .NewReader (src )
8787 if err != nil {
8888 return nil , fmt .Errorf ("%w tar.gz file: %s" , ErrCannotDecompressFile , err )
8989 }
9090
91- return unarchiveTar (gz , cmd , os , arch )
91+ return unarchiveTar (gz , relExe , os , arch )
9292}
9393
94- func gunzip (src io.Reader , cmd , os , arch string ) (io.Reader , error ) {
94+ func gunzip (src io.Reader , relExe , os , arch string ) (io.Reader , error ) {
9595 log .Print ("Decompressing gzip file" )
9696
9797 r , err := gzip .NewReader (src )
9898 if err != nil {
9999 return nil , fmt .Errorf ("%w gzip file: %s" , ErrCannotDecompressFile , err )
100100 }
101101
102- name := r .Name
103- if ! matchExecutableName (cmd , os , arch , name ) {
104- return nil , fmt .Errorf ("%w: expected %q but found %q" , ErrExecutableNotFoundInArchive , cmd , name )
102+ target := r .Name
103+ if ! matchExecutableName (relExe , os , arch , target ) {
104+ return nil , fmt .Errorf ("%w: expected %q but found %q" , ErrExecutableNotFoundInArchive , relExe , target )
105105 }
106106
107- log .Printf ("Executable file %q was found in gzip file" , name )
107+ log .Printf ("Executable file %q was found in gzip file" , target )
108108 return r , nil
109109}
110110
111- func untarxz (src io.Reader , cmd , os , arch string ) (io.Reader , error ) {
111+ func untarxz (src io.Reader , relExe , os , arch string ) (io.Reader , error ) {
112112 log .Print ("Decompressing tar.xz file" )
113113
114114 xzip , err := xz .NewReader (src )
115115 if err != nil {
116116 return nil , fmt .Errorf ("%w tar.xz file: %s" , ErrCannotDecompressFile , err )
117117 }
118118
119- return unarchiveTar (xzip , cmd , os , arch )
119+ return unarchiveTar (xzip , relExe , os , arch )
120120}
121121
122- func unxz (src io.Reader , cmd , os , arch string ) (io.Reader , error ) {
122+ func unxz (src io.Reader , relExe , os , arch string ) (io.Reader , error ) {
123123 log .Print ("Decompressing xzip file" )
124124
125125 xzip , err := xz .NewReader (src )
126126 if err != nil {
127127 return nil , fmt .Errorf ("%w xzip file: %s" , ErrCannotDecompressFile , err )
128128 }
129129
130- log .Printf ("Decompressed file from xzip is assumed to be an executable: %s" , cmd )
130+ log .Printf ("Decompressed file from xzip is assumed to be an executable: %s" , relExe )
131131 return xzip , nil
132132}
133133
134- func unbz2 (src io.Reader , cmd , os , arch string ) (io.Reader , error ) {
134+ func unbz2 (src io.Reader , relExe , os , arch string ) (io.Reader , error ) {
135135 log .Print ("Decompressing bzip2 file" )
136136
137137 bz2 := bzip2 .NewReader (src )
138138
139- log .Printf ("Decompressed file from bzip2 is assumed to be an executable: %s" , cmd )
139+ log .Printf ("Decompressed file from bzip2 is assumed to be an executable: %s" , relExe )
140140 return bz2 , nil
141141}
142142
143- func matchExecutableName (cmd , os , arch , target string ) bool {
144- cmd = strings .TrimSuffix (cmd , ".exe" )
143+ func matchExecutableName (relExe , os , arch , target string ) bool {
144+ relExe = strings .TrimSuffix (relExe , ".exe" )
145145 pattern := regexp .MustCompile (
146146 fmt .Sprintf (
147147 `^%s([_-]v?%s)?([_-]%s[_-]%s)?(\.exe)?$` ,
148- regexp .QuoteMeta (cmd ),
148+ regexp .QuoteMeta (relExe ),
149149 semverPattern ,
150150 regexp .QuoteMeta (os ),
151151 regexp .QuoteMeta (arch ),
@@ -154,7 +154,7 @@ func matchExecutableName(cmd, os, arch, target string) bool {
154154 return pattern .MatchString (target )
155155}
156156
157- func unarchiveTar (src io.Reader , cmd , os , arch string ) (io.Reader , error ) {
157+ func unarchiveTar (src io.Reader , relExe , os , arch string ) (io.Reader , error ) {
158158 t := tar .NewReader (src )
159159 for {
160160 h , err := t .Next ()
@@ -164,11 +164,11 @@ func unarchiveTar(src io.Reader, cmd, os, arch string) (io.Reader, error) {
164164 if err != nil {
165165 return nil , fmt .Errorf ("%w tar file: %s" , ErrCannotDecompressFile , err )
166166 }
167- _ , name := filepath .Split (h .Name )
168- if matchExecutableName (cmd , os , arch , name ) {
167+ _ , target := filepath .Split (h .Name )
168+ if matchExecutableName (relExe , os , arch , target ) {
169169 log .Printf ("Executable file %q was found in tar archive" , h .Name )
170170 return t , nil
171171 }
172172 }
173- return nil , fmt .Errorf ("%w in tar: %q" , ErrExecutableNotFoundInArchive , cmd )
173+ return nil , fmt .Errorf ("%w in tar: %q" , ErrExecutableNotFoundInArchive , relExe )
174174}
0 commit comments