summaryrefslogtreecommitdiff
path: root/cli/standalone/binary.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/standalone/binary.rs')
-rw-r--r--cli/standalone/binary.rs24
1 files changed, 21 insertions, 3 deletions
diff --git a/cli/standalone/binary.rs b/cli/standalone/binary.rs
index 78978cefc..9d6d5262e 100644
--- a/cli/standalone/binary.rs
+++ b/cli/standalone/binary.rs
@@ -187,10 +187,19 @@ fn write_binary_bytes(
let target = compile_flags.resolve_target();
if target.contains("linux") {
- libsui::Elf::new(&original_bin).append(&writer, &mut file_writer)?;
+ libsui::Elf::new(&original_bin).append(
+ "d3n0l4nd",
+ &writer,
+ &mut file_writer,
+ )?;
} else if target.contains("windows") {
- libsui::PortableExecutable::from(&original_bin)?
- .write_resource("d3n0l4nd", writer)?
+ let mut pe = libsui::PortableExecutable::from(&original_bin)?;
+ if let Some(icon) = compile_flags.icon.as_ref() {
+ let icon = std::fs::read(icon)?;
+ pe = pe.set_icon(&icon)?;
+ }
+
+ pe.write_resource("d3n0l4nd", writer)?
.build(&mut file_writer)?;
} else if target.contains("darwin") {
libsui::Macho::from(original_bin)?
@@ -370,6 +379,15 @@ impl<'a> DenoCompileBinaryWriter<'a> {
}
set_windows_binary_to_gui(&mut original_binary)?;
}
+ if compile_flags.icon.is_some() {
+ let target = compile_flags.resolve_target();
+ if !target.contains("windows") {
+ bail!(
+ "The `--icon` flag is only available when targeting Windows (current: {})",
+ target,
+ )
+ }
+ }
self.write_standalone_binary(
writer,
original_binary,