ensureReady method

Future<void> ensureReady()

Implementation

Future<void> ensureReady() async {
  if (_directory != null && _oldDirectory != null && _staleDirectory != null) {
    return;
  }

  final Directory directory;
  if (_overrideDirectory != null) {
    directory = _overrideDirectory;
  } else {
    final homeDir =
        Platform.environment['HOME'] ?? Platform.environment['USERPROFILE'];
    if (homeDir == null || homeDir.isEmpty) {
      throw Exception('Could not determine home directory');
    }
    directory = Directory(
      path.join(homeDir, '.atsign', 'at_activate_web', 'cramkeys'),
    );
  }

  final oldDirectory = Directory(path.join(directory.path, 'old'));
  final staleDirectory = Directory(path.join(directory.path, 'stale'));

  if (!await directory.exists()) {
    await directory.create(recursive: true);
  }

  if (!await oldDirectory.exists()) {
    await oldDirectory.create(recursive: true);
  }

  if (!await staleDirectory.exists()) {
    await staleDirectory.create(recursive: true);
  }

  _directory = directory;
  _oldDirectory = oldDirectory;
  _staleDirectory = staleDirectory;
}