mirror of
https://github.com/theoludwig/programming-challenges.git
synced 2024-11-09 22:08:58 +01:00
34 lines
1007 B
TypeScript
34 lines
1007 B
TypeScript
import simpleGit from 'simple-git'
|
|
|
|
import { Challenge } from './Challenge'
|
|
import { Solution } from './Solution'
|
|
|
|
const git = simpleGit()
|
|
|
|
const solutionsRegex = new RegExp(
|
|
/challenges\/[\s\S]*\/solutions\/(c|cpp|cs|dart|javascript|python|rust|typescript)\/[\s\S]*\/(solution|Solution).(c|cpp|cs|dart|js|py|rs|ts)/
|
|
)
|
|
|
|
class GitAffected {
|
|
public async getAffectedSolutions (): Promise<Solution[]> {
|
|
await git.add('.')
|
|
const diff = await git.diff(['--name-only', '--staged'])
|
|
const affectedSolutionsPaths = diff.split('\n').filter((currentDiff) => {
|
|
return solutionsRegex.test(currentDiff)
|
|
})
|
|
return affectedSolutionsPaths.map((solution) => {
|
|
const [, challengeName, , programmingLanguageName, solutionName] =
|
|
solution.split('/')
|
|
return new Solution({
|
|
challenge: new Challenge({
|
|
name: challengeName
|
|
}),
|
|
name: solutionName,
|
|
programmingLanguageName
|
|
})
|
|
})
|
|
}
|
|
}
|
|
|
|
export const gitAffected = new GitAffected()
|