From 622a0465d12606c36565ee538228a175725cde41 Mon Sep 17 00:00:00 2001 From: leedongmyung Date: Wed, 11 Jun 2025 10:21:06 +0900 Subject: [PATCH] slack file add --- lib/oto/commands/command.dart | 2 ++ lib/oto/commands/util/slack.dart | 22 +++++++++++++++++++++ lib/oto/data/command_data.dart | 20 +++++++++++++++++++ lib/oto/data/command_data.g.dart | 34 ++++++++++++++++++++++++++++++++ 4 files changed, 78 insertions(+) diff --git a/lib/oto/commands/command.dart b/lib/oto/commands/command.dart index 5e3425f..be1b430 100644 --- a/lib/oto/commands/command.dart +++ b/lib/oto/commands/command.dart @@ -80,6 +80,7 @@ enum CommandType { FileInfo, DirectoryCreate, Slack, + SlackFile, SlackBuild, StringSub, StringReplace, @@ -154,6 +155,7 @@ abstract class Command { CommandType.FileInfo: () => FileInfo(), CommandType.DirectoryCreate: () => DirectoryCreate(), CommandType.Slack: () => Slack(), + CommandType.SlackFile: () => SlackFile(), CommandType.SlackBuild: () => SlackBuild(), CommandType.StringSub: () => StringSub(), CommandType.StringReplace: () => StringReplace(), diff --git a/lib/oto/commands/util/slack.dart b/lib/oto/commands/util/slack.dart index 9d009e2..045b3f8 100644 --- a/lib/oto/commands/util/slack.dart +++ b/lib/oto/commands/util/slack.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'dart:convert'; +import 'dart:io'; import 'package:dart_framework/utils/slack/slack_data.dart'; import 'package:dart_framework/utils/system_util.dart'; @@ -9,6 +10,7 @@ import 'package:oto_cli/oto/commands/command.dart'; import 'package:oto_cli/oto/data/command_data.dart'; import 'package:color/color.dart'; import 'package:dart_framework/utils/slack/slack_sender.dart'; +import 'package:dart_framework/utils/slack/slack_data.dart' as slackData; class Slack extends Command { @override @@ -45,6 +47,26 @@ class Slack extends Command { } } +class SlackFile extends Command { + Function? get error => null; + + @override + Future execute(DataCommand command) async { + var data = DataSlackFile.fromJson(getParam(command)); + var slackFile = slackData.SlackFile(); + slackFile.title = data.title; + slackFile.initial_comment = data.initialComment; + slackFile.file = File(data.filePath); + slackFile.fileName = data.fileName; + slackFile.mimeType = data.mimeType; + + var sender = SlackSender(data.token); + await sender.sendFile(data.channel, slackFile); + + return await complete(0, command); + } +} + class SlackBuild extends Command { @override Future execute(DataCommand command) async { diff --git a/lib/oto/data/command_data.dart b/lib/oto/data/command_data.dart index fe04db2..2f12588 100644 --- a/lib/oto/data/command_data.dart +++ b/lib/oto/data/command_data.dart @@ -583,6 +583,26 @@ class DataSlackSender extends DataParam { Map toJson() => _$DataSlackSenderToJson(this); } +//TestflightUpload +@JsonSerializable() +class DataSlackFile extends DataParam { + DataSlackFile(); + + late String token; + late String channel; + late String filePath; + late String? title; + late String? initialComment; + late String? fileName; + late String? mimeType; + + factory DataSlackFile.fromJson(Map json) => + _$DataSlackFileFromJson(json); + @override + Map toJson() => _$DataSlackFileToJson(this); +} + + //Slack Build @JsonSerializable() class DataSlackBuild extends DataSlackSender { diff --git a/lib/oto/data/command_data.g.dart b/lib/oto/data/command_data.g.dart index 55d666d..ed4c701 100644 --- a/lib/oto/data/command_data.g.dart +++ b/lib/oto/data/command_data.g.dart @@ -86,6 +86,7 @@ const _$CommandTypeEnumMap = { CommandType.FileInfo: 'FileInfo', CommandType.DirectoryCreate: 'DirectoryCreate', CommandType.Slack: 'Slack', + CommandType.SlackFile: 'SlackFile', CommandType.SlackBuild: 'SlackBuild', CommandType.StringSub: 'StringSub', CommandType.StringReplace: 'StringReplace', @@ -1023,6 +1024,39 @@ Map _$DataSlackSenderToJson(DataSlackSender instance) => 'idMap': instance.idMap, }; +DataSlackFile _$DataSlackFileFromJson(Map json) => + DataSlackFile() + ..workspace = json['workspace'] as String? + ..passExitCodes = (json['passExitCodes'] as List?) + ?.map((e) => (e as num).toInt()) + .toList() + ..setResult = json['setResult'] as String? + ..setExitCode = json['setExitCode'] as String? + ..showPrint = json['showPrint'] as bool? + ..token = json['token'] as String + ..channel = json['channel'] as String + ..filePath = json['filePath'] as String + ..title = json['title'] as String? + ..initialComment = json['initialComment'] as String? + ..fileName = json['fileName'] as String? + ..mimeType = json['mimeType'] as String?; + +Map _$DataSlackFileToJson(DataSlackFile instance) => + { + 'workspace': instance.workspace, + 'passExitCodes': instance.passExitCodes, + 'setResult': instance.setResult, + 'setExitCode': instance.setExitCode, + 'showPrint': instance.showPrint, + 'token': instance.token, + 'channel': instance.channel, + 'filePath': instance.filePath, + 'title': instance.title, + 'initialComment': instance.initialComment, + 'fileName': instance.fileName, + 'mimeType': instance.mimeType, + }; + DataSlackBuild _$DataSlackBuildFromJson(Map json) => DataSlackBuild() ..workspace = json['workspace'] as String?