6 changed files with 74 additions and 12 deletions
Binary file not shown.
@ -0,0 +1,59 @@ |
|||||
|
package main |
||||
|
|
||||
|
import ( |
||||
|
"gopkg.in/alecthomas/kingpin.v2" |
||||
|
"io/ioutil" |
||||
|
"fmt" |
||||
|
"strings" |
||||
|
"log" |
||||
|
) |
||||
|
|
||||
|
func main() { |
||||
|
outFilePt := kingpin.Flag("outfile", "File to output the variable").Short('o').String() |
||||
|
fileNamePt := kingpin.Arg("filename", "File to be converted into variable").Required().String() |
||||
|
kingpin.Parse() |
||||
|
|
||||
|
outFile := *outFilePt |
||||
|
fileName := *fileNamePt |
||||
|
|
||||
|
outputBytes, err := ioutil.ReadFile(fileName) |
||||
|
if err!= nil { |
||||
|
log.Fatal("Error: Cannot read file") |
||||
|
} |
||||
|
convertedStr := convertSanitize(outputBytes) |
||||
|
|
||||
|
if outFile == "" { |
||||
|
fmt.Println(convertedStr) |
||||
|
} else { |
||||
|
ioutil.WriteFile(outFile, []byte(convertedStr), 0660) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
func convertSanitize(inByte []byte) string { |
||||
|
var sb strings.Builder |
||||
|
|
||||
|
sb.WriteString("fileVar := \"") |
||||
|
|
||||
|
for i:=0;i<len(inByte);i++ { |
||||
|
if inByte[i] == '\n' { |
||||
|
sb.WriteString("\\n") |
||||
|
} else if inByte[i] == '\r' { |
||||
|
sb.WriteString("\\r") |
||||
|
} else if inByte[i] == '\t' { |
||||
|
sb.WriteString("\\t") |
||||
|
} else if inByte[i] == '"' { |
||||
|
sb.WriteString("\\\"") |
||||
|
} else if inByte[i] == '\\' { |
||||
|
sb.WriteString("\\\\") |
||||
|
} else if inByte[i] > 32 && inByte[i] < 126{ |
||||
|
sb.WriteByte(inByte[i]) |
||||
|
} else { |
||||
|
sb.WriteString(fmt.Sprintf("\\x%2x",inByte[i])) |
||||
|
} |
||||
|
if i%50 ==0 { |
||||
|
sb.WriteString("\"\nfileVar += \"") |
||||
|
} |
||||
|
} |
||||
|
sb.WriteString("\"\n") |
||||
|
return sb.String() |
||||
|
} |
Loading…
Reference in new issue