@@ -23,6 +23,7 @@ pub(super) mod function {
23
23
dry_run: bool,
24
24
worktree_dir: &Path,
25
25
destination_dir: PathBuf,
26
+
asset_dir: Option<BString>,
26
27
file: &OsStr,
27
28
Options { verbatim }: Options,
28
29
) -> anyhow::Result<()> {
@@ -76,7 +77,8 @@ pub(super) mod function {
76
77
.blame_path
77
78
.expect("blame path to be present as `debug_track_path == true`");
78
79
79
-
let assets = destination_dir.join("assets");
80
+
let asset_dir = asset_dir.unwrap_or("assets".into());
81
+
let assets = destination_dir.join(asset_dir.to_os_str()?);
80
82
eprintln!("{prefix} create directory '{assets}'", assets = assets.display());
81
83
82
84
if !dry_run {
@@ -107,7 +109,7 @@ pub(super) mod function {
107
109
}
108
110
}
109
111
110
-
let mut blame_script = BlameScript::new(blame_infos, Options { verbatim });
112
+
let mut blame_script = BlameScript::new(blame_infos, asset_dir, Options { verbatim });
111
113
blame_script.generate()?;
112
114
113
115
let script_file = destination_dir.join("create-history.sh");
@@ -130,9 +132,9 @@ pub(super) mod function {
130
132
}
131
133
132
134
enum BlameScriptOperation {
133
-
InitRepository,
135
+
InitRepository(BString),
134
136
RemoveFile(String),
135
-
CommitFile(BString, ObjectId),
137
+
CommitFile(BString, BString, ObjectId),
136
138
CheckoutTag(ObjectId),
137
139
PrepareMerge(Vec<ObjectId>),
138
140
CreateTag(ObjectId),
@@ -141,15 +143,15 @@ pub(super) mod function {
141
143
impl Display for BlameScriptOperation {
142
144
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
143
145
match self {
144
-
BlameScriptOperation::InitRepository => write!(
146
+
BlameScriptOperation::InitRepository(asset_dir) => write!(
145
147
f,
146
148
r"#!/bin/sh
147
149
148
150
set -e
149
151
150
152
git init
151
153
echo .gitignore >> .gitignore
152
-
echo assets/ >> .gitignore
154
+
echo {asset_dir}/ >> .gitignore
153
155
echo create-history.sh >> .gitignore
154
156
155
157
"
@@ -160,16 +162,15 @@ echo create-history.sh >> .gitignore
160
162
git rm {src}
161
163
"
162
164
),
163
-
BlameScriptOperation::CommitFile(src, commit_id) => {
165
+
BlameScriptOperation::CommitFile(asset_dir, src, commit_id) => {
164
166
writeln!(f, r"# make file {src} contain content at commit {commit_id}")?;
165
167
if let Some(pos) = src.rfind_byte(b'/') {
166
168
let dirname = src[..pos].as_bstr();
167
169
writeln!(f, "mkdir -p \"{dirname}\"")?;
168
170
}
169
171
write!(
170
172
f,
171
-
r"#
172
-
cp ./assets/{commit_id}.commit ./{src}
173
+
r"cp ./{asset_dir}/{commit_id}.commit ./{src}
173
174
git add {src}
174
175
git commit -m {commit_id}
175
176
"
@@ -194,17 +195,19 @@ git commit -m {commit_id}
194
195
blame_infos: Vec<BlamePathEntry>,
195
196
seen: BTreeSet<ObjectId>,
196
197
script: Vec<BlameScriptOperation>,
198
+
asset_dir: BString,
197
199
options: Options,
198
200
}
199
201
200
202
impl BlameScript {
201
-
fn new(blame_infos: Vec<BlamePathEntry>, options: Options) -> Self {
202
-
let script = vec![BlameScriptOperation::InitRepository];
203
+
fn new(blame_infos: Vec<BlamePathEntry>, asset_dir: BString, options: Options) -> Self {
204
+
let script = vec![BlameScriptOperation::InitRepository(asset_dir.clone())];
203
205
204
206
Self {
205
207
blame_infos,
206
208
seen: BTreeSet::default(),
207
209
script,
210
+
asset_dir,
208
211
options,
209
212
}
210
213
}
@@ -265,7 +268,8 @@ git commit -m {commit_id}
265
268
if let Some(delete_previous_file_operation) = delete_previous_file_operation {
266
269
self.script.push(delete_previous_file_operation);
267
270
}
268
-
self.script.push(BlameScriptOperation::CommitFile(src, commit_id));
271
+
self.script
272
+
.push(BlameScriptOperation::CommitFile(self.asset_dir.clone(), src, commit_id));
269
273
} else {
270
274
let ([first], rest) = parents.split_at(1) else {
271
275
unreachable!();
@@ -277,7 +281,8 @@ git commit -m {commit_id}
277
281
if let Some(delete_previous_file_operation) = delete_previous_file_operation {
278
282
self.script.push(delete_previous_file_operation);
279
283
}
280
-
self.script.push(BlameScriptOperation::CommitFile(src, commit_id));
284
+
self.script
285
+
.push(BlameScriptOperation::CommitFile(self.asset_dir.clone(), src, commit_id));
281
286
} else {
282
287
self.script.push(BlameScriptOperation::PrepareMerge(
283
288
rest.iter().map(|blame_path_entry| blame_path_entry.commit_id).collect(),
@@ -286,7 +291,8 @@ git commit -m {commit_id}
286
291
if let Some(delete_previous_file_operation) = delete_previous_file_operation {
287
292
self.script.push(delete_previous_file_operation);
288
293
}
289
-
self.script.push(BlameScriptOperation::CommitFile(src, commit_id));
294
+
self.script
295
+
.push(BlameScriptOperation::CommitFile(self.asset_dir.clone(), src, commit_id));
290
296
}
291
297
}
292
298
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4