npm-update-package 0.8.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/dist/app.js +1 -1
  2. package/package.json +10 -6
  3. package/.eslintignore +0 -3
  4. package/.eslintrc.js +0 -23
  5. package/.github/FUNDING.yml +0 -2
  6. package/.github/renovate.json +0 -15
  7. package/.github/workflows/eslint.yml +0 -14
  8. package/.github/workflows/test.yml +0 -19
  9. package/.husky/pre-commit +0 -4
  10. package/.nvmrc +0 -1
  11. package/jest.config.ts +0 -11
  12. package/lint-staged.config.js +0 -4
  13. package/npm-update-package.code-workspace +0 -8
  14. package/src/app.ts +0 -5
  15. package/src/bin.ts +0 -20
  16. package/src/git/BranchNameCreator.test.ts +0 -17
  17. package/src/git/BranchNameCreator.ts +0 -19
  18. package/src/git/CommitMessageCreator.test.ts +0 -17
  19. package/src/git/CommitMessageCreator.ts +0 -19
  20. package/src/git/Committer.ts +0 -49
  21. package/src/git/Git.ts +0 -55
  22. package/src/git/GitRepository.test.ts +0 -61
  23. package/src/git/GitRepository.ts +0 -57
  24. package/src/git/index.ts +0 -5
  25. package/src/github/Branch.ts +0 -4
  26. package/src/github/GitHub.ts +0 -27
  27. package/src/github/PullRequest.ts +0 -3
  28. package/src/github/PullRequestBodyCreator.test.ts +0 -32
  29. package/src/github/PullRequestBodyCreator.ts +0 -26
  30. package/src/github/PullRequestCreator.ts +0 -65
  31. package/src/github/PullRequestTitleCreator.test.ts +0 -17
  32. package/src/github/PullRequestTitleCreator.ts +0 -19
  33. package/src/github/RemoteBranchExistenceChecker.ts +0 -15
  34. package/src/github/Repository.ts +0 -3
  35. package/src/github/createGitHub.ts +0 -18
  36. package/src/github/createOctokit.ts +0 -28
  37. package/src/github/index.ts +0 -9
  38. package/src/logger/LogLevel.ts +0 -8
  39. package/src/logger/Logger.ts +0 -1
  40. package/src/logger/createLogger.ts +0 -10
  41. package/src/logger/index.ts +0 -6
  42. package/src/main.ts +0 -128
  43. package/src/ncu/Ncu.ts +0 -43
  44. package/src/ncu/NcuOutdatedPackages.ts +0 -6
  45. package/src/ncu/NcuOutdatedPackagesConverter.ts +0 -25
  46. package/src/ncu/OutdatedPackage.ts +0 -9
  47. package/src/ncu/PackageVersion.test.ts +0 -25
  48. package/src/ncu/PackageVersion.ts +0 -40
  49. package/src/ncu/UpdateType.ts +0 -9
  50. package/src/ncu/index.ts +0 -7
  51. package/src/ncu/isNcuOutdatedPackages.ts +0 -6
  52. package/src/ncu/toUpdateType.test.ts +0 -21
  53. package/src/ncu/toUpdateType.ts +0 -18
  54. package/src/options/Options.ts +0 -30
  55. package/src/options/index.ts +0 -2
  56. package/src/options/initOptions.ts +0 -53
  57. package/src/package-json/Package.ts +0 -24
  58. package/src/package-json/PackageDependencies.ts +0 -10
  59. package/src/package-json/PackageJsonParser.ts +0 -19
  60. package/src/package-json/PackageJsonReader.ts +0 -27
  61. package/src/package-json/index.ts +0 -3
  62. package/src/package-manager/Npm.ts +0 -19
  63. package/src/package-manager/PackageManager.ts +0 -4
  64. package/src/package-manager/PackageManagerName.ts +0 -8
  65. package/src/package-manager/Yarn.ts +0 -19
  66. package/src/package-manager/createPackageManager.ts +0 -21
  67. package/src/package-manager/index.ts +0 -8
  68. package/src/processors/OutdatedPackageProcessor.ts +0 -109
  69. package/src/processors/OutdatedPackagesProcessor.ts +0 -32
  70. package/src/processors/Result.ts +0 -7
  71. package/src/processors/index.ts +0 -2
  72. package/src/terminal/Terminal.ts +0 -30
  73. package/src/terminal/index.ts +0 -1
  74. package/src/terminal/isExecaReturnValue.ts +0 -30
  75. package/tsconfig.base.json +0 -3
  76. package/tsconfig.build.json +0 -13
  77. package/tsconfig.json +0 -9
