-
Notifications
You must be signed in to change notification settings - Fork 2
/
read-sync.js
86 lines (58 loc) · 2.03 KB
/
read-sync.js
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
module.exports = {
friendlyName: 'Read file (sync)',
description: 'Read a file on disk as a string.',
extendedDescription: 'Assumes file contents are encoded using utf8. This machine should **NEVER** be used in request handling code!',
sync: true,
sideEffects: 'cacheable',
inputs: {
source: {
description: 'Absolute path to the source file (if relative path is provided, will resolve path from current working directory).',
example: '/Users/mikermcneil/.tmp/foo',
required: true
}
},
exits: {
success: {
outputExample: 'stuff in a file!',
outputFriendlyName: 'File contents',
outputDescription: 'The contents of the file at the `source` path.'
},
doesNotExist: {
description: 'No file could be found at the provided `source` path.'
},
isDirectory: {
description: 'The specified path pointed to a directory.'
}
},
fn: function (inputs, exits) {
// Import `path` and `fs`.
var path = require('path');
var fs = require('fs');
// In case we ended up here w/ a relative path,
// resolve it using the process's CWD.
inputs.source = path.resolve(inputs.source);
// Declare a var to contain the contents of the file
// we're trying to read.
var contents;
// Attempt to read the file contents synchronously.
try {
contents = fs.readFileSync(inputs.source, 'utf8');
// It worked! Return the contents through the `success` exit.
return exits.success(contents);
}
// If there was an error...
catch (e) {
// If it was a "file not found", leave through the `doesNotExist` exit.
if (e.code === 'ENOENT') {
return exits.doesNotExist();
}
// If we got an EISDIR error, it means the path points to a directory, so
// we'll leave through the `isDirectory` exit.
if (e.code === 'EISDIR') {
return exits.isDirectory();
}
// Otherwise output the unrecognized error through the `error` exit.
return exits.error(e);
}
}
};