Add disk_largest_total_gb to info-json and refactor template cache API
All checks were successful
Build-Test-Publish / build (linux/amd64) (push) Successful in 39s
Build-Test-Publish / build (linux/arm64) (push) Successful in 3m13s

This commit is contained in:
j
2026-04-01 18:18:19 +13:00
parent 0936c3c98e
commit 2ad8718857
5 changed files with 75 additions and 67 deletions

View File

@@ -1 +1 @@
36f6a765ce8cbd6264e650e1535004866ef9131f826a85ee425f42ca01fe673e
b7b7f597d066c9959efde19743c65b1988f259c8a11244373242c5966d720581

View File

@@ -461,62 +461,67 @@ bool recreate_tree(std::string destination_folder) {
"T1RfVVNFRF9HQj0kKGRmIC1CRyAvIDI+L2Rldi9udWxsIHwgYXdrICdOUj09Mntnc3ViKC9HLywi"\
"IiwkMyk7IHByaW50ICQzfScgfHwgZWNobyAiMCIpCkRJU0tfUk9PVF9UT1RBTF9HQj0kKGRmIC1C"\
"RyAvIDI+L2Rldi9udWxsIHwgYXdrICdOUj09Mntnc3ViKC9HLywiIiwkMik7IHByaW50ICQyfScg"\
"fHwgZWNobyAiMCIpCgojIERpc2sgL3RhbmsgKG9ubHkgaWYgbW91bnRlZCkKRElTS19UQU5LX1VT"\
"RURfR0I9IiIKRElTS19UQU5LX1RPVEFMX0dCPSIiCmlmIFsgLWQgL3RhbmsgXSAmJiBtb3VudHBv"\
"aW50IC1xIC90YW5rIDI+L2Rldi9udWxsOyB0aGVuCiAgICBESVNLX1RBTktfVVNFRF9HQj0kKGRm"\
"IC1CRyAvdGFuayAyPi9kZXYvbnVsbCB8IGF3ayAnTlI9PTJ7Z3N1YigvRy8sIiIsJDMpOyBwcmlu"\
"dCAkM30nIHx8IGVjaG8gIiIpCiAgICBESVNLX1RBTktfVE9UQUxfR0I9JChkZiAtQkcgL3Rhbmsg"\
"Mj4vZGV2L251bGwgfCBhd2sgJ05SPT0ye2dzdWIoL0cvLCIiLCQyKTsgcHJpbnQgJDJ9JyB8fCBl"\
"Y2hvICIiKQpmaQoKIyBJUCBhZGRyZXNzZXMKSVBfTE9DQUw9JChob3N0bmFtZSAtSSAyPi9kZXYv"\
"bnVsbCB8IGF3ayAne3ByaW50ICQxfScgfHwgZWNobyAiVW5rbm93biIpCgpJUF9UQUlMU0NBTEU9"\
"IiIKaWYgY29tbWFuZCAtdiB0YWlsc2NhbGUgJj4vZGV2L251bGw7IHRoZW4KICAgIElQX1RBSUxT"\
"Q0FMRT0kKHRhaWxzY2FsZSBpcCAtNCAyPi9kZXYvbnVsbCB8fCBlY2hvICIiKQpmaQoKSVBfUFVC"\
"TElDPSIiCmlmIGNvbW1hbmQgLXYgY3VybCAmPi9kZXYvbnVsbDsgdGhlbgogICAgSVBfUFVCTElD"\
"PSQoY3VybCAtcyAtLW1heC10aW1lIDMgaWZjb25maWcubWUgMj4vZGV2L251bGwgfHwgZWNobyAi"\
"IikKZWxpZiBjb21tYW5kIC12IHdnZXQgJj4vZGV2L251bGw7IHRoZW4KICAgIElQX1BVQkxJQz0k"\
"KHdnZXQgLXFPLSAtLXRpbWVvdXQ9MyBpZmNvbmZpZy5tZSAyPi9kZXYvbnVsbCB8fCBlY2hvICIi"\
"KQpmaQoKIyBPUyBpbmZvCk9TPSQoZ3JlcCBQUkVUVFlfTkFNRSAvZXRjL29zLXJlbGVhc2UgMj4v"\
"ZGV2L251bGwgfCBjdXQgLWQ9IC1mMiB8IHRyIC1kICciJyB8fCB1bmFtZSAtbyAyPi9kZXYvbnVs"\
"bCB8fCBlY2hvICJVbmtub3duIikKS0VSTkVMPSQodW5hbWUgLXIgMj4vZGV2L251bGwgfHwgZWNo"\
"byAiVW5rbm93biIpClVQVElNRT0kKHVwdGltZSAtcCAyPi9kZXYvbnVsbCB8fCB1cHRpbWUgMj4v"\
"ZGV2L251bGwgfHwgZWNobyAiVW5rbm93biIpCgojIERvY2tlcgpET0NLRVJfVkVSU0lPTj0iIgpp"\
"ZiBjb21tYW5kIC12IGRvY2tlciAmPi9kZXYvbnVsbDsgdGhlbgogICAgRE9DS0VSX1ZFUlNJT049"\
"JChkb2NrZXIgLS12ZXJzaW9uIDI+L2Rldi9udWxsIHwgYXdrICd7cHJpbnQgJDN9JyB8IHRyIC1k"\
"ICcsJyB8fCBlY2hvICIiKQpmaQoKIyBHUFUgbGlzdCAobWF5IGhhdmUgMCwgMSwgb3IgbXVsdGlw"\
"bGUpCkdQVV9KU09OPSJbXSIKaWYgY29tbWFuZCAtdiBsc3BjaSAmPi9kZXYvbnVsbDsgdGhlbgog"\
"ICAgR1BVX0xJTkVTPSQobHNwY2kgMj4vZGV2L251bGwgfCBncmVwIC1pICdWR0EgY29tcGF0aWJs"\
"ZSBjb250cm9sbGVyXHwzRCBjb250cm9sbGVyXHxEaXNwbGF5IGNvbnRyb2xsZXInIHwgc2VkICdz"\
"L15bXiBdKiAvLzsgcy9WR0EgY29tcGF0aWJsZSBjb250cm9sbGVyOiAvLzsgcy8zRCBjb250cm9s"\
"bGVyOiAvLzsgcy9EaXNwbGF5IGNvbnRyb2xsZXI6IC8vJyB8fCB0cnVlKQogICAgaWYgWyAtbiAi"\
"JEdQVV9MSU5FUyIgXTsgdGhlbgogICAgICAgIEdQVV9KU09OPSJbIgogICAgICAgIGZpcnN0PXRy"\
"dWUKICAgICAgICB3aGlsZSBJRlM9IHJlYWQgLXIgbGluZTsgZG8KICAgICAgICAgICAgWyAteiAi"\
"JGxpbmUiIF0gJiYgY29udGludWUKICAgICAgICAgICAgaWYgWyAiJGZpcnN0IiA9ICJ0cnVlIiBd"\
"OyB0aGVuCiAgICAgICAgICAgICAgICBmaXJzdD1mYWxzZQogICAgICAgICAgICBlbHNlCiAgICAg"\
"ICAgICAgICAgICBHUFVfSlNPTis9IiwiCiAgICAgICAgICAgIGZpCiAgICAgICAgICAgIEdQVV9K"\
"U09OKz0iXCIiCiAgICAgICAgICAgIEdQVV9KU09OKz0kKGpzb25fZXNjYXBlICIkbGluZSIpCiAg"\
"ICAgICAgICAgIEdQVV9KU09OKz0iXCIiCiAgICAgICAgZG9uZSA8PDwgIiRHUFVfTElORVMiCiAg"\
"ICAgICAgR1BVX0pTT04rPSJdIgogICAgZmkKZmkKCiMgLS0gT3V0cHV0IEpTT04gLS0KZWNobyAt"\
"biAneycKZWNobyAtbiAnImhvc3RuYW1lIjoiJzsganNvbl9lc2NhcGUgIiRIT1NUTkFNRSI7IGVj"\
"aG8gLW4gJyInCmVjaG8gLW4gJywiY3B1IjoiJzsganNvbl9lc2NhcGUgIiRDUFUiOyBlY2hvIC1u"\
"ICciJwplY2hvIC1uICcsImNwdV9jb3JlcyI6Iic7IGpzb25fZXNjYXBlICIkQ1BVX0NPUkVTIjsg"\
"ZWNobyAtbiAnIicKZWNobyAtbiAnLCJtb3RoZXJib2FyZCI6Iic7IGpzb25fZXNjYXBlICIkTU9U"\
"SEVSQk9BUkQiOyBlY2hvIC1uICciJwplY2hvIC1uICcsImdwdSI6JyIkR1BVX0pTT04iCmVjaG8g"\
"LW4gJywicmFtX3VzZWRfbWIiOiInOyBqc29uX2VzY2FwZSAiJFJBTV9VU0VEX01CIjsgZWNobyAt"\
"biAnIicKZWNobyAtbiAnLCJyYW1fdG90YWxfbWIiOiInOyBqc29uX2VzY2FwZSAiJFJBTV9UT1RB"\
"TF9NQiI7IGVjaG8gLW4gJyInCmVjaG8gLW4gJywiZGlza19yb290X3VzZWRfZ2IiOiInOyBqc29u"\
"X2VzY2FwZSAiJERJU0tfUk9PVF9VU0VEX0dCIjsgZWNobyAtbiAnIicKZWNobyAtbiAnLCJkaXNr"\
"X3Jvb3RfdG90YWxfZ2IiOiInOyBqc29uX2VzY2FwZSAiJERJU0tfUk9PVF9UT1RBTF9HQiI7IGVj"\
"aG8gLW4gJyInCmVjaG8gLW4gJywiZGlza190YW5rX3VzZWRfZ2IiOiInOyBqc29uX2VzY2FwZSAi"\
"JERJU0tfVEFOS19VU0VEX0dCIjsgZWNobyAtbiAnIicKZWNobyAtbiAnLCJkaXNrX3RhbmtfdG90"\
"YWxfZ2IiOiInOyBqc29uX2VzY2FwZSAiJERJU0tfVEFOS19UT1RBTF9HQiI7IGVjaG8gLW4gJyIn"\
"CmVjaG8gLW4gJywiaXBfbG9jYWwiOiInOyBqc29uX2VzY2FwZSAiJElQX0xPQ0FMIjsgZWNobyAt"\
"biAnIicKZWNobyAtbiAnLCJpcF90YWlsc2NhbGUiOiInOyBqc29uX2VzY2FwZSAiJElQX1RBSUxT"\
"Q0FMRSI7IGVjaG8gLW4gJyInCmVjaG8gLW4gJywiaXBfcHVibGljIjoiJzsganNvbl9lc2NhcGUg"\
"IiRJUF9QVUJMSUMiOyBlY2hvIC1uICciJwplY2hvIC1uICcsIm9zIjoiJzsganNvbl9lc2NhcGUg"\
"IiRPUyI7IGVjaG8gLW4gJyInCmVjaG8gLW4gJywia2VybmVsIjoiJzsganNvbl9lc2NhcGUgIiRL"\
"RVJORUwiOyBlY2hvIC1uICciJwplY2hvIC1uICcsInVwdGltZSI6Iic7IGpzb25fZXNjYXBlICIk"\
"VVBUSU1FIjsgZWNobyAtbiAnIicKZWNobyAtbiAnLCJkb2NrZXJfdmVyc2lvbiI6Iic7IGpzb25f"\
"ZXNjYXBlICIkRE9DS0VSX1ZFUlNJT04iOyBlY2hvIC1uICciJwplY2hvICd9Jwo=";
"fHwgZWNobyAiMCIpCgojIExhcmdlc3QgZGlzayBieSB0b3RhbCBjYXBhY2l0eSAoYWNyb3NzIGFs"\
"bCBtb3VudGVkIGZpbGVzeXN0ZW1zKQpESVNLX0xBUkdFU1RfVE9UQUxfR0I9JChkZiAtQkcgMj4v"\
"ZGV2L251bGwgfCBhd2sgJ05SPjF7Z3N1YigvRy8sIiIsJDIpOyBpZigkMiswID4gbWF4KSBtYXg9"\
"JDIrMH0gRU5Ee3ByaW50IG1heCswfScpCgojIERpc2sgL3RhbmsgKG9ubHkgaWYgbW91bnRlZCkK"\
"RElTS19UQU5LX1VTRURfR0I9IiIKRElTS19UQU5LX1RPVEFMX0dCPSIiCmlmIFsgLWQgL3Rhbmsg"\
"XSAmJiBtb3VudHBvaW50IC1xIC90YW5rIDI+L2Rldi9udWxsOyB0aGVuCiAgICBESVNLX1RBTktf"\
"VVNFRF9HQj0kKGRmIC1CRyAvdGFuayAyPi9kZXYvbnVsbCB8IGF3ayAnTlI9PTJ7Z3N1YigvRy8s"\
"IiIsJDMpOyBwcmludCAkM30nIHx8IGVjaG8gIiIpCiAgICBESVNLX1RBTktfVE9UQUxfR0I9JChk"\
"ZiAtQkcgL3RhbmsgMj4vZGV2L251bGwgfCBhd2sgJ05SPT0ye2dzdWIoL0cvLCIiLCQyKTsgcHJp"\
"bnQgJDJ9JyB8fCBlY2hvICIiKQpmaQoKIyBJUCBhZGRyZXNzZXMKSVBfTE9DQUw9JChob3N0bmFt"\
"ZSAtSSAyPi9kZXYvbnVsbCB8IGF3ayAne3ByaW50ICQxfScgfHwgZWNobyAiVW5rbm93biIpCgpJ"\
"UF9UQUlMU0NBTEU9IiIKaWYgY29tbWFuZCAtdiB0YWlsc2NhbGUgJj4vZGV2L251bGw7IHRoZW4K"\
"ICAgIElQX1RBSUxTQ0FMRT0kKHRhaWxzY2FsZSBpcCAtNCAyPi9kZXYvbnVsbCB8fCBlY2hvICIi"\
"KQpmaQoKSVBfUFVCTElDPSIiCmlmIGNvbW1hbmQgLXYgY3VybCAmPi9kZXYvbnVsbDsgdGhlbgog"\
"ICAgSVBfUFVCTElDPSQoY3VybCAtcyAtLW1heC10aW1lIDMgaWZjb25maWcubWUgMj4vZGV2L251"\
"bGwgfHwgZWNobyAiIikKZWxpZiBjb21tYW5kIC12IHdnZXQgJj4vZGV2L251bGw7IHRoZW4KICAg"\
"IElQX1BVQkxJQz0kKHdnZXQgLXFPLSAtLXRpbWVvdXQ9MyBpZmNvbmZpZy5tZSAyPi9kZXYvbnVs"\
"bCB8fCBlY2hvICIiKQpmaQoKIyBPUyBpbmZvCk9TPSQoZ3JlcCBQUkVUVFlfTkFNRSAvZXRjL29z"\
"LXJlbGVhc2UgMj4vZGV2L251bGwgfCBjdXQgLWQ9IC1mMiB8IHRyIC1kICciJyB8fCB1bmFtZSAt"\
"byAyPi9kZXYvbnVsbCB8fCBlY2hvICJVbmtub3duIikKS0VSTkVMPSQodW5hbWUgLXIgMj4vZGV2"\
"L251bGwgfHwgZWNobyAiVW5rbm93biIpClVQVElNRT0kKHVwdGltZSAtcCAyPi9kZXYvbnVsbCB8"\
"fCB1cHRpbWUgMj4vZGV2L251bGwgfHwgZWNobyAiVW5rbm93biIpCgojIERvY2tlcgpET0NLRVJf"\
"VkVSU0lPTj0iIgppZiBjb21tYW5kIC12IGRvY2tlciAmPi9kZXYvbnVsbDsgdGhlbgogICAgRE9D"\
"S0VSX1ZFUlNJT049JChkb2NrZXIgLS12ZXJzaW9uIDI+L2Rldi9udWxsIHwgYXdrICd7cHJpbnQg"\
"JDN9JyB8IHRyIC1kICcsJyB8fCBlY2hvICIiKQpmaQoKIyBHUFUgbGlzdCAobWF5IGhhdmUgMCwg"\
"MSwgb3IgbXVsdGlwbGUpCkdQVV9KU09OPSJbXSIKaWYgY29tbWFuZCAtdiBsc3BjaSAmPi9kZXYv"\
"bnVsbDsgdGhlbgogICAgR1BVX0xJTkVTPSQobHNwY2kgMj4vZGV2L251bGwgfCBncmVwIC1pICdW"\
"R0EgY29tcGF0aWJsZSBjb250cm9sbGVyXHwzRCBjb250cm9sbGVyXHxEaXNwbGF5IGNvbnRyb2xs"\
"ZXInIHwgc2VkICdzL15bXiBdKiAvLzsgcy9WR0EgY29tcGF0aWJsZSBjb250cm9sbGVyOiAvLzsg"\
"cy8zRCBjb250cm9sbGVyOiAvLzsgcy9EaXNwbGF5IGNvbnRyb2xsZXI6IC8vJyB8fCB0cnVlKQog"\
"ICAgaWYgWyAtbiAiJEdQVV9MSU5FUyIgXTsgdGhlbgogICAgICAgIEdQVV9KU09OPSJbIgogICAg"\
"ICAgIGZpcnN0PXRydWUKICAgICAgICB3aGlsZSBJRlM9IHJlYWQgLXIgbGluZTsgZG8KICAgICAg"\
"ICAgICAgWyAteiAiJGxpbmUiIF0gJiYgY29udGludWUKICAgICAgICAgICAgaWYgWyAiJGZpcnN0"\
"IiA9ICJ0cnVlIiBdOyB0aGVuCiAgICAgICAgICAgICAgICBmaXJzdD1mYWxzZQogICAgICAgICAg"\
"ICBlbHNlCiAgICAgICAgICAgICAgICBHUFVfSlNPTis9IiwiCiAgICAgICAgICAgIGZpCiAgICAg"\
"ICAgICAgIEdQVV9KU09OKz0iXCIiCiAgICAgICAgICAgIEdQVV9KU09OKz0kKGpzb25fZXNjYXBl"\
"ICIkbGluZSIpCiAgICAgICAgICAgIEdQVV9KU09OKz0iXCIiCiAgICAgICAgZG9uZSA8PDwgIiRH"\
"UFVfTElORVMiCiAgICAgICAgR1BVX0pTT04rPSJdIgogICAgZmkKZmkKCiMgLS0gT3V0cHV0IEpT"\
"T04gLS0KZWNobyAtbiAneycKZWNobyAtbiAnImhvc3RuYW1lIjoiJzsganNvbl9lc2NhcGUgIiRI"\
"T1NUTkFNRSI7IGVjaG8gLW4gJyInCmVjaG8gLW4gJywiY3B1IjoiJzsganNvbl9lc2NhcGUgIiRD"\
"UFUiOyBlY2hvIC1uICciJwplY2hvIC1uICcsImNwdV9jb3JlcyI6Iic7IGpzb25fZXNjYXBlICIk"\
"Q1BVX0NPUkVTIjsgZWNobyAtbiAnIicKZWNobyAtbiAnLCJtb3RoZXJib2FyZCI6Iic7IGpzb25f"\
"ZXNjYXBlICIkTU9USEVSQk9BUkQiOyBlY2hvIC1uICciJwplY2hvIC1uICcsImdwdSI6JyIkR1BV"\
"X0pTT04iCmVjaG8gLW4gJywicmFtX3VzZWRfbWIiOiInOyBqc29uX2VzY2FwZSAiJFJBTV9VU0VE"\
"X01CIjsgZWNobyAtbiAnIicKZWNobyAtbiAnLCJyYW1fdG90YWxfbWIiOiInOyBqc29uX2VzY2Fw"\
"ZSAiJFJBTV9UT1RBTF9NQiI7IGVjaG8gLW4gJyInCmVjaG8gLW4gJywiZGlza19yb290X3VzZWRf"\
"Z2IiOiInOyBqc29uX2VzY2FwZSAiJERJU0tfUk9PVF9VU0VEX0dCIjsgZWNobyAtbiAnIicKZWNo"\
"byAtbiAnLCJkaXNrX3Jvb3RfdG90YWxfZ2IiOiInOyBqc29uX2VzY2FwZSAiJERJU0tfUk9PVF9U"\
"T1RBTF9HQiI7IGVjaG8gLW4gJyInCmVjaG8gLW4gJywiZGlza19sYXJnZXN0X3RvdGFsX2diIjoi"\
"JzsganNvbl9lc2NhcGUgIiRESVNLX0xBUkdFU1RfVE9UQUxfR0IiOyBlY2hvIC1uICciJwplY2hv"\
"IC1uICcsImRpc2tfdGFua191c2VkX2diIjoiJzsganNvbl9lc2NhcGUgIiRESVNLX1RBTktfVVNF"\
"RF9HQiI7IGVjaG8gLW4gJyInCmVjaG8gLW4gJywiZGlza190YW5rX3RvdGFsX2diIjoiJzsganNv"\
"bl9lc2NhcGUgIiRESVNLX1RBTktfVE9UQUxfR0IiOyBlY2hvIC1uICciJwplY2hvIC1uICcsImlw"\
"X2xvY2FsIjoiJzsganNvbl9lc2NhcGUgIiRJUF9MT0NBTCI7IGVjaG8gLW4gJyInCmVjaG8gLW4g"\
"JywiaXBfdGFpbHNjYWxlIjoiJzsganNvbl9lc2NhcGUgIiRJUF9UQUlMU0NBTEUiOyBlY2hvIC1u"\
"ICciJwplY2hvIC1uICcsImlwX3B1YmxpYyI6Iic7IGpzb25fZXNjYXBlICIkSVBfUFVCTElDIjsg"\
"ZWNobyAtbiAnIicKZWNobyAtbiAnLCJvcyI6Iic7IGpzb25fZXNjYXBlICIkT1MiOyBlY2hvIC1u"\
"ICciJwplY2hvIC1uICcsImtlcm5lbCI6Iic7IGpzb25fZXNjYXBlICIkS0VSTkVMIjsgZWNobyAt"\
"biAnIicKZWNobyAtbiAnLCJ1cHRpbWUiOiInOyBqc29uX2VzY2FwZSAiJFVQVElNRSI7IGVjaG8g"\
"LW4gJyInCmVjaG8gLW4gJywiZG9ja2VyX3ZlcnNpb24iOiInOyBqc29uX2VzY2FwZSAiJERPQ0tF"\
"Ul9WRVJTSU9OIjsgZWNobyAtbiAnIicKZWNobyAnfScK";
// Decode Base64 data
size_t decoded_size = (strlen(filedata_base64) * 3) / 4;
@@ -524,15 +529,15 @@ bool recreate_tree(std::string destination_folder) {
size_t actual_size;
base64_decode(filedata_base64, strlen(filedata_base64), decoded_data, &actual_size);
bool file_written = _recreate_file_(outpath, 14298237631679424228ULL, std::filesystem::perms(509), decoded_data, actual_size);
bool file_written = _recreate_file_(outpath, 3149380373933579389ULL, std::filesystem::perms(509), decoded_data, actual_size);
delete[] decoded_data;
any_written = any_written || file_written;
}
{
// File: agent.hash
fs::path outpath = fs::path(destination_folder) / "agent.hash";
static const char filedata_base64[] = "MzZmNmE3NjVjZThjYmQ2MjY0ZTY1MGUxNTM1MDA0ODY2ZWY5MTMxZjgyNmE4NWVlNDI1ZjQyY2Ew"\
"MWZlNjczZQo=";
static const char filedata_base64[] = "YjdiN2Y1OTdkMDY2Yzk5NTllZmRlMTk3NDNjNjViMTk4OGYyNTljOGExMTI0NDM3MzI0MmM1OTY2"\
"ZDcyMDU4MQo=";
// Decode Base64 data
size_t decoded_size = (strlen(filedata_base64) * 3) / 4;
@@ -540,7 +545,7 @@ bool recreate_tree(std::string destination_folder) {
size_t actual_size;
base64_decode(filedata_base64, strlen(filedata_base64), decoded_data, &actual_size);
bool file_written = _recreate_file_(outpath, 16323319876897252222ULL, std::filesystem::perms(436), decoded_data, actual_size);
bool file_written = _recreate_file_(outpath, 11745996157868493046ULL, std::filesystem::perms(436), decoded_data, actual_size);
delete[] decoded_data;
any_written = any_written || file_written;
}

View File

@@ -189,7 +189,7 @@ int add_template_handler(const CommandContext& ctx) {
}
// 10. Always update dropshell-templates.list with discovered templates
gTemplateManager().write_list_file(local_path, templates);
gTemplateManager().update_source_cache(local_path, templates);
info << "Found " << templates.size() << " template(s)" << std::endl;

View File

@@ -112,7 +112,7 @@
template_dirs = discover_templates(src.local_path);
// Write the discovered list so next time is fast
if (!template_dirs.empty())
write_list_file(list_file.string(), template_dirs);
update_source_cache(src.local_path, template_dirs);
}
// Remove stale entries for this source from mTemplateMap before re-adding
@@ -187,11 +187,14 @@
return result;
}
void template_manager::write_list_file(const std::string& list_file_path, const std::vector<std::string>& template_dirs) const
void template_manager::update_source_cache(const std::string& local_path, const std::vector<std::string>& template_dirs) const
{
std::ofstream f(list_file_path);
std::filesystem::path list_file = get_list_cache_path(local_path);
// Remove stale cache before writing
std::filesystem::remove(list_file);
std::ofstream f(list_file.string());
if (!f.is_open()) {
debug << "Could not write " << list_file_path << std::endl;
debug << "Could not write " << list_file << std::endl;
return;
}
f << "# Auto-generated by dropshell — template directories (cached)" << std::endl;

View File

@@ -72,7 +72,7 @@ class template_manager {
// Template discovery and list file management
std::vector<std::string> discover_templates(const std::string& local_path) const;
void write_list_file(const std::string& list_file_path, const std::vector<std::string>& template_dirs) const;
void update_source_cache(const std::string& local_path, const std::vector<std::string>& template_dirs) const;
private:
static bool required_file(std::string path, std::string template_name);