Class: Ace::Task::Molecules::GithubIssueSyncAdapter
- Inherits:
-
Object
- Object
- Ace::Task::Molecules::GithubIssueSyncAdapter
- Defined in:
- lib/ace/task/molecules/github_issue_sync_adapter.rb
Overview
Bridges ace-task lifecycle events to reusable ace-git issue sync primitives.
Constant Summary collapse
- UNAVAILABLE_MESSAGE =
"GitHub issue sync primitives are unavailable. " \ "Complete dependency task 8r4.t.ilo.2 or update ace-git."
- CANDIDATE_INTEGRATIONS =
[ ["Ace::Git::Molecules::GithubIssueSync", :validate_link!], ["Ace::Git::Molecules::IssueSync", :validate_link!], ["Ace::Git::Molecules::GithubIssueSync", :sync_task], ["Ace::Git::Molecules::IssueSync", :sync_task] ].freeze
Instance Method Summary collapse
- #sync_task(task:, reason:, previous_task: nil) ⇒ Object
- #validate_link!(issue_id:, previous_task: nil) ⇒ Object
Instance Method Details
#sync_task(task:, reason:, previous_task: nil) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/ace/task/molecules/github_issue_sync_adapter.rb', line 32 def sync_task(task:, reason:, previous_task: nil) current_issue_ids = [task.["github_issue"]].compact.map(&:to_i).uniq previous_issue_ids = [previous_task&.&.[]("github_issue")].compact.map(&:to_i).uniq issue_ids = (current_issue_ids + previous_issue_ids).uniq return {synced: 0, issues: []} if issue_ids.empty? receiver, method_name = resolve_integration(:sync_task) raise UNAVAILABLE_MESSAGE unless receiver && method_name payload = { task_id: task.id, task_title: task.title, task_status: task.status, task_path: task.file_path || task.path, issue_ids: issue_ids, current_issue_ids: current_issue_ids, reason: reason, previous: previous_task ? { id: previous_task.id, title: previous_task.title, status: previous_task.status, path: previous_task.file_path || previous_task.path } : nil } receiver.public_send(method_name, **payload) {synced: issue_ids.length, issues: issue_ids} end |
#validate_link!(issue_id:, previous_task: nil) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/ace/task/molecules/github_issue_sync_adapter.rb', line 18 def validate_link!(issue_id:, previous_task: nil) return unless issue_id.to_i.positive? receiver, method_name = resolve_integration(:validate_link!) raise UNAVAILABLE_MESSAGE unless receiver && method_name receiver.public_send( method_name, issue_id: issue_id.to_i, task_id: previous_task&.id, previous_task_id: previous_task&.id ) end |