uploadToGitHub static method

Future<void> uploadToGitHub(
  1. String apkPath
)

Implementation

static Future<void> uploadToGitHub(String apkPath) async {
  final config = Config().config;

  final gitHubConfig = config.uploadOptions.github;
  final gitHubToken = config.uploadOptions.github.token;
  final gitHubRepo = config.uploadOptions.github.repo;
  final gitHubTag = config.uploadOptions.github.tag;

  if (!gitHubConfig.enabled) {
    return;
  } else if (gitHubToken == null) {
    print('❌ GitHub token not found. Please check your config yaml file.');
    return;
  } else if (gitHubRepo == null) {
    print('❌ GitHub Repo not found. Please check your config yaml file.');
    return;
  }

  final tag = gitHubTag; // Use a dynamic versioning system if needed
  final releaseName = 'Release $tag';
  final releaseDescription =
      '🚀 Release built using Flutter Release X. For more details, visit: https://pub.dev/packages/flutter_release_x';
  final fileName = 'app-release.apk';

  try {
    final release = await _findReleaseByTag(gitHubRepo, tag, gitHubToken);
    if (release != null) {
      // If release exists, delete it and re-create the release
      await _deleteRelease(gitHubRepo, release['id'], gitHubToken);
      await _createAndUploadNewRelease(gitHubRepo, tag, releaseName,
          releaseDescription, apkPath, fileName, gitHubToken);
    } else {
      // If release doesn't exist, create a new release
      await _createAndUploadNewRelease(gitHubRepo, tag, releaseName,
          releaseDescription, apkPath, fileName, gitHubToken);
    }
  } catch (e) {
    print('❌ Error: $e');
    exit(0);
  }
}