build method

Resolves the tracker adapter for config.

Implementation

TrackerResult<IssueTrackerClient> build(WorkflowConfig config) {
  final kind = config.tracker.kind;
  if (kind == null || kind.isEmpty) {
    return const TrackerError<IssueTrackerClient>(
      TrackerFailure(
        TrackerFailureCode.unsupportedTrackerKind,
        'tracker.kind is required.',
      ),
    );
  }

  switch (kind) {
    case 'linear':
      try {
        return TrackerSuccess<IssueTrackerClient>(
          LinearTrackerClient.fromConfig(config, httpClient: httpClient),
        );
      } on TrackerFailure catch (failure) {
        return TrackerError<IssueTrackerClient>(failure);
      }
    case 'local_plan':
      return TrackerSuccess<IssueTrackerClient>(
        LocalPlanTrackerClient.fromConfig(config),
      );
    default:
      return TrackerError<IssueTrackerClient>(
        TrackerFailure(
          TrackerFailureCode.unsupportedTrackerKind,
          'Unsupported tracker.kind: $kind.',
        ),
      );
  }
}