Skip to content

Commit 2ea3534

Browse files
authored
Merge pull request #337 from MediosZ/rs/move_artifacts
Rs Loader: Move artifacts to temp folder.
2 parents de976c7 + ad4d14b commit 2ea3534

File tree

2 files changed

+18
-22
lines changed
  • source/loaders/rs_loader/rust/compiler/src

2 files changed

+18
-22
lines changed

source/loaders/rs_loader/rust/compiler/src/lib.rs

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -119,11 +119,11 @@ impl Source {
119119
path.file_name()
120120
.expect(format!("Unable to get the filename of {:?}", path).as_str()),
121121
);
122-
122+
let temp_dir = std::env::temp_dir();
123123
SourceImpl {
124124
input: SourceInput(config::Input::File(path.clone())),
125125
input_path: input_path(&dir, &name),
126-
output: output_path(&dir, &name),
126+
output: output_path(&temp_dir, &name),
127127
source,
128128
}
129129
}
@@ -151,11 +151,11 @@ impl Source {
151151
path.file_name()
152152
.expect(format!("Unable to get the filename of {:?}", path).as_str()),
153153
);
154-
154+
let temp_dir = std::env::temp_dir();
155155
SourceImpl {
156156
input: SourceInput(config::Input::File(path.clone())),
157157
input_path: input_path(&dir, &name),
158-
output: output_path(&dir, &name),
158+
output: output_path(&temp_dir, &name),
159159
source,
160160
}
161161
}
@@ -563,13 +563,7 @@ impl rustc_driver::Callbacks for CompilerCallbacks {
563563
ErrorOutputType::default(),
564564
));
565565
// Set up inputs
566-
let wrapped_script_path = self
567-
.source
568-
.input_path
569-
.clone()
570-
.parent()
571-
.expect("input path has no parent")
572-
.join("metacall_wrapped_package.rs");
566+
let wrapped_script_path = std::env::temp_dir().join("metacall_wrapped_package.rs");
573567
if self.is_parsing {
574568
let mut wrapped_script = std::fs::File::create(&wrapped_script_path)
575569
.expect("unable to create wrapped script");

source/loaders/rs_loader/rust/compiler/src/wrapper/mod.rs

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -137,17 +137,18 @@ pub fn generate_wrapper(callbacks: CompilerCallbacks) -> std::io::Result<Compile
137137
generate_class_wrapper_for_package(&callbacks.classes.iter().collect());
138138
content.push_str(&class_wrapper);
139139

140-
let source_dir = path.parent().expect("input path has no parent");
140+
// use temp_dir instead.
141+
let temp_dir = std::env::temp_dir();
141142

142143
// create metacall_class file
143144
// println!("create: {:?}", source_dir.join("metacall_class.rs"));
144-
let mut class_file = File::create(source_dir.join("metacall_class.rs"))?;
145+
let mut class_file = File::create(temp_dir.join("metacall_class.rs"))?;
145146
let bytes = include_bytes!("class.rs");
146147
class_file.write_all(bytes)?;
147148
// println!("open: {:?}", source_dir.join("metacall_wrapped_package.rs"));
148149
let mut wrapper_file = std::fs::OpenOptions::new()
149150
.append(true)
150-
.open(source_dir.join("metacall_wrapped_package.rs"))?;
151+
.open(temp_dir.join("metacall_wrapped_package.rs"))?;
151152
// include class module
152153
wrapper_file.write_all(b"mod metacall_class;\nuse metacall_class::*;\n")?;
153154
wrapper_file.write_all(content.as_bytes())?;
@@ -172,29 +173,30 @@ pub fn generate_wrapper(callbacks: CompilerCallbacks) -> std::io::Result<Compile
172173

173174
match callbacks.source.input.0 {
174175
Input::File(input_path) => {
176+
let temp_dir = std::env::temp_dir();
175177
// generate wrappers to a file source_wrapper.rs
176-
let mut source_path = input_path.clone();
177-
let source_file = source_path
178+
let source_file = input_path
178179
.file_name()
179180
.expect("not a file")
180181
.to_str()
181182
.expect("Unable to cast OsStr to str")
182183
.to_owned();
183-
let _ = source_path.pop();
184184

185185
// create metacall_class file
186-
let mut class_file = File::create(source_path.join("metacall_class.rs"))?;
186+
let mut class_file = File::create(temp_dir.join("metacall_class.rs"))?;
187187
let bytes = include_bytes!("class.rs");
188188
class_file.write_all(bytes)?;
189189

190-
source_path.push("wrapped_".to_owned() + &source_file);
191-
let mut wrapper_file = File::create(&source_path)?;
190+
let mut wrapper_file =
191+
File::create(&temp_dir.join("wrapped_".to_owned() + &source_file))?;
192192
// include class module
193193
wrapper_file.write_all(b"mod metacall_class;\nuse metacall_class::*;\n")?;
194194
wrapper_file.write_all(content.as_bytes())?;
195-
let dst = format!("include!({:?});", callbacks.source.input_path.clone());
195+
let dst = format!("include!({:?});", callbacks.source.input_path);
196196
wrapper_file.write_all(dst.as_bytes())?;
197-
let mut source = Source::new(Source::File { path: source_path });
197+
let mut source = Source::new(Source::File {
198+
path: temp_dir.join("wrapped_".to_owned() + &source_file),
199+
});
198200
source.output = callbacks.source.output;
199201
// construct new callback
200202
Ok(CompilerCallbacks {

0 commit comments

Comments
 (0)