Cmdlets/src/XpandPosh.Cmdlets/GetGitHubCommitIssue/Get-GitHubCommitIssue.cs

using System.Linq;
using System.Management.Automation;
using System.Reactive.Linq;
using System.Reactive.Threading.Tasks;
using System.Threading.Tasks;
using ImpromptuInterface;
using Octokit;
using XpandPosh.CmdLets;
 
namespace XpandPosh.Cmdlets.GetGitHubCommitIssue{
    [CmdletBinding]
    [Cmdlet(VerbsCommon.Get, "GitHubCommitIssue")]
    [OutputType(typeof(ICommitIssues))]
    public class GetGitHubCommitIssues : GitHubCmdlet{
         
        [Parameter(Mandatory = true)]
        public string Repository1{ get; set; }
        [Parameter(Mandatory = true)]
        public string Repository2{ get; set; }
        [Parameter(Mandatory = true)]
        public string Milestone{ get; set; }
 
        protected override Task ProcessRecordAsync(){
            var appClient = NewGitHubClient();
            return appClient.CommitIssues(Organization, Repository1, Repository2,Milestone)
                .Select(_ => _.commitIssues.Select(tuple => (_.repoTuple.repo1,_.repoTuple.repo2,tuple.commit,tuple.issues).ToClass().ActLike<ICommitIssues>()))
                .Catch(this,Repository1)
                .WriteObject(this)
                .ToTask();
        }
         
 
         
    }
    public interface ICommitIssues{
        Repository Repository1{ get; }
        Repository Repository2{ get; }
        Issue[] Issues{ get; }
        GitHubCommit GitHubCommit{ get; set; }
    }
}