npm-update-package 0.7.0 → 0.10.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 (89) hide show
  1. package/README.md +86 -20
  2. package/dist/app.js +1 -1
  3. package/dist/git/index.js +1 -3
  4. package/dist/github/PullRequestBodyCreator.js +29 -0
  5. package/dist/github/PullRequestCreator.js +3 -3
  6. package/dist/github/RemoteBranchExistenceChecker.js +0 -1
  7. package/dist/github/index.js +3 -1
  8. package/dist/main.js +2 -8
  9. package/dist/options/Options.js +9 -14
  10. package/dist/options/initOptions.js +8 -2
  11. package/dist/processors/OutdatedPackageProcessor.js +2 -3
  12. package/package.json +14 -9
  13. package/.eslintignore +0 -3
  14. package/.eslintrc.js +0 -23
  15. package/.github/FUNDING.yml +0 -2
  16. package/.github/renovate.json +0 -15
  17. package/.github/workflows/eslint.yml +0 -14
  18. package/.github/workflows/test.yml +0 -19
  19. package/.husky/pre-commit +0 -4
  20. package/.nvmrc +0 -1
  21. package/dist/git/Committer.js +0 -31
  22. package/dist/github/createPullRequestBody.js +0 -19
  23. package/jest.config.ts +0 -11
  24. package/lint-staged.config.js +0 -4
  25. package/npm-update-package.code-workspace +0 -8
  26. package/src/app.ts +0 -5
  27. package/src/bin.ts +0 -20
  28. package/src/git/BranchNameCreator.test.ts +0 -17
  29. package/src/git/BranchNameCreator.ts +0 -19
  30. package/src/git/CommitMessageCreator.test.ts +0 -17
  31. package/src/git/CommitMessageCreator.ts +0 -19
  32. package/src/git/Committer.ts +0 -49
  33. package/src/git/Git.ts +0 -55
  34. package/src/git/GitRepository.test.ts +0 -61
  35. package/src/git/GitRepository.ts +0 -57
  36. package/src/git/index.ts +0 -5
  37. package/src/github/Branch.ts +0 -4
  38. package/src/github/GitHub.ts +0 -27
  39. package/src/github/PullRequest.ts +0 -3
  40. package/src/github/PullRequestCreator.ts +0 -61
  41. package/src/github/PullRequestTitleCreator.test.ts +0 -17
  42. package/src/github/PullRequestTitleCreator.ts +0 -19
  43. package/src/github/RemoteBranchExistenceChecker.ts +0 -15
  44. package/src/github/Repository.ts +0 -3
  45. package/src/github/createGitHub.ts +0 -18
  46. package/src/github/createOctokit.ts +0 -28
  47. package/src/github/createPullRequestBody.test.ts +0 -64
  48. package/src/github/createPullRequestBody.ts +0 -17
  49. package/src/github/index.ts +0 -8
  50. package/src/logger/LogLevel.ts +0 -8
  51. package/src/logger/Logger.ts +0 -1
  52. package/src/logger/createLogger.ts +0 -10
  53. package/src/logger/index.ts +0 -6
  54. package/src/main.ts +0 -125
  55. package/src/ncu/Ncu.ts +0 -43
  56. package/src/ncu/NcuOutdatedPackages.ts +0 -6
  57. package/src/ncu/NcuOutdatedPackagesConverter.ts +0 -25
  58. package/src/ncu/OutdatedPackage.ts +0 -9
  59. package/src/ncu/PackageVersion.test.ts +0 -25
  60. package/src/ncu/PackageVersion.ts +0 -40
  61. package/src/ncu/UpdateType.ts +0 -9
  62. package/src/ncu/index.ts +0 -7
  63. package/src/ncu/isNcuOutdatedPackages.ts +0 -6
  64. package/src/ncu/toUpdateType.test.ts +0 -21
  65. package/src/ncu/toUpdateType.ts +0 -18
  66. package/src/options/Options.ts +0 -29
  67. package/src/options/index.ts +0 -2
  68. package/src/options/initOptions.ts +0 -45
  69. package/src/package-json/Package.ts +0 -24
  70. package/src/package-json/PackageDependencies.ts +0 -10
  71. package/src/package-json/PackageJsonParser.ts +0 -19
  72. package/src/package-json/PackageJsonReader.ts +0 -27
  73. package/src/package-json/index.ts +0 -3
  74. package/src/package-manager/Npm.ts +0 -19
  75. package/src/package-manager/PackageManager.ts +0 -4
  76. package/src/package-manager/PackageManagerName.ts +0 -8
  77. package/src/package-manager/Yarn.ts +0 -19
  78. package/src/package-manager/createPackageManager.ts +0 -21
  79. package/src/package-manager/index.ts +0 -8
  80. package/src/processors/OutdatedPackageProcessor.ts +0 -109
  81. package/src/processors/OutdatedPackagesProcessor.ts +0 -32
  82. package/src/processors/Result.ts +0 -7
  83. package/src/processors/index.ts +0 -2
  84. package/src/terminal/Terminal.ts +0 -30
  85. package/src/terminal/index.ts +0 -1
  86. package/src/terminal/isExecaReturnValue.ts +0 -30
  87. package/tsconfig.base.json +0 -3
  88. package/tsconfig.build.json +0 -13
  89. package/tsconfig.json +0 -9
