blob: cefc9449d93a0bb47dc6ca2d216c20d5a3696ffd [file] [log] [blame]
// Copyright 2019 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "arc/apk-cache/cache_cleaner_utils.h"
#include <string>
#include <unordered_set>
#include <base/files/file_enumerator.h>
#include <base/files/file_path.h>
#include <base/files/file_util.h>
#include <base/logging.h>
namespace apk_cache {
bool RemoveUnexpectedItemsFromDir(
const base::FilePath& root,
int item_type,
const std::unordered_set<std::string>& expected_items) {
bool success = true;
base::FileEnumerator unexpected_items(root, false /* recursive */, item_type);
for (base::FilePath unexpected_file_path = unexpected_items.Next();
!unexpected_file_path.empty();
unexpected_file_path = unexpected_items.Next()) {
if (expected_items.find(unexpected_file_path.BaseName().MaybeAsASCII()) ==
expected_items.end()) {
LOG(INFO) << "Deleting " << unexpected_file_path.value();
if (!base::DeletePathRecursively(unexpected_file_path)) {
LOG(ERROR) << "Could not delete " << unexpected_file_path.value();
success = false;
}
}
}
return success;
}
} // namespace apk_cache