-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #10 from TzviPM/comments
✨ feat: Adds comments upon successful completion
- Loading branch information
Showing
19 changed files
with
342 additions
and
91 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
import { z } from 'zod'; | ||
import { Database } from './database'; | ||
|
||
export const deployRequestSchema = z.object({ | ||
id: z.string(), | ||
number: z.number(), | ||
html_url: z.string(), | ||
}); | ||
|
||
export class DeployRequest { | ||
public id: string; | ||
public number: number; | ||
public htmlUrl: string; | ||
|
||
public get path() { | ||
return `${this.database.path}/deploy-requests/${this.number}`; | ||
} | ||
|
||
constructor( | ||
private readonly database: Database, | ||
data: z.infer<typeof deployRequestSchema>, | ||
) { | ||
this.id = data.id; | ||
this.number = data.number; | ||
this.htmlUrl = data.html_url; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
import { Test, TestingModule } from '@nestjs/testing'; | ||
import { CommentsService } from './comments.service'; | ||
|
||
describe('CommentsService', () => { | ||
let service: CommentsService; | ||
|
||
beforeEach(async () => { | ||
const module: TestingModule = await Test.createTestingModule({ | ||
providers: [CommentsService], | ||
}).compile(); | ||
|
||
service = module.get<CommentsService>(CommentsService); | ||
}); | ||
|
||
it('should be defined', () => { | ||
expect(service).toBeDefined(); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
import { Injectable } from '@nestjs/common'; | ||
import { Message } from './messages'; | ||
|
||
@Injectable() | ||
export abstract class CommentsService { | ||
abstract postComment(message: Message): void; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
import { CommentsService } from './comments.service'; | ||
import * as github from '@actions/github'; | ||
import { Injectable } from '@nestjs/common'; | ||
import { Message } from './messages'; | ||
import { ActionsService } from '../actions/actions.service'; | ||
import { ContextService } from '../context/context.service'; | ||
|
||
type OctoKit = ReturnType<typeof github.getOctokit>; | ||
|
||
@Injectable() | ||
export class GithubCommentsService implements CommentsService { | ||
private token: string; | ||
private client: OctoKit; | ||
|
||
constructor( | ||
private actionsService: ActionsService, | ||
private contextService: ContextService, | ||
) { | ||
this.token = this.actionsService.getInput('github-token'); | ||
this.client = github.getOctokit(this.token); | ||
} | ||
|
||
postComment(message: Message): void { | ||
const pr = this.contextService.getPullRequest(); | ||
|
||
this.client.rest.issues.createComment({ | ||
owner: pr.repo.owner, | ||
repo: pr.repo.name, | ||
issue_number: pr.number, | ||
body: message.toGFM(), | ||
}); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
import { CommentsService } from './comments.service'; | ||
import { Injectable, Logger } from '@nestjs/common'; | ||
import { Message } from './messages'; | ||
|
||
@Injectable() | ||
export class LoggerCommentsService implements CommentsService { | ||
private logger = new Logger(LoggerCommentsService.name); | ||
|
||
postComment(message: Message): void { | ||
this.logger.log(message.toPlainText()); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
import { LinkNode } from './link'; | ||
import { Node } from './node'; | ||
import { SequenceNode } from './sequence'; | ||
import { TextNode } from './text'; | ||
|
||
export class Message { | ||
static Text(text: string) { | ||
return new Message(new TextNode(text)); | ||
} | ||
|
||
static Link(text: string, href?: string) { | ||
if (href == null) { | ||
href = text; | ||
} | ||
return new Message(new LinkNode(text, href)); | ||
} | ||
|
||
static Seq(...nodes: Node[]) { | ||
return new Message(new SequenceNode(nodes)); | ||
} | ||
|
||
private constructor(private root: Node) {} | ||
|
||
toPlainText(): string { | ||
return this.root.toPlainText(); | ||
} | ||
|
||
toGFM(): string { | ||
return this.root.toGFM(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
import { Node } from './node'; | ||
|
||
export class LinkNode extends Node { | ||
constructor( | ||
private text: string, | ||
private href: string, | ||
) { | ||
super(); | ||
} | ||
|
||
toGFM(): string { | ||
return `[${this.text}](${this.href})`; | ||
} | ||
|
||
toPlainText(): string { | ||
if (this.text === this.href) { | ||
return this.href; | ||
} | ||
|
||
return `${this.text} (${this.href})`; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
export abstract class Node { | ||
abstract toGFM(): string; | ||
abstract toPlainText(): string; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
import { Node } from './node'; | ||
|
||
export class SequenceNode extends Node { | ||
constructor(private nodes: Node[]) { | ||
super(); | ||
} | ||
|
||
toGFM(): string { | ||
return this.nodes.map((node) => node.toGFM()).join(' '); | ||
} | ||
|
||
toPlainText(): string { | ||
return this.nodes.map((node) => node.toPlainText()).join(' '); | ||
} | ||
} |
Oops, something went wrong.