29 lines
457 B
Go
29 lines
457 B
Go
package build
|
|
|
|
import (
|
|
"bufio"
|
|
"os"
|
|
|
|
"git.akyoto.dev/cli/q/src/build/elf"
|
|
)
|
|
|
|
// Write writes the executable file to disk.
|
|
func Write(filePath string, code []byte, data []byte) error {
|
|
file, err := os.Create(filePath)
|
|
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
buffer := bufio.NewWriter(file)
|
|
executable := elf.New(code, data)
|
|
executable.Write(buffer)
|
|
buffer.Flush()
|
|
err = file.Close()
|
|
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return os.Chmod(filePath, 0755)
|
|
}
|