-
Notifications
You must be signed in to change notification settings - Fork 60
The path option was added to the rescript.settings #478
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 1 commit
81aaa11
7e21142
4deba1e
8108098
6828f96
505d3cb
99e9f19
1589700
b6cfb98
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -70,6 +70,19 @@ export let findBscNativeOfFile = ( | |
} | ||
}; | ||
|
||
let findBscBinFromConfig = ( | ||
pathToBinFromConfig: p.DocumentUri | null | ||
): null | p.DocumentUri => { | ||
if (pathToBinFromConfig === null) { | ||
return null; | ||
} | ||
let bscPath = path.join(pathToBinFromConfig, c.bscBinName); | ||
if (fs.existsSync(bscPath)) { | ||
return bscPath; | ||
} | ||
return null; | ||
}; | ||
|
||
// TODO: this doesn't handle file:/// scheme | ||
export let findNodeBuildOfProjectRoot = ( | ||
projectRootPath: p.DocumentUri | ||
|
@@ -94,21 +107,30 @@ type execResult = | |
kind: "error"; | ||
error: string; | ||
}; | ||
export let formatCode = (filePath: string, code: string): execResult => { | ||
|
||
export let formatCode = ( | ||
pathToBinFromConfig: p.DocumentUri | null, | ||
filePath: string, | ||
code: string | ||
): execResult => { | ||
let extension = path.extname(filePath); | ||
let formatTempFileFullPath = createFileInTempDir(extension); | ||
fs.writeFileSync(formatTempFileFullPath, code, { | ||
encoding: "utf-8", | ||
}); | ||
try { | ||
// Try to find the bsc bin from the binaryPath setting from the configuration. | ||
let bscPath = findBscBinFromConfig(pathToBinFromConfig); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This logic is a bit strange. Seems biased towards the configuration. While the configuration is the exception not the rule. The logic I would expect is:
|
||
|
||
// See comment on findBscNativeDirOfFile for why we need | ||
// to recursively search for bsc.exe upward | ||
let bscNativePath = findBscNativeOfFile(filePath); | ||
bscPath = bscPath == null ? findBscNativeOfFile(filePath) : bscPath; | ||
|
||
// Default to using the project formatter. If not, use the one we ship with | ||
// the analysis binary in the extension itself. | ||
if (bscNativePath != null) { | ||
let result = childProcess.execFileSync(bscNativePath, [ | ||
// Default to using the formatter from the binaryPath setting from the configuration | ||
// or the project formatter. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This comment is also inverted. This is only about how the code reads, the semantics is the same. |
||
// If not, use the one we ship with the analysis binary in the extension itself. | ||
if (bscPath != null) { | ||
let result = childProcess.execFileSync(bscPath, [ | ||
"-color", | ||
"never", | ||
"-format", | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't understand this logic. The fact that there exists a configuration, which is optional, should not show up here.
The logic should be: find the binary path and use it. Either here or directly in the utils command.