Skip to content

Commit

Permalink
Merge pull request #4 from toridori-inc/release-pr-merged
Browse files Browse the repository at this point in the history
Release PRがマージされたときのタスクを追加
  • Loading branch information
K9i-0 authored Apr 5, 2023
2 parents 544f938 + f382e0d commit dedd4c6
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 0 deletions.
62 changes: 62 additions & 0 deletions lib/src/toridori_grinder_tasks.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,24 @@ import 'dart:io';

import 'package:github/github.dart';
import 'package:grinder/grinder.dart';
import 'package:http/http.dart' as http;
import 'package:yaml/yaml.dart';

void addAllTasks({
required String repositoryOwner,
required String repositoryName,
required String gitUserEmail,
required String gitUserName,
}) {
addFormatTask();
addReleaseTask(
repositoryOwner: repositoryOwner,
repositoryName: repositoryName,
);
addOnReleasePrMergedTask(
gitUserEmail: gitUserEmail,
gitUserName: gitUserName,
);
}

void addFormatTask() {
Expand Down Expand Up @@ -61,6 +68,28 @@ void addReleaseTask({
);
}

void addOnReleasePrMergedTask({
required String gitUserEmail,
required String gitUserName,
}) {
addTask(
GrinderTask(
'on-release-pr-merged',
description: 'Release PRがマージされたときのタスク',
taskFunction: () async {
run('git',
arguments: ['config', '--local', 'user.email', '"$gitUserEmail"']);
run('git',
arguments: ['config', '--local', 'user.name', '"$gitUserName"']);
_tag();
log('tagを打ちました');
await closeMilestone();
log('milestoneをcloseしました');
},
),
);
}

/// バージョン更新
String _incrementVersion() {
final args = context.invocation.arguments;
Expand Down Expand Up @@ -115,3 +144,36 @@ String _format() {

return result;
}

// Github Actions側でmasterをチェックアウトする前提
void _tag() {
final pubspecFile = File('./pubspec.yaml');
final pubspecString = pubspecFile.readAsStringSync();

final pubspec = loadYaml(pubspecString);
final version = pubspec['version'] as String;

// 現在のバージョンでタグを打つ
run('git', arguments: ['tag', version]);
// リモートに反映
run('git', arguments: ['push', 'origin', version]);
}

// milestoneをcloseする
Future<void> closeMilestone() async {
final envVars = Platform.environment;
final githubToken = envVars['GITHUB_TOKEN'];
final repository = envVars['REPO'];
final milestoneNumber = envVars['MILESTONE_NUMBER'];
final result = await http.patch(
Uri.parse(
'https://api.github.com/repos/$repository/milestones/$milestoneNumber'),
headers: {
'Authorization': 'token $githubToken',
'Accept': 'application/vnd.github.v3+json',
},
body: '{"state":"closed"}',
);
log(result.statusCode.toString());
log(result.body);
}
1 change: 1 addition & 0 deletions pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ environment:
dependencies:
github: ^9.9.0
grinder: ^0.9.3
http: ^0.13.5
yaml: ^3.1.1

dev_dependencies:
Expand Down

0 comments on commit dedd4c6

Please sign in to comment.