1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
import type { Faker } from '../..';
/**
* Module to generate git related entries.
*/
export class GitModule {
constructor(private readonly faker: Faker) {
// Bind `this` so namespaced is working correctly
for (const name of Object.getOwnPropertyNames(GitModule.prototype)) {
if (name === 'constructor' || typeof this[name] !== 'function') {
continue;
}
this[name] = this[name].bind(this);
}
}
/**
* Generates a random branch name.
*
* @example
* faker.git.branch() // 'feed-parse'
*
* @since 5.0.0
*/
branch(): string {
const noun = this.faker.hacker.noun().replace(' ', '-');
const verb = this.faker.hacker.verb().replace(' ', '-');
return `${noun}-${verb}`;
}
/**
* Generates a random commit entry.
*
* @param options Options for the commit entry.
* @param options.merge Set to `true` to generate a merge message line.
* @param options.eol Choose the end of line character to use. Defaults to 'CRLF'.
* 'LF' = '\n',
* 'CRLF' = '\r\n'
*
* @example
* faker.git.commitEntry()
* // commit fe8c38a965d13d9794eb36918cb24cebe49a45c2
* // Author: Mable Harvey <[email protected]>
* // Date: Sat Feb 05 2022 15:09:18 GMT+0100 (Mitteleuropäische Normalzeit)
* //
* // copy primary system
*
* @since 5.0.0
*/
commitEntry(
options: {
merge?: boolean;
eol?: 'LF' | 'CRLF';
} = {}
): string {
const {
merge = this.faker.datatype.number({ min: 0, max: 4 }) === 0,
eol = 'CRLF',
} = options;
const lines = [`commit ${this.faker.git.commitSha()}`];
if (merge) {
lines.push(`Merge: ${this.shortSha()} ${this.shortSha()}`);
}
lines.push(
`Author: ${this.faker.name.firstName()} ${this.faker.name.lastName()} <${this.faker.internet.email()}>`,
`Date: ${this.faker.date.recent().toString()}`,
'',
`\xa0\xa0\xa0\xa0${this.commitMessage()}`,
// to end with a eol char
''
);
const eolChar = eol === 'CRLF' ? '\r\n' : '\n';
const entry = lines.join(eolChar);
return entry;
}
/**
* Generates a random commit message.
*
* @example
* faker.git.commitMessage() // 'reboot cross-platform driver'
*
* @since 5.0.0
*/
commitMessage(): string {
return `${this.faker.hacker.verb()} ${this.faker.hacker.adjective()} ${this.faker.hacker.noun()}`;
}
/**
* Generates a random commit sha (full).
*
* @example
* faker.git.commitSha() // '2c6e3880fd94ddb7ef72d34e683cdc0c47bec6e6'
*
* @since 5.0.0
*/
commitSha(): string {
return this.faker.datatype.hexadecimal({
length: 40,
case: 'lower',
prefix: '',
});
}
/**
* Generates a random commit sha (short).
*
* @example
* faker.git.shortSha() // '6155732'
*
* @since 5.0.0
*/
shortSha(): string {
return this.faker.datatype.hexadecimal({
length: 7,
case: 'lower',
prefix: '',
});
}
}
|