From 825c0a0b7bbc9ae61fc248c30011bf421e7ca47f Mon Sep 17 00:00:00 2001 From: Ali Naqvi Date: Fri, 6 Mar 2026 17:21:52 +0800 Subject: [PATCH] feat: [PPT-2388] add cron task to prune strayed clone folders --- src/placeos-frontend-loader/loader.cr | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/placeos-frontend-loader/loader.cr b/src/placeos-frontend-loader/loader.cr index 54ffd3f..d2f1d78 100644 --- a/src/placeos-frontend-loader/loader.cr +++ b/src/placeos-frontend-loader/loader.cr @@ -132,9 +132,29 @@ module PlaceOS::FrontendLoader load_resources(timeout: LOAD_TIMEOUT).tap do # Pull base PlaceOS WWW folder create_base_www + # Clean up stale temp folders + cleanup_stale_temp_folders end end + # Remove temp folders older than 12 hours + protected def cleanup_stale_temp_folders + www_folder = File.expand_path(content_directory) + cutoff_time = Time.utc - 12.hours + + stale_dirs = Dir.children(www_folder) + .select { |child| File.directory?(Path[www_folder, child]) } + .select(&.matches?(/^.+_temp_\d+$/)) + .select do |dir| + path = Path[www_folder, dir] + File.info?(path).try { |info| info.modification_time < cutoff_time } || false + end + + stale_dirs.each { |dir| Log.info { "removing stale temp folder: #{dir}" } } + stale_dirs.map! { |dir| Path[www_folder, dir].to_s } + FileUtils.rm_rf(stale_dirs) unless stale_dirs.empty? + end + def process_resource(action : Resource::Action, resource : Model::Repository) : Resource::Result repository = resource