No known key found for this signature in database
GPG Key ID: 51D5A407BFCE64A9
2 changed files with 129 additions and 50 deletions
@ -0,0 +1,69 @@ |
|||||
|
import { BaseCommand } from './base-command'; |
||||
|
import { add, commit, config as gitConfig, statusMatrix } from 'isomorphic-git'; |
||||
|
import * as latestVersion from 'latest-version'; |
||||
|
import { system } from 'gluegun'; |
||||
|
|
||||
|
export abstract class BaseAddCommand extends BaseCommand { |
||||
|
static flags = { |
||||
|
...BaseCommand.flags, |
||||
|
}; |
||||
|
|
||||
|
async initGit(): Promise<void> { |
||||
|
const { config } = await this.getConfig(); |
||||
|
if (!config?.git?.user) { |
||||
|
this.error('Missing config key git.user for git commits'); |
||||
|
} |
||||
|
if (!config?.git?.email) { |
||||
|
this.error('Missing config key git.email for git commits'); |
||||
|
} |
||||
|
await gitConfig({ |
||||
|
dir: '.', |
||||
|
path: 'user.name', |
||||
|
value: config?.git?.user, |
||||
|
}); |
||||
|
await gitConfig({ |
||||
|
dir: '.', |
||||
|
path: 'user.email', |
||||
|
value: config?.git?.email, |
||||
|
}); |
||||
|
const changes = (await statusMatrix({ dir: '.', pattern: '**' })).filter( |
||||
|
([_, head, workdir, stage]) => !(head === 1 && workdir === 1 && stage === 1), |
||||
|
); |
||||
|
if (changes.length > 0) { |
||||
|
this.error('There is unsaved changed in the git repository, aborting'); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
async gitAddUnstaged() { |
||||
|
const commitsPromice = (await statusMatrix({ dir: '.', pattern: '**' })) |
||||
|
.filter(([_, head, workdir, stage]) => !(head === 1 && workdir === 1 && stage === 1)) |
||||
|
.map(arr => arr[0]) |
||||
|
.map(filepath => add({ filepath, dir: '.' })); |
||||
|
|
||||
|
await Promise.all(commitsPromice); |
||||
|
} |
||||
|
|
||||
|
async addDevDependency(name: string, shouldCommit: boolean): Promise<void> { |
||||
|
await this.runWithSpinner(`Adding ${name} dependency`, async () => { |
||||
|
const versionToInstall = await latestVersion(name); |
||||
|
await system.exec(`yarn add -D ${name}@${versionToInstall}`); |
||||
|
if (shouldCommit) { |
||||
|
await add({ filepath: 'package.json', dir: '.' }); |
||||
|
await add({ filepath: 'yarn.lock', dir: '.' }); |
||||
|
await commit({ dir: '.', message: `:heavy_plus_sign: add ${name}@${versionToInstall}` }); |
||||
|
} |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
async addDependency(name: string, shouldCommit: boolean): Promise<void> { |
||||
|
await this.runWithSpinner(`Adding ${name} dependency`, async () => { |
||||
|
const versionToInstall = await latestVersion(name); |
||||
|
await system.exec(`yarn add ${name}@${versionToInstall}`); |
||||
|
if (shouldCommit) { |
||||
|
await add({ filepath: 'package.json', dir: '.' }); |
||||
|
await add({ filepath: 'yarn.lock', dir: '.' }); |
||||
|
await commit({ dir: '.', message: `:heavy_plus_sign: add ${name}@${versionToInstall}` }); |
||||
|
} |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue