/**
   * Crawls the given directory for the toast_autorun.conf file. If the file is found, the USB
   * storage device is configured using it. If it is not found, the user is warned and the device
   * marked as 'Invalid'. Running 'usb generate' will validate any invalid drives by generating this
   * file. A restart will be required after runnning the generate command.
   */
  public static void crawlSym(File file) {
    if (!file.exists()) return;
    try {
      File canon = file.getCanonicalFile();
      if (!canon.exists()) return;

      File configuration = new File(canon, "toast_autorun.conf");
      if (!configuration.exists()) {
        invalidDrives.add(canon);
        logger.warn(
            "Invalid USB Mass Storage Device Detected -- No toast_autorun.conf file: " + canon);
        logger.warn(
            "Run 'usb generate' to create a new toast_autorun.conf file on any invalid drives");
        return;
      }

      ProfilerEntity profilerEntity = new ProfilerEntity().start();
      ModuleConfig pref = new ModuleConfig(configuration);
      String drive_name =
          pref.getString("toast.device_name", "Team_####_USB_Device").replace(" ", "_");
      MassStorageDevice device = new MassStorageDevice(canon, pref, drive_name);
      connectedDevices.add(device);
      if (device.override_modules && !device.concurrent_modules) override = true;

      logger.info(
          "USB Mass Storage Device Detected -- Valid! " + canon + " (" + device.drive_name + ")");

      if (device.config_priority >= config_last) {
        config_highest = device;
        config_last = device.config_priority;
      }
      if (device.filesystem_priority >= filesystem_last) {
        filesystem_highest = device;
        filesystem_last = device.filesystem_priority;
      }
      profilerEntity.stop();
      profilerEntity.setName(drive_name);
      Profiler.INSTANCE.section("USB").pushEntity(profilerEntity);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }