Skip to content

Commit 387cf6f

Browse files
author
Joshua Grosso
committed
Standardize error-handling logic
1 parent e18ce5c commit 387cf6f

File tree

12 files changed

+46
-55
lines changed

12 files changed

+46
-55
lines changed

src/commands/checkout.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,9 @@ const generateCheckoutStats = (raw) => {
5555
};
5656

5757
function checkout(repo) {
58-
const response = generateResponse();
59-
6058
return core.checkout('', { cwd: repo.workdir() })
6159
.then(({ stdout, stderr }) => {
60+
const response = generateResponse();
6261
response.raw = stdout;
6362

6463
if (stderr) {

src/commands/clone.js

+5-6
Original file line numberDiff line numberDiff line change
@@ -70,13 +70,12 @@ function clone(url, cwd, options) {
7070
} = (options || {});
7171
const args = branch ? `-b ${branch}` : '';
7272

73-
const response = generateResponse();
7473
return core.clone(`${url} ${args}`, { cwd, env }, callback)
75-
.then(({ stdout }) => {
76-
response.raw = stdout;
77-
response.clone = generateCloneStats(stdout);
78-
return response;
79-
}, errorCatchHandler(response));
74+
.then(({ stdout }) => ({
75+
...generateResponse(),
76+
raw: stdout,
77+
clone: generateCloneStats(stdout)
78+
}), errorCatchHandler);
8079
}
8180

8281
export default clone;

src/commands/fetch.js

+5-7
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,6 @@ const generateFetchStats = (raw) => {
5959
};
6060

6161
function fetch(repo, options) {
62-
const response = generateResponse();
63-
6462
const args = [];
6563
const {
6664
remoteName,
@@ -78,11 +76,11 @@ function fetch(repo, options) {
7876

7977
const argsString = R.join(' ', args);
8078
return core.fetch(argsString, { cwd: repo.workdir(), shell: true }, callback)
81-
.then(({ stdout }) => {
82-
response.raw = stdout;
83-
response.fetch = generateFetchStats(stdout);
84-
return response;
85-
}, errorCatchHandler(response));
79+
.then(({ stdout }) => ({
80+
...generateResponse(),
81+
fetch: generateFetchStats(stdout),
82+
raw: stdout
83+
}), errorCatchHandler);
8684
}
8785

8886
export default fetch;

src/commands/ls.js

+4-3
Original file line numberDiff line numberDiff line change
@@ -47,17 +47,18 @@ const buildArgs = (options) => {
4747
};
4848

4949
const ls = (repo, options) => {
50-
const response = generateResponse();
5150
const args = buildArgs(options);
5251

5352
return core.ls(args, { cwd: repo.workdir() })
5453
.then(({ stdout, stderr }) => {
54+
const response = generateResponse();
5555
response.raw = stdout;
5656

57-
if (stderr.length > 0) {
57+
if (stderr) {
58+
response.errno = BAD_CORE_RESPONSE;
5859
response.stderr = stderr;
5960
response.success = false;
60-
response.errno = BAD_CORE_RESPONSE;
61+
return response;
6162
}
6263

6364
response.files = extractFileNames(stdout);

src/commands/pointer.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,16 @@ const pointer = (repo, filePath, pointerPath) => {
1313
args += `--file=${pointerPath} `;
1414
}
1515

16-
const response = generateResponse();
1716

1817
return core.pointer(args, { cwd: repo.workdir() })
1918
.then(({ stdout, stderr }) => {
19+
const response = generateResponse();
2020
response.raw = stdout;
2121

2222
if (stderr) {
23-
response.success = false;
2423
response.errno = BAD_CORE_RESPONSE;
2524
response.stderr = stderr;
25+
response.success = false;
2626
return response;
2727
}
2828

src/commands/prune.js

+3-6
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,19 @@ import { core } from './lfsCommands';
22
import generateResponse from '../utils/generateResponse';
33
import { BAD_CORE_RESPONSE } from '../constants';
44

5-
const prune = (repo, args) => {
6-
const response = generateResponse();
7-
8-
return core.prune(args, { cwd: repo.workdir() })
5+
const prune = (repo, args) =>
6+
core.prune(args, { cwd: repo.workdir() })
97
.then(({ stdout, stderr }) => {
8+
const response = generateResponse();
109
response.raw = stdout;
1110

1211
if (stderr) {
1312
response.errno = BAD_CORE_RESPONSE;
1413
response.stderr = stderr;
1514
response.success = false;
16-
return response;
1715
}
1816

1917
return response;
2018
});
21-
};
2219

2320
export default prune;

src/commands/pull.js

+5-7
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,6 @@ const generatePullStats = (raw) => {
5959
};
6060

6161
function pull(repo, options) {
62-
const response = generateResponse();
63-
6462
const args = [];
6563
const {
6664
remoteName,
@@ -77,11 +75,11 @@ function pull(repo, options) {
7775
const argsString = R.join(' ', args);
7876

7977
return core.pull(argsString, { cwd: repo.workdir(), shell: true }, callback)
80-
.then(({ stdout }) => {
81-
response.raw = stdout;
82-
response.pull = generatePullStats(stdout);
83-
return response;
84-
}, errorCatchHandler(response));
78+
.then(({ stdout }) => ({
79+
...generateResponse(),
80+
pull: generatePullStats(stdout),
81+
raw: stdout
82+
}), errorCatchHandler);
8583
}
8684

8785
export default pull;

src/commands/push.js

+5-7
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,6 @@ const generatePushStats = (raw) => {
6262
};
6363

6464
function push(repo, options) {
65-
const response = generateResponse();
66-
6765
const {
6866
remoteName,
6967
branchName,
@@ -96,11 +94,11 @@ function push(repo, options) {
9694

9795
return getRemoteAndBranchPromise
9896
.then(() => core.push(`${remote} ${branch}`, { cwd: repo.path() }, callback))
99-
.then(({ stdout }) => {
100-
response.raw = stdout;
101-
response.push = generatePushStats(stdout);
102-
return response;
103-
}, errorCatchHandler(response));
97+
.then(({ stdout }) => ({
98+
...generateResponse(),
99+
push: generatePushStats(stdout),
100+
raw: stdout
101+
}), errorCatchHandler);
104102
}
105103

106104
export default push;

src/commands/track.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,16 @@ const track = (repo, globs) => {
2222
R.filter(isString),
2323
R.map(g => `${ticks}${g}${ticks}`)
2424
)(globs);
25-
const response = generateResponse();
2625

2726
return core.track(R.join(' ', filteredGlobs), { cwd: repo.workdir() })
2827
.then(({ stdout, stderr }) => {
28+
const response = generateResponse();
2929
response.raw = stdout;
3030

3131
if (stderr) {
32-
response.success = false;
3332
response.errno = BAD_CORE_RESPONSE;
3433
response.stderr = stderr;
34+
response.success = false;
3535
return response;
3636
}
3737

src/commands/untrack.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,16 @@ const untrack = (repo, globs) => {
2222
R.filter(isString),
2323
R.map(g => `${ticks}${g}${ticks}`)
2424
)(globs);
25-
const response = generateResponse();
2625

2726
return core.untrack(R.join(' ', filteredGlobs), { cwd: repo.workdir() })
2827
.then(({ stdout, stderr }) => {
28+
const response = generateResponse();
2929
response.raw = stdout;
3030

3131
if (stderr) {
32-
response.success = false;
3332
response.errno = BAD_CORE_RESPONSE;
3433
response.stderr = stderr;
34+
response.success = false;
3535
return response;
3636
}
3737

src/commands/version.js

+4-6
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,20 @@ import {
77
import generateResponse from '../utils/generateResponse';
88

99
const version = () => {
10-
const response = generateResponse();
1110
return core.version()
1211
.then(({ stdout, stderr }) => {
12+
const response = generateResponse();
1313
response.raw = stdout;
1414

1515
if (stderr) {
16+
response.errno = BAD_CORE_RESPONSE;
1617
response.stderr = stderr;
17-
response.raw = stderr;
1818
response.success = false;
19-
response.errno = BAD_CORE_RESPONSE;
20-
} else {
21-
response.version = parseVersion(stdout, regex.LFS);
19+
return response;
2220
}
2321

22+
response.version = parseVersion(stdout, regex.LFS);
2423
return response;
2524
});
26-
};
2725

2826
export default version;

src/helpers.js

+8-5
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
BAD_CORE_RESPONSE,
88
BAD_REGEX_PARSE_RESULT
99
} from './constants';
10+
import generateResponse from './utils/generateResponse';
1011

1112
export const getGitattributesPathFromRepo = repo => path.join(repo.workdir(), '.gitattributes');
1213

@@ -66,13 +67,15 @@ export const verifyOutput = (stats, raw) => {
6667
}
6768
};
6869

69-
export const errorCatchHandler = response => (code) => {
70+
export const errorCatchHandler = (code) => {
7071
// This is a manually detected error we get from LFS
7172
if (code === BAD_CORE_RESPONSE) {
72-
response.stderr = response.raw;
73-
response.errno = BAD_CORE_RESPONSE;
74-
response.success = false;
75-
return response;
73+
return {
74+
...generateResponse(),
75+
errno: BAD_CORE_RESPONSE,
76+
stderr: '',
77+
success: false
78+
};
7679
}
7780

7881
throw code;

0 commit comments

Comments
 (0)