initReleaseFile method

Future<void> initReleaseFile()

Implementation

Future<void> initReleaseFile() async {
  try {
    Map<String, dynamic> release = {};
    final file = File('$currentPath/release.json');
    if (await file.exists()) {
      release = jsonDecode(await file.readAsString());
    }
    List<dynamic> versions = release['versions'] ?? [];

    String desc = pubspec['description'] ?? '';
    String version = pubspec['version'] ?? '';
    String repository = pubspec['repository'] ?? '';
    //set
    release['description'] = desc;
    release['version'] = version;
    release['repository'] = repository;

    release['changelog_url'] = "";
    release['readme_url'] = "";
    release['cover_url'] = "";
    var genReleasePlatforms = [Platform.operatingSystem];
    //auto
    if (repository.isNotEmpty) {
      //auto ထည့်မယ်
      release['changelog_url'] = getRawUrl(repository, 'CHANGELOG.md');
      release['readme_url'] = getRawUrl(repository, 'README.md');
      release['license_url'] = getRawUrl(repository, 'LICENSE');
    }
    //custom t_release
    final releasePubspecMap = pubspec['t_release'];
    if (releasePubspecMap != null) {
      final coverPath = releasePubspecMap['cover_path'];
      final coverUrl = releasePubspecMap['cover_url'];

      if (releasePubspecMap['changelog_url'] != null) {
        release['changelog_url'] = releasePubspecMap['changelog_url'];
      }
      if (releasePubspecMap['readme_url'] != null) {
        release['readme_url'] = releasePubspecMap['readme_url'];
      }
      //cover path
      if (coverPath != null && coverPath.toString().isNotEmpty) {
        if (repository.isNotEmpty) {
          release['cover_url'] = getRawUrl(repository, coverPath.toString());
        }
      }
      //cover url
      if (coverUrl != null && coverUrl.toString().isNotEmpty) {
        release['cover_url'] = coverUrl.toString();
      }
      //platforms
      if (releasePubspecMap['platfoms'] != null) {
        String platforms =
            releasePubspecMap['platfoms'] ?? Platform.operatingSystem;
        genReleasePlatforms = platforms.split(',');
      }
    }

    //version မတူညီရင် ထည့်မယ်
    if (versions.isEmpty || versions.first['version'] != version) {
      //add version
      for (var plaform in genReleasePlatforms) {
        versions.insert(0, {
          "version": version,
          "platform": plaform,
          "url": "",
          "description": "",
          "date": DateTime.now().millisecondsSinceEpoch,
        });
      }
    }
    //version list
    release['versions'] = versions;

    //save
    await file.writeAsString(JsonEncoder.withIndent(' ').convert(release));
  } catch (e) {
    print('initReleaseFile: ${e.toString()}');
  }
}