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.
- package/dist/app.js +1 -1
- package/package.json +10 -6
- package/.eslintignore +0 -3
- package/.eslintrc.js +0 -23
- package/.github/FUNDING.yml +0 -2
- package/.github/renovate.json +0 -15
- package/.github/workflows/eslint.yml +0 -14
- package/.github/workflows/test.yml +0 -19
- package/.husky/pre-commit +0 -4
- package/.nvmrc +0 -1
- package/jest.config.ts +0 -11
- package/lint-staged.config.js +0 -4
- package/npm-update-package.code-workspace +0 -8
- package/src/app.ts +0 -5
- package/src/bin.ts +0 -20
- package/src/git/BranchNameCreator.test.ts +0 -17
- package/src/git/BranchNameCreator.ts +0 -19
- package/src/git/CommitMessageCreator.test.ts +0 -17
- package/src/git/CommitMessageCreator.ts +0 -19
- package/src/git/Committer.ts +0 -49
- package/src/git/Git.ts +0 -55
- package/src/git/GitRepository.test.ts +0 -61
- package/src/git/GitRepository.ts +0 -57
- package/src/git/index.ts +0 -5
- package/src/github/Branch.ts +0 -4
- package/src/github/GitHub.ts +0 -27
- package/src/github/PullRequest.ts +0 -3
- package/src/github/PullRequestBodyCreator.test.ts +0 -32
- package/src/github/PullRequestBodyCreator.ts +0 -26
- package/src/github/PullRequestCreator.ts +0 -65
- package/src/github/PullRequestTitleCreator.test.ts +0 -17
- package/src/github/PullRequestTitleCreator.ts +0 -19
- package/src/github/RemoteBranchExistenceChecker.ts +0 -15
- package/src/github/Repository.ts +0 -3
- package/src/github/createGitHub.ts +0 -18
- package/src/github/createOctokit.ts +0 -28
- package/src/github/index.ts +0 -9
- package/src/logger/LogLevel.ts +0 -8
- package/src/logger/Logger.ts +0 -1
- package/src/logger/createLogger.ts +0 -10
- package/src/logger/index.ts +0 -6
- package/src/main.ts +0 -128
- package/src/ncu/Ncu.ts +0 -43
- package/src/ncu/NcuOutdatedPackages.ts +0 -6
- package/src/ncu/NcuOutdatedPackagesConverter.ts +0 -25
- package/src/ncu/OutdatedPackage.ts +0 -9
- package/src/ncu/PackageVersion.test.ts +0 -25
- package/src/ncu/PackageVersion.ts +0 -40
- package/src/ncu/UpdateType.ts +0 -9
- package/src/ncu/index.ts +0 -7
- package/src/ncu/isNcuOutdatedPackages.ts +0 -6
- package/src/ncu/toUpdateType.test.ts +0 -21
- package/src/ncu/toUpdateType.ts +0 -18
- package/src/options/Options.ts +0 -30
- package/src/options/index.ts +0 -2
- package/src/options/initOptions.ts +0 -53
- package/src/package-json/Package.ts +0 -24
- package/src/package-json/PackageDependencies.ts +0 -10
- package/src/package-json/PackageJsonParser.ts +0 -19
- package/src/package-json/PackageJsonReader.ts +0 -27
- package/src/package-json/index.ts +0 -3
- package/src/package-manager/Npm.ts +0 -19
- package/src/package-manager/PackageManager.ts +0 -4
- package/src/package-manager/PackageManagerName.ts +0 -8
- package/src/package-manager/Yarn.ts +0 -19
- package/src/package-manager/createPackageManager.ts +0 -21
- package/src/package-manager/index.ts +0 -8
- package/src/processors/OutdatedPackageProcessor.ts +0 -109
- package/src/processors/OutdatedPackagesProcessor.ts +0 -32
- package/src/processors/Result.ts +0 -7
- package/src/processors/index.ts +0 -2
- package/src/terminal/Terminal.ts +0 -30
- package/src/terminal/index.ts +0 -1
- package/src/terminal/isExecaReturnValue.ts +0 -30
- package/tsconfig.base.json +0 -3
- package/tsconfig.build.json +0 -13
- package/tsconfig.json +0 -9
package/dist/app.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "npm-update-package",
|
|
3
|
-
"version": "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
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
|
-
}
|
package/.github/FUNDING.yml
DELETED
package/.github/renovate.json
DELETED
|
@@ -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
package/.nvmrc
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
12.20.2
|
package/jest.config.ts
DELETED
package/lint-staged.config.js
DELETED
package/src/app.ts
DELETED
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
|
-
}
|
package/src/git/Committer.ts
DELETED
|
@@ -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
|
-
})
|
package/src/git/GitRepository.ts
DELETED
|
@@ -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
package/src/github/Branch.ts
DELETED
package/src/github/GitHub.ts
DELETED
|
@@ -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,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
|
-
}
|