// Copyright 2018 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 <base/files/file_path.h>
#include <base/files/file_util.h>
#include <base/logging.h>
#include <brillo/flag_helper.h>
#include <brillo/syslog_logging.h>

#include "arc/apk-cache/apk_cache_utils.h"
#include "arc/apk-cache/cache_cleaner.h"
#include "arc/apk-cache/cache_cleaner_db.h"

namespace {

constexpr char kHelpText[] =
    "Performs cleaning of the APK cache directory: "
    "/mnt/stateful_partition/unencrypted/apkcache/\n"
    "It removes:\n"
    " - all the files in the cache root;\n"
    " - all the package directories that:\n"
    "   1. have not been used within last 30 days;\n"
    "   2. contain unexpected files. Any file except APK, main and patch OBB\n"
    "      and JSON with package attributes is considered unexpected;\n"
    "   3. contain directories;\n"
    "   4. contain no or more than one APK file, no attributes JSON file,\n"
    "      more then one main OBB file, more then one patch OBB file.\n"
    "Returns 0 all the intended files and directories were successfully\n"
    "deleted.";

}  // namespace

int main(int argc, char** argv) {
  // Use "arc-" prefix so that the log is recorded in /var/log/arc.log.
  brillo::OpenLog("arc-apk-cache-cleaner", true /* log_pid */);
  brillo::FlagHelper::Init(argc, argv, kHelpText);
  brillo::InitLog(brillo::kLogToSyslog | brillo::kLogToStderrIfTty);

  base::FilePath cache_root(apk_cache::kApkCacheDir);
  if (!apk_cache::Clean(cache_root)) {
    LOG(ERROR) << "APK Cache cleaner experienced problem while cleaning.";
    return 1;
  }
  apk_cache::OpaqueFilesCleaner cleaner(cache_root);
  if (!cleaner.Clean()) {
    LOG(ERROR) << "APK Cache cleaner experienced problem while cleaning.";
    return 1;
  }

  LOG(INFO) << "APK Cache cleaner succeeded.";
  return 0;
}