package/dist/app.js CHANGED
@@ -3,6 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.app = void 0;
4
4
  exports.app = {
5
5
  name: 'npm-update-package',
6
- version: '0.8.0',
6
+ version: '0.9.0',
7
7
  web: 'https://github.com/npm-update-package/npm-update-package'
8
8
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "npm-update-package",
3
- "version": "0.8.0",
3
+ "version": "0.9.0",
4
4
  "description": "CLI tool for creating pull request to update npm packages",
5
5
  "scripts": {
6
6
  "build": "tsc --project tsconfig.build.json",
@@ -11,6 +11,9 @@
11
11
  "start": "ts-node src/bin.ts",
12
12
  "test": "jest --passWithNoTests"
13
13
  },
14
+ "files": [
15
+ "dist"
16
+ ],
14
17
  "bin": "dist/bin.js",
15
18
  "dependencies": {
16
19
  "@octokit/rest": "18.12.0",
@@ -50,12 +53,13 @@
50
53
  "typescript": "4.4.4",
51
54
  "utility-types": "3.10.0"
52
55
  },
53
- "homepage": "https://github.com/npm-update-package/npm-update-package",
54
- "bugs": {
55
- "url": "https://github.com/npm-update-package/npm-update-package/issues"
56
- },
57
56
  "repository": {
58
57
  "type": "git",
59
58
  "url": "https://github.com/npm-update-package/npm-update-package.git"
60
- }
59
+ },
60
+ "bugs": {
61
+ "url": "https://github.com/npm-update-package/npm-update-package/issues"
62
+ },
63
+ "homepage": "https://github.com/npm-update-package/npm-update-package",
64
+ "license": "MIT"
61
65
  }
package/.eslintignore DELETED
@@ -1,3 +0,0 @@
1
- /coverage
2
- /dist
3
- /node_modules
package/.eslintrc.js DELETED
@@ -1,23 +0,0 @@
1
- module.exports = {
2
- extends: [
3
- 'standard-with-typescript',
4
- 'plugin:jest/recommended'
5
- ],
6
- plugins: [
7
- 'eslint-plugin-tsdoc'
8
- ],
9
- parserOptions: {
10
- project: './tsconfig.json'
11
- },
12
- rules: {
13
- 'import/order': ['error', {
14
- alphabetize: {
15
- order: 'asc',
16
- caseInsensitive: true
17
- }
18
- }],
19
- 'no-console': 'error',
20
- 'sort-imports': 'off',
21
- 'tsdoc/syntax': 'warn'
22
- }
23
- }
@@ -1,2 +0,0 @@
1
- github: munierujp
2
- custom: ["https://www.paypal.me/munieru"]
@@ -1,15 +0,0 @@
1
- {
2
- "extends": [
3
- "config:base"
4
- ],
5
- "packageRules": [
6
- {
7
- "matchPackageNames": ["@types/node"],
8
- "allowedVersions": "<13"
9
- },
10
- {
11
- "matchPackageNames": ["node"],
12
- "allowedVersions": "<13"
13
- }
14
- ]
15
- }
@@ -1,14 +0,0 @@
1
- name: eslint
2
- on:
3
- pull_request:
4
- branches: [ master ]
5
- jobs:
6
- eslint:
7
- name: runner / eslint
8
- runs-on: ubuntu-latest
9
- steps:
10
- - uses: actions/checkout@v2
11
- - name: eslint
12
- uses: reviewdog/action-eslint@v1
13
- with:
14
- reporter: github-pr-check
@@ -1,19 +0,0 @@
1
- name: test
2
- on:
3
- pull_request:
4
- branches: [ master ]
5
- jobs:
6
- test:
7
- runs-on: ubuntu-latest
8
- strategy:
9
- matrix:
10
- node-version: [12.20.2]
11
- steps:
12
- - uses: actions/checkout@v2
13
- - name: Use Node.js ${{ matrix.node-version }}
14
- uses: actions/setup-node@v2
15
- with:
16
- node-version: ${{ matrix.node-version }}
17
- - run: npm ci
18
- - run: npm run build --if-present
19
- - run: npm test
package/.husky/pre-commit DELETED
@@ -1,4 +0,0 @@
1
- #!/bin/sh
2
- . "$(dirname "$0")/_/husky.sh"
3
-
4
- npx lint-staged
package/.nvmrc DELETED
@@ -1 +0,0 @@
1
- 12.20.2
package/jest.config.ts DELETED
@@ -1,11 +0,0 @@
1
- import type { Config } from '@jest/types'
2
-
3
- const config: Config.InitialOptions = {
4
- preset: 'ts-jest',
5
- collectCoverage: true,
6
- collectCoverageFrom: [
7
- 'src/**/*.ts'
8
- ]
9
- }
10
-
11
- export default config
@@ -1,4 +0,0 @@
1
- module.exports = {
2
- '*.js': 'eslint',
3
- '*.ts': 'eslint'
4
- }
@@ -1,8 +0,0 @@
1
- {
2
- "folders": [
3
- {
4
- "path": "."
5
- }
6
- ],
7
- "settings": {}
8
- }
package/src/app.ts DELETED
@@ -1,5 +0,0 @@
1
- export const app = {
2
- name: 'npm-update-package',
3
- version: '0.8.0',
4
- web: 'https://github.com/npm-update-package/npm-update-package'
5
- } as const
package/src/bin.ts DELETED
@@ -1,20 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import { app } from './app'
4
- import { createLogger } from './logger'
5
- import { main } from './main'
6
- import { initOptions } from './options'
7
-
8
- const options = initOptions()
9
- const logger = createLogger(options.logLevel)
10
- logger.info(`Start ${app.name} v${app.version}`)
11
-
12
- main({
13
- options,
14
- logger
15
- })
16
- .then(() => logger.info(`End ${app.name} v${app.version}`))
17
- .catch((e: unknown) => {
18
- // TODO: improve error handling
19
- logger.fatal('Unexpected error has occurred.', e)
20
- })
@@ -1,17 +0,0 @@
1
- import { PackageVersion } from '../ncu'
2
- import { BranchNameCreator } from './BranchNameCreator'
3
-
4
- describe('BranchNameCreator', () => {
5
- describe('create', () => {
6
- it('returns branch name', () => {
7
- const branchNameCreator = new BranchNameCreator('npm-update-package/{{{packageName}}}/{{updateType}}/{{currentVersion}}/{{newVersion}}')
8
- const actual = branchNameCreator.create({
9
- name: '@typescript-eslint/eslint-plugin',
10
- currentVersion: PackageVersion.of('1.0.0'),
11
- newVersion: PackageVersion.of('1.2.3'),
12
- type: 'major'
13
- })
14
- expect(actual).toBe('npm-update-package/@typescript-eslint/eslint-plugin/major/1.0.0/1.2.3')
15
- })
16
- })
17
- })
@@ -1,19 +0,0 @@
1
- import { render } from 'mustache'
2
- import type { OutdatedPackage } from '../ncu'
3
-
4
- export class BranchNameCreator {
5
- constructor (private readonly template: string) {}
6
-
7
- create (outdatedPackage: OutdatedPackage): string {
8
- const packageName = outdatedPackage.name
9
- const currentVersion = outdatedPackage.currentVersion.version
10
- const newVersion = outdatedPackage.newVersion.version
11
- const updateType = outdatedPackage.type
12
- return render(this.template, {
13
- packageName,
14
- currentVersion,
15
- newVersion,
16
- updateType
17
- })
18
- }
19
- }
@@ -1,17 +0,0 @@
1
- import { PackageVersion } from '../ncu'
2
- import { CommitMessageCreator } from './CommitMessageCreator'
3
-
4
- describe('CommitMessageCreator', () => {
5
- describe('create', () => {
6
- it('returns commit message', () => {
7
- const commitMessageCreator = new CommitMessageCreator('chore(deps): {{updateType}} update {{{packageName}}} from {{currentVersion}} to v{{newVersion}}')
8
- const actual = commitMessageCreator.create({
9
- name: '@typescript-eslint/eslint-plugin',
10
- currentVersion: PackageVersion.of('1.0.0'),
11
- newVersion: PackageVersion.of('2.0.0'),
12
- type: 'major'
13
- })
14
- expect(actual).toBe('chore(deps): major update @typescript-eslint/eslint-plugin from 1.0.0 to v2.0.0')
15
- })
16
- })
17
- })
@@ -1,19 +0,0 @@
1
- import { render } from 'mustache'
2
- import type { OutdatedPackage } from '../ncu'
3
-
4
- export class CommitMessageCreator {
5
- constructor (private readonly template: string) {}
6
-
7
- create (outdatedPackage: OutdatedPackage): string {
8
- const packageName = outdatedPackage.name
9
- const currentVersion = outdatedPackage.currentVersion.version
10
- const newVersion = outdatedPackage.newVersion.version
11
- const updateType = outdatedPackage.type
12
- return render(this.template, {
13
- packageName,
14
- currentVersion,
15
- newVersion,
16
- updateType
17
- })
18
- }
19
- }
@@ -1,49 +0,0 @@
1
- import type { Git } from './Git'
2
-
3
- export interface User {
4
- name?: string
5
- email?: string
6
- }
7
-
8
- // TODO: add test
9
- export class Committer {
10
- private readonly git: Git
11
- private readonly user: User | undefined
12
-
13
- constructor ({
14
- git,
15
- user
16
- }: {
17
- git: Git
18
- user?: User
19
- }) {
20
- this.git = git
21
- this.user = user
22
- }
23
-
24
- async commit (message: string): Promise<void> {
25
- let name: string | undefined
26
-
27
- if (this.user?.name !== undefined) {
28
- name = await this.git.getConfig('user.name')
29
- await this.git.setConfig('user.name', this.user.name)
30
- }
31
-
32
- let email: string | undefined
33
-
34
- if (this.user?.email !== undefined) {
35
- email = await this.git.getConfig('user.email')
36
- await this.git.setConfig('user.email', this.user.email)
37
- }
38
-
39
- await this.git.commit(message)
40
-
41
- if (name !== undefined) {
42
- await this.git.setConfig('user.name', name)
43
- }
44
-
45
- if (email !== undefined) {
46
- await this.git.setConfig('user.email', email)
47
- }
48
- }
49
- }
package/src/git/Git.ts DELETED
@@ -1,55 +0,0 @@
1
- import type { Terminal } from '../terminal'
2
- import { GitRepository } from './GitRepository'
3
-
4
- // TODO: add test
5
- export class Git {
6
- constructor (private readonly terminal: Terminal) {}
7
-
8
- async add (...files: string[]): Promise<void> {
9
- await this.terminal.run('git', 'add', ...files)
10
- }
11
-
12
- async checkout (branchName: string): Promise<void> {
13
- await this.terminal.run('git', 'checkout', branchName)
14
- }
15
-
16
- async commit (message: string): Promise<void> {
17
- await this.terminal.run('git', 'commit', '--message', message)
18
- }
19
-
20
- async createBranch (branchName: string): Promise<void> {
21
- await this.terminal.run('git', 'checkout', '-b', branchName)
22
- }
23
-
24
- async getConfig (key: string): Promise<string> {
25
- const { stdout } = await this.terminal.run('git', 'config', key)
26
- return stdout.trim()
27
- }
28
-
29
- async getCurrentBranch (): Promise<string> {
30
- const { stdout } = await this.terminal.run('git', 'rev-parse', '--abbrev-ref', 'HEAD')
31
- return stdout.trim()
32
- }
33
-
34
- async getRemoteUrl (): Promise<string> {
35
- const { stdout } = await this.terminal.run('git', 'remote', 'get-url', '--push', 'origin')
36
- return stdout.trim()
37
- }
38
-
39
- async getRepository (): Promise<GitRepository> {
40
- const url = await this.getRemoteUrl()
41
- return GitRepository.of(url)
42
- }
43
-
44
- async push (branchName: string): Promise<void> {
45
- await this.terminal.run('git', 'push', 'origin', branchName)
46
- }
47
-
48
- async removeBranch (branchName: string): Promise<void> {
49
- await this.terminal.run('git', 'branch', '-D', branchName)
50
- }
51
-
52
- async setConfig (key: string, value: string): Promise<void> {
53
- await this.terminal.run('git', 'config', key, value)
54
- }
55
- }
@@ -1,61 +0,0 @@
1
- import { GitRepository } from './GitRepository'
2
-
3
- describe('GitRepository', () => {
4
- describe('of', () => {
5
- describe('if URL is HTTPS', () => {
6
- describe('if URL is github.com', () => {
7
- const url = 'https://github.com/npm-update-package/npm-update-package.git'
8
-
9
- it('returns new GitRepository instance', () => {
10
- const repo = GitRepository.of(url)
11
- expect(repo.host).toBe('github.com')
12
- expect(repo.owner).toBe('npm-update-package')
13
- expect(repo.name).toBe('npm-update-package')
14
- expect(repo.apiEndPoint).toBe('https://api.github.com')
15
- expect(repo.isGitHubDotCom).toBe(true)
16
- })
17
- })
18
-
19
- describe('if URL is not github.com', () => {
20
- const url = 'https://git.example.com/npm-update-package/npm-update-package.git'
21
-
22
- it('returns new GitRepository instance', () => {
23
- const repo = GitRepository.of(url)
24
- expect(repo.host).toBe('git.example.com')
25
- expect(repo.owner).toBe('npm-update-package')
26
- expect(repo.name).toBe('npm-update-package')
27
- expect(repo.apiEndPoint).toBe('https://git.example.com/api/v3')
28
- expect(repo.isGitHubDotCom).toBe(false)
29
- })
30
- })
31
- })
32
-
33
- describe('if URL is SSH', () => {
34
- describe('if URL is github.com', () => {
35
- const url = 'git@github.com:npm-update-package/npm-update-package.git'
36
-
37
- it('returns new GitRepository instance', () => {
38
- const repo = GitRepository.of(url)
39
- expect(repo.host).toBe('github.com')
40
- expect(repo.owner).toBe('npm-update-package')
41
- expect(repo.name).toBe('npm-update-package')
42
- expect(repo.apiEndPoint).toBe('https://api.github.com')
43
- expect(repo.isGitHubDotCom).toBe(true)
44
- })
45
- })
46
-
47
- describe('if URL is not github.com', () => {
48
- const url = 'git@git.example.com:npm-update-package/npm-update-package.git'
49
-
50
- it('returns new GitRepository instance', () => {
51
- const repo = GitRepository.of(url)
52
- expect(repo.host).toBe('git.example.com')
53
- expect(repo.owner).toBe('npm-update-package')
54
- expect(repo.name).toBe('npm-update-package')
55
- expect(repo.apiEndPoint).toBe('https://git.example.com/api/v3')
56
- expect(repo.isGitHubDotCom).toBe(false)
57
- })
58
- })
59
- })
60
- })
61
- })
@@ -1,57 +0,0 @@
1
- import parse from 'parse-github-url'
2
-
3
- export class GitRepository {
4
- readonly host: string
5
- readonly owner: string
6
- readonly name: string
7
-
8
- private constructor ({
9
- host,
10
- owner,
11
- name
12
- }: {
13
- host: string
14
- owner: string
15
- name: string
16
- }) {
17
- this.host = host
18
- this.owner = owner
19
- this.name = name
20
- }
21
-
22
- static of (url: string): GitRepository {
23
- const parsed = parse(url)
24
-
25
- if (parsed === null) {
26
- throw new Error(`Failed to parse url. url=${url}`)
27
- }
28
-
29
- const {
30
- host,
31
- owner,
32
- name
33
- } = parsed
34
-
35
- if (host === null || owner === null || name === null) {
36
- throw new Error(`Failed to parse url. url=${url}`)
37
- }
38
-
39
- return new GitRepository({
40
- host,
41
- owner,
42
- name
43
- })
44
- }
45
-
46
- get apiEndPoint (): string {
47
- if (this.isGitHubDotCom) {
48
- return 'https://api.github.com'
49
- } else {
50
- return `https://${this.host}/api/v3`
51
- }
52
- }
53
-
54
- get isGitHubDotCom (): boolean {
55
- return this.host === 'github.com'
56
- }
57
- }
package/src/git/index.ts DELETED
@@ -1,5 +0,0 @@
1
- export { BranchNameCreator } from './BranchNameCreator'
2
- export { CommitMessageCreator } from './CommitMessageCreator'
3
- export { Committer } from './Committer'
4
- export { Git } from './Git'
5
- export type { GitRepository } from './GitRepository'
@@ -1,4 +0,0 @@
1
- import type { RestEndpointMethodTypes } from '@octokit/rest'
2
- import type { ValuesType } from 'utility-types'
3
-
4
- export type Branch = ValuesType<RestEndpointMethodTypes['repos']['listBranches']['response']['data']>
@@ -1,27 +0,0 @@
1
- import type {
2
- Octokit,
3
- RestEndpointMethodTypes
4
- } from '@octokit/rest'
5
- import type { Branch } from './Branch'
6
- import type { PullRequest } from './PullRequest'
7
- import type { Repository } from './Repository'
8
-
9
- // TODO: add test
10
- export class GitHub {
11
- constructor (private readonly octokit: Octokit) {}
12
-
13
- async createPullRequest (params: RestEndpointMethodTypes['pulls']['create']['parameters']): Promise<PullRequest> {
14
- const { data } = await this.octokit.pulls.create(params)
15
- return data
16
- }
17
-
18
- async fetchBranches (params: RestEndpointMethodTypes['repos']['listBranches']['parameters']): Promise<Branch[]> {
19
- const { data } = await this.octokit.repos.listBranches(params)
20
- return data
21
- }
22
-
23
- async fetchRepository (params: RestEndpointMethodTypes['repos']['get']['parameters']): Promise<Repository> {
24
- const { data } = await this.octokit.repos.get(params)
25
- return data
26
- }
27
- }
@@ -1,3 +0,0 @@
1
- import type { RestEndpointMethodTypes } from '@octokit/rest'
2
-
3
- export type PullRequest = RestEndpointMethodTypes['pulls']['create']['response']['data']
@@ -1,32 +0,0 @@
1
- import { app } from '../app'
2
- import { PackageVersion } from '../ncu'
3
- import { PullRequestBodyCreator } from './PullRequestBodyCreator'
4
-
5
- describe('PullRequestBodyCreator', () => {
6
- describe('create', () => {
7
- it('returns pull request body', () => {
8
- const pullRequestBodyCreator = new PullRequestBodyCreator(`This PR updates these packages:
9
-
10
- |package|type|current version|new version|
11
- |---|---|---|---|
12
- |[{{{packageName}}}](https://www.npmjs.com/package/{{{packageName}}})|{{updateType}}|\`{{currentVersion}}\`|\`{{newVersion}}\`|
13
-
14
- ---
15
- This PR has been generated by [{{{appName}}}]({{{appWeb}}}) v{{appVersion}}`)
16
- const actual = pullRequestBodyCreator.create({
17
- name: '@typescript-eslint/eslint-plugin',
18
- currentVersion: PackageVersion.of('1.0.0'),
19
- newVersion: PackageVersion.of('2.0.0'),
20
- type: 'major'
21
- })
22
- expect(actual).toBe(`This PR updates these packages:
23
-
24
- |package|type|current version|new version|
25
- |---|---|---|---|
26
- |[@typescript-eslint/eslint-plugin](https://www.npmjs.com/package/@typescript-eslint/eslint-plugin)|major|\`1.0.0\`|\`2.0.0\`|
27
-
28
- ---
29
- This PR has been generated by [${app.name}](${app.web}) v${app.version}`)
30
- })
31
- })
32
- })
@@ -1,26 +0,0 @@
1
- import { render } from 'mustache'
2
- import { app } from '../app'
3
- import type { OutdatedPackage } from '../ncu'
4
-
5
- export class PullRequestBodyCreator {
6
- constructor (private readonly template: string) {}
7
-
8
- create (outdatedPackage: OutdatedPackage): string {
9
- const appName = app.name
10
- const appVersion = app.version
11
- const appWeb = app.web
12
- const currentVersion = outdatedPackage.currentVersion.version
13
- const newVersion = outdatedPackage.newVersion.version
14
- const packageName = outdatedPackage.name
15
- const updateType = outdatedPackage.type
16
- return render(this.template, {
17
- appName,
18
- appVersion,
19
- appWeb,
20
- currentVersion,
21
- newVersion,
22
- packageName,
23
- updateType
24
- })
25
- }
26
- }
@@ -1,65 +0,0 @@
1
- import type { GitRepository } from '../git'
2
- import type { Logger } from '../logger'
3
- import type { OutdatedPackage } from '../ncu'
4
- import type { GitHub } from './GitHub'
5
- import type { PullRequestBodyCreator } from './PullRequestBodyCreator'
6
- import type { PullRequestTitleCreator } from './PullRequestTitleCreator'
7
- import type { Repository as GitHubRepository } from './Repository'
8
-
9
- // TODO: add test
10
- export class PullRequestCreator {
11
- private readonly github: GitHub
12
- private readonly gitRepo: GitRepository
13
- private readonly githubRepo: GitHubRepository
14
- private readonly pullRequestTitleCreator: PullRequestTitleCreator
15
- private readonly pullRequestBodyCreator: PullRequestBodyCreator
16
- private readonly logger: Logger
17
-
18
- constructor ({
19
- github,
20
- gitRepo,
21
- githubRepo,
22
- pullRequestTitleCreator,
23
- pullRequestBodyCreator,
24
- logger
25
- }: {
26
- github: GitHub
27
- gitRepo: GitRepository
28
- githubRepo: GitHubRepository
29
- pullRequestTitleCreator: PullRequestTitleCreator
30
- pullRequestBodyCreator: PullRequestBodyCreator
31
- logger: Logger
32
- }) {
33
- this.github = github
34
- this.gitRepo = gitRepo
35
- this.githubRepo = githubRepo
36
- this.pullRequestTitleCreator = pullRequestTitleCreator
37
- this.pullRequestBodyCreator = pullRequestBodyCreator
38
- this.logger = logger
39
- }
40
-
41
- async create ({
42
- outdatedPackage,
43
- branchName
44
- }: {
45
- outdatedPackage: OutdatedPackage
46
- branchName: string
47
- }): Promise<void> {
48
- const title = this.pullRequestTitleCreator.create(outdatedPackage)
49
- this.logger.debug(`title=${title}`)
50
-
51
- const body = this.pullRequestBodyCreator.create(outdatedPackage)
52
- this.logger.debug(`body=${body}`)
53
-
54
- const createdPullRequest = await this.github.createPullRequest({
55
- owner: this.gitRepo.owner,
56
- repo: this.gitRepo.name,
57
- base: this.githubRepo.default_branch,
58
- head: branchName,
59
- title,
60
- body
61
- })
62
- this.logger.debug(`createdPullRequest=${JSON.stringify(createdPullRequest)}`)
63
- this.logger.info(`Pull request for ${outdatedPackage.name} has created. ${createdPullRequest.html_url}`)
64
- }
65
- }