package/src/main.ts DELETED
@@ -1,125 +0,0 @@
1
- import {
2
- BranchNameCreator,
3
- CommitMessageCreator,
4
- Committer,
5
- Git
6
- } from './git'
7
- import {
8
- createGitHub,
9
- PullRequestCreator,
10
- PullRequestTitleCreator,
11
- RemoteBranchExistenceChecker
12
- } from './github'
13
- import type { Logger } from './logger'
14
- import { Ncu } from './ncu'
15
- import type { Options } from './options'
16
- import {
17
- PackageJsonParser,
18
- PackageJsonReader
19
- } from './package-json'
20
- import { createPackageManager } from './package-manager'
21
- import {
22
- OutdatedPackageProcessor,
23
- OutdatedPackagesProcessor
24
- } from './processors'
25
- import { Terminal } from './terminal'
26
-
27
- // TODO: add test
28
- export const main = async ({
29
- options,
30
- logger
31
- }: {
32
- options: Options
33
- logger: Logger
34
- }): Promise<void> => {
35
- logger.debug(`options=${JSON.stringify(options)}`)
36
-
37
- const packageJsonParser = new PackageJsonParser(logger)
38
- const packageJsonReader = new PackageJsonReader({
39
- packageJsonParser,
40
- logger
41
- })
42
- const ncu = new Ncu(packageJsonReader)
43
- const outdatedPackages = await ncu.check()
44
- logger.debug(`outdatedPackages=${JSON.stringify(outdatedPackages)}`)
45
-
46
- if (outdatedPackages.length === 0) {
47
- logger.info('All packages are up-to-date.')
48
- return
49
- }
50
-
51
- logger.info(`There are ${outdatedPackages.length} outdated packages.`)
52
-
53
- const terminal = new Terminal()
54
- const git = new Git(terminal)
55
- const gitRepo = await git.getRepository()
56
- logger.debug(`gitRepo=${JSON.stringify(gitRepo)}`)
57
-
58
- const github = createGitHub({
59
- repository: gitRepo,
60
- token: options.githubToken
61
- })
62
- const githubRepo = await github.fetchRepository({
63
- owner: gitRepo.owner,
64
- repo: gitRepo.name
65
- })
66
- logger.debug(`githubRepo=${JSON.stringify(githubRepo)}`)
67
-
68
- const remoteBranches = await github.fetchBranches({
69
- owner: gitRepo.owner,
70
- repo: gitRepo.name
71
- })
72
- logger.debug(`remoteBranches=${JSON.stringify(remoteBranches)}`)
73
-
74
- const remoteBranchExistenceChecker = RemoteBranchExistenceChecker.of(remoteBranches)
75
- const committer = new Committer({
76
- git,
77
- user: {
78
- name: options.gitUserName,
79
- email: options.gitUserEmail
80
- }
81
- })
82
- const packageManager = createPackageManager({
83
- terminal,
84
- packageManager: options.packageManager
85
- })
86
- const pullRequestTitleCreator = new PullRequestTitleCreator(options.pullRequestTitle)
87
- const pullRequestCreator = new PullRequestCreator({
88
- github,
89
- gitRepo,
90
- githubRepo,
91
- pullRequestTitleCreator,
92
- logger
93
- })
94
- const branchNameCreator = new BranchNameCreator(options.branchName)
95
- const commitMessageCreator = new CommitMessageCreator(options.commitMessage)
96
- const outdatedPackageProcessor = new OutdatedPackageProcessor({
97
- committer,
98
- git,
99
- ncu,
100
- packageManager,
101
- pullRequestCreator,
102
- remoteBranchExistenceChecker,
103
- logger,
104
- branchNameCreator,
105
- commitMessageCreator
106
- })
107
- const outdatedPackagesProcessor = new OutdatedPackagesProcessor({
108
- outdatedPackageProcessor,
109
- logger
110
- })
111
- const results = await outdatedPackagesProcessor.process(outdatedPackages)
112
- logger.debug(`results=${JSON.stringify(results)}`)
113
-
114
- const updatedPackages = results
115
- .filter(({ updated }) => updated)
116
- .map(({ outdatedPackage }) => outdatedPackage)
117
- logger.debug(`updatedPackages=${JSON.stringify(updatedPackages)}`)
118
-
119
- const skippedPackages = results
120
- .filter(({ skipped }) => skipped)
121
- .map(({ outdatedPackage }) => outdatedPackage)
122
- logger.debug(`skippedPackages=${JSON.stringify(skippedPackages)}`)
123
-
124
- logger.info(`${updatedPackages.length} packages has updated. ${skippedPackages.length} packages has skipped.`)
125
- }
package/src/ncu/Ncu.ts DELETED
@@ -1,43 +0,0 @@
1
- import { run } from 'npm-check-updates'
2
- import type { Options } from 'npm-check-updates/build/src/types'
3
- import type { OutdatedPackage } from '../ncu'
4
- import type { PackageJsonReader } from '../package-json'
5
- import { isNcuOutdatedPackages } from './isNcuOutdatedPackages'
6
- import { NcuOutdatedPackagesConverter } from './NcuOutdatedPackagesConverter'
7
-
8
- // TODO: add test
9
- export class Ncu {
10
- constructor (private readonly packageJsonReader: PackageJsonReader) {}
11
-
12
- async check (): Promise<OutdatedPackage[]> {
13
- return await this.run({
14
- jsonUpgraded: true
15
- })
16
- }
17
-
18
- async update (outdatedPackage: OutdatedPackage): Promise<OutdatedPackage[]> {
19
- return await this.run({
20
- jsonUpgraded: true,
21
- filter: outdatedPackage.name,
22
- upgrade: true
23
- })
24
- }
25
-
26
- private async run (options: Options): Promise<OutdatedPackage[]> {
27
- const pkg = await this.packageJsonReader.read('./package.json')
28
- const currentDependencies = {
29
- ...pkg.dependencies,
30
- ...pkg.devDependencies,
31
- ...pkg.peerDependencies,
32
- ...pkg.optionalDependencies
33
- }
34
- const result = await run(options)
35
-
36
- if (!isNcuOutdatedPackages(result)) {
37
- throw new Error('result is not NcuOutdatedPackages')
38
- }
39
-
40
- const ncuOutdatedPackagesConverter = new NcuOutdatedPackagesConverter(currentDependencies)
41
- return ncuOutdatedPackagesConverter.toOutdatedPackages(result)
42
- }
43
- }
@@ -1,6 +0,0 @@
1
- import type {
2
- Index,
3
- VersionSpec
4
- } from 'npm-check-updates/build/src/types'
5
-
6
- export type NcuOutdatedPackages = Index<VersionSpec>
@@ -1,25 +0,0 @@
1
- import type { PackageDependencies } from '../package-json'
2
- import type { NcuOutdatedPackages } from './NcuOutdatedPackages'
3
- import type { OutdatedPackage } from './OutdatedPackage'
4
- import { PackageVersion } from './PackageVersion'
5
- import { toUpdateType } from './toUpdateType'
6
-
7
- // TODO: add test
8
- export class NcuOutdatedPackagesConverter {
9
- constructor (private readonly currentDependencies: PackageDependencies) {}
10
-
11
- toOutdatedPackages (outdatedPackages: NcuOutdatedPackages): OutdatedPackage[] {
12
- return Object.entries(outdatedPackages)
13
- .map(([name, newVersion]) => ({
14
- name,
15
- currentVersion: PackageVersion.of(this.currentDependencies[name]),
16
- newVersion: PackageVersion.of(newVersion)
17
- }))
18
- .map(({ name, currentVersion, newVersion }) => ({
19
- name,
20
- currentVersion,
21
- newVersion,
22
- type: toUpdateType(currentVersion, newVersion)
23
- }))
24
- }
25
- }
@@ -1,9 +0,0 @@
1
- import type { PackageVersion } from './PackageVersion'
2
- import type { UpdateType } from './UpdateType'
3
-
4
- export interface OutdatedPackage {
5
- name: string
6
- currentVersion: PackageVersion
7
- newVersion: PackageVersion
8
- type: UpdateType
9
- }
@@ -1,25 +0,0 @@
1
- import { PackageVersion } from './PackageVersion'
2
-
3
- describe('PackageVersion', () => {
4
- describe('of', () => {
5
- describe('if version is valid', () => {
6
- const version = '^1.2.3'
7
-
8
- it('returns new PackageVersion instance', () => {
9
- const packageVersion = PackageVersion.of(version)
10
- expect(packageVersion.version).toBe('1.2.3')
11
- expect(packageVersion.major).toBe(1)
12
- expect(packageVersion.minor).toBe(2)
13
- expect(packageVersion.patch).toBe(3)
14
- })
15
- })
16
-
17
- describe('if version is invalid', () => {
18
- const version = ''
19
-
20
- it('throws error', () => {
21
- expect(() => PackageVersion.of(version)).toThrow(Error)
22
- })
23
- })
24
- })
25
- })
@@ -1,40 +0,0 @@
1
- import { coerce } from 'semver'
2
-
3
- export class PackageVersion {
4
- readonly version: string
5
- readonly major: number
6
- readonly minor: number
7
- readonly patch: number
8
-
9
- private constructor ({
10
- version,
11
- major,
12
- minor,
13
- patch
14
- }: {
15
- version: string
16
- major: number
17
- minor: number
18
- patch: number
19
- }) {
20
- this.version = version
21
- this.major = major
22
- this.minor = minor
23
- this.patch = patch
24
- }
25
-
26
- static of (version: string): PackageVersion {
27
- const semver = coerce(version)
28
-
29
- if (semver === null) {
30
- throw new Error(`Failed to parse package version. version=${version}`)
31
- }
32
-
33
- return new PackageVersion({
34
- version: semver.version,
35
- major: semver.major,
36
- minor: semver.minor,
37
- patch: semver.patch
38
- })
39
- }
40
- }
@@ -1,9 +0,0 @@
1
- export const UpdateType = {
2
- Major: 'major',
3
- Minor: 'minor',
4
- Patch: 'patch'
5
- } as const
6
- // eslint-disable-next-line @typescript-eslint/no-redeclare
7
- export type UpdateType = typeof UpdateType[keyof typeof UpdateType]
8
- const updateTypes = Object.values(UpdateType)
9
- export const isUpdateType = (value: any): value is UpdateType => updateTypes.includes(value)
package/src/ncu/index.ts DELETED
@@ -1,7 +0,0 @@
1
- export { Ncu } from './Ncu'
2
- export type { OutdatedPackage } from './OutdatedPackage'
3
- export { PackageVersion } from './PackageVersion'
4
- export {
5
- isUpdateType,
6
- UpdateType
7
- } from './UpdateType'
@@ -1,6 +0,0 @@
1
- import type { NcuOutdatedPackages } from './NcuOutdatedPackages'
2
-
3
- // TODO: add test
4
- export const isNcuOutdatedPackages = (value: unknown): value is NcuOutdatedPackages => {
5
- return typeof value === 'object' && value !== null && Object.values(value).every(value => typeof value === 'string')
6
- }
@@ -1,21 +0,0 @@
1
- import { PackageVersion } from './PackageVersion'
2
- import { toUpdateType } from './toUpdateType'
3
- import { UpdateType } from './UpdateType'
4
-
5
- describe('toUpdateType', () => {
6
- const currentVersion = PackageVersion.of('1.0.0')
7
-
8
- describe('if both versions are different', () => {
9
- it('returns UpdateType', () => {
10
- expect(toUpdateType(currentVersion, PackageVersion.of('1.0.1'))).toBe(UpdateType.Patch)
11
- expect(toUpdateType(currentVersion, PackageVersion.of('1.1.1'))).toBe(UpdateType.Minor)
12
- expect(toUpdateType(currentVersion, PackageVersion.of('2.1.1'))).toBe(UpdateType.Major)
13
- })
14
- })
15
-
16
- describe('if both versions are same', () => {
17
- it('throws error', () => {
18
- expect(() => toUpdateType(currentVersion, PackageVersion.of('1.0.0'))).toThrow(Error)
19
- })
20
- })
21
- })
@@ -1,18 +0,0 @@
1
- import type { PackageVersion } from './PackageVersion'
2
- import { UpdateType } from './UpdateType'
3
-
4
- export const toUpdateType = (currentVersion: PackageVersion, newVersion: PackageVersion): UpdateType => {
5
- if (currentVersion.major !== newVersion.major) {
6
- return UpdateType.Major
7
- }
8
-
9
- if (currentVersion.minor !== newVersion.minor) {
10
- return UpdateType.Minor
11
- }
12
-
13
- if (currentVersion.patch !== newVersion.patch) {
14
- return UpdateType.Patch
15
- }
16
-
17
- throw new Error('Both versions are same.')
18
- }
@@ -1,29 +0,0 @@
1
- import {
2
- intersection,
3
- literal,
4
- partial,
5
- string,
6
- type,
7
- union
8
- } from 'io-ts'
9
- import type { TypeOf } from 'io-ts'
10
- import { LogLevel } from '../logger'
11
- import { PackageManagerName } from '../package-manager'
12
-
13
- const Options = intersection([
14
- type({
15
- branchName: string,
16
- commitMessage: string,
17
- githubToken: string,
18
- logLevel: union([literal(LogLevel.Info), literal(LogLevel.Debug)]),
19
- packageManager: union([literal(PackageManagerName.Npm), literal(PackageManagerName.Yarn)]),
20
- pullRequestTitle: string
21
- }),
22
- partial({
23
- gitUserEmail: string,
24
- gitUserName: string
25
- })
26
- ])
27
- // eslint-disable-next-line @typescript-eslint/no-redeclare
28
- export type Options = TypeOf<typeof Options>
29
- export const isOptions = Options.is
@@ -1,2 +0,0 @@
1
- export { initOptions } from './initOptions'
2
- export type { Options } from './Options'
@@ -1,45 +0,0 @@
1
- import {
2
- Option,
3
- program
4
- } from 'commander'
5
- import { app } from '../app'
6
- import { LogLevel } from '../logger'
7
- import { PackageManagerName } from '../package-manager'
8
- import { isOptions } from './Options'
9
- import type { Options } from './Options'
10
-
11
- // TODO: add test
12
- export const initOptions = (): Options => {
13
- program
14
- .version(app.version)
15
- .option('--branch-name <value>', 'Branch name template', 'npm-update-package/{{{packageName}}}/v{{newVersion}}')
16
- .option('--commit-message <value>', 'Commit message template', 'chore(deps): {{updateType}} update {{{packageName}}} to v{{newVersion}}')
17
- .option('--git-user-email <value>', 'User email of commit')
18
- .option('--git-user-name <value>', 'User name of commit')
19
- .requiredOption('--github-token <value>', 'GitHub token')
20
- .addOption(
21
- new Option('--log-level <value>', 'Log level to show')
22
- .choices([
23
- LogLevel.Info,
24
- LogLevel.Debug
25
- ])
26
- .default(LogLevel.Info)
27
- )
28
- .addOption(
29
- new Option('--package-manager <value>', 'Package manager of your project')
30
- .choices([
31
- PackageManagerName.Npm,
32
- PackageManagerName.Yarn
33
- ])
34
- .default(PackageManagerName.Npm)
35
- )
36
- .option('--pull-request-title <value>', 'Pull request title template', 'chore(deps): {{updateType}} update {{{packageName}}} to v{{newVersion}}')
37
- program.parse(process.argv)
38
- const options = program.opts()
39
-
40
- if (!isOptions(options)) {
41
- throw new Error(`Failed to parse command-line options. options=${JSON.stringify(options)}`)
42
- }
43
-
44
- return options
45
- }
@@ -1,24 +0,0 @@
1
- import {
2
- intersection,
3
- partial,
4
- string,
5
- type
6
- } from 'io-ts'
7
- import type { TypeOf } from 'io-ts'
8
- import { PackageDependencies } from './PackageDependencies'
9
-
10
- const Package = intersection([
11
- type({
12
- name: string,
13
- version: string
14
- }),
15
- partial({
16
- dependencies: PackageDependencies,
17
- devDependencies: PackageDependencies,
18
- peerDependencies: PackageDependencies,
19
- optionalDependencies: PackageDependencies
20
- })
21
- ])
22
- // eslint-disable-next-line @typescript-eslint/no-redeclare
23
- export type Package = TypeOf<typeof Package>
24
- export const isPackage = Package.is
@@ -1,10 +0,0 @@
1
- import {
2
- record,
3
- string
4
- } from 'io-ts'
5
- import type { TypeOf } from 'io-ts'
6
-
7
- export const PackageDependencies = record(string, string)
8
- // eslint-disable-next-line @typescript-eslint/no-redeclare
9
- export type PackageDependencies = TypeOf<typeof PackageDependencies>
10
- export const isPackageDependencies = PackageDependencies.is
@@ -1,19 +0,0 @@
1
- import type { Logger } from '../logger'
2
- import { isPackage } from './Package'
3
- import type { Package } from './Package'
4
-
5
- // TODO: add test
6
- export class PackageJsonParser {
7
- constructor (private readonly logger: Logger) {}
8
-
9
- parse (json: string): Package {
10
- const parsed: unknown = JSON.parse(json)
11
- this.logger.debug(`parsed=${JSON.stringify(parsed)}`)
12
-
13
- if (isPackage(parsed)) {
14
- return parsed
15
- } else {
16
- throw new Error(`Failed to parse package.json. json=${json}`)
17
- }
18
- }
19
- }
@@ -1,27 +0,0 @@
1
- import fs from 'fs'
2
- import type { Logger } from '../logger'
3
- import type { Package } from './Package'
4
- import type { PackageJsonParser } from './PackageJsonParser'
5
-
6
- // TODO: add test
7
- export class PackageJsonReader {
8
- private readonly packageJsonParser: PackageJsonParser
9
- private readonly logger: Logger
10
-
11
- constructor ({
12
- packageJsonParser,
13
- logger
14
- }: {
15
- packageJsonParser: PackageJsonParser
16
- logger: Logger
17
- }) {
18
- this.packageJsonParser = packageJsonParser
19
- this.logger = logger
20
- }
21
-
22
- async read (filePath: string): Promise<Package> {
23
- const json = await fs.promises.readFile(filePath, 'utf8')
24
- this.logger.debug(`json=${json}`)
25
- return this.packageJsonParser.parse(json)
26
- }
27
- }
@@ -1,3 +0,0 @@
1
- export { PackageJsonParser } from './PackageJsonParser'
2
- export { PackageJsonReader } from './PackageJsonReader'
3
- export type { PackageDependencies } from './PackageDependencies'
@@ -1,19 +0,0 @@
1
- import type { Terminal } from '../terminal'
2
- import type { PackageManager } from './PackageManager'
3
-
4
- // TODO: add test
5
- export class Npm implements PackageManager {
6
- readonly packageFiles = [
7
- 'package.json',
8
- 'package-lock.json'
9
- ]
10
-
11
- constructor (private readonly terminal: Terminal) {}
12
-
13
- /**
14
- * @see https://docs.npmjs.com/cli/v8/commands/npm-install
15
- */
16
- async install (): Promise<void> {
17
- await this.terminal.run('npm', 'install')
18
- }
19
- }
@@ -1,4 +0,0 @@
1
- export interface PackageManager {
2
- packageFiles: string[]
3
- install: () => Promise<void>
4
- }
@@ -1,8 +0,0 @@
1
- export const PackageManagerName = {
2
- Npm: 'npm',
3
- Yarn: 'yarn'
4
- } as const
5
- // eslint-disable-next-line @typescript-eslint/no-redeclare
6
- export type PackageManagerName = typeof PackageManagerName[keyof typeof PackageManagerName]
7
- const packageManagerNames = Object.values(PackageManagerName)
8
- export const isPackageManagerName = (value: any): value is PackageManagerName => packageManagerNames.includes(value)
@@ -1,19 +0,0 @@
1
- import type { Terminal } from '../terminal'
2
- import type { PackageManager } from './PackageManager'
3
-
4
- // TODO: add test
5
- export class Yarn implements PackageManager {
6
- readonly packageFiles = [
7
- 'package.json',
8
- 'yarn.lock'
9
- ]
10
-
11
- constructor (private readonly terminal: Terminal) {}
12
-
13
- /**
14
- * @see https://classic.yarnpkg.com/en/docs/cli/install
15
- */
16
- async install (): Promise<void> {
17
- await this.terminal.run('yarn', 'install')
18
- }
19
- }
@@ -1,21 +0,0 @@
1
- import type { Terminal } from '../terminal'
2
- import { Npm } from './Npm'
3
- import type { PackageManager } from './PackageManager'
4
- import type { PackageManagerName } from './PackageManagerName'
5
- import { Yarn } from './Yarn'
6
-
7
- // TODO: add test
8
- export const createPackageManager = ({
9
- terminal,
10
- packageManager
11
- }: {
12
- terminal: Terminal
13
- packageManager: PackageManagerName
14
- }): PackageManager => {
15
- switch (packageManager) {
16
- case 'npm':
17
- return new Npm(terminal)
18
- case 'yarn':
19
- return new Yarn(terminal)
20
- }
21
- }
@@ -1,8 +0,0 @@
1
- export { createPackageManager } from './createPackageManager'
2
- export { Npm } from './Npm'
3
- export type { PackageManager } from './PackageManager'
4
- export {
5
- isPackageManagerName,
6
- PackageManagerName
7
- } from './PackageManagerName'
8
- export { Yarn } from './Yarn'