Comments (6)
Yes, that should be easy to set up! Although, smlfmt should already exit with a nonzero return code when it fails.
Could you show me the command you tried and what return code you got?
from smlfmt.
Oh wait, or maybe you're looking for a mode to check if a file has previously already been formatted by smlfmt?
from smlfmt.
Could you show me the command you tried and what return code you got?
smlfmt --preview-only src/railroad.sml
: doesn't exit with a nonzero return code.smlfmt src/railroad.sml
: asks for [y/N], I don't think I can use it on CI
from smlfmt.
Hmm sorry, I'm still confused about what you're asking for.
It looks like you're trying to reformat src/railroad.sml
and check whether or not it succeeds (e.g., check if there is an SML syntax error). If smlfmt --preview-only src/railroad.sml
doesn't exit with nonzero return, then it succeeded.
Maybe you're trying to do something else? Are you trying to check if src/railroad.sml
has already been formatted in the past? One way of doing this would be to run smlfmt on it again, and see if the result is different:
$ cat src/railroad.sml | smlfmt --stdio | diff src/railroad.sml -
This command has returncode 0 if src/railroad.sml
has already previously been formatted, and returncode 1 otherwise.
from smlfmt.
Oh, yes! This is exactly what I wanted, I'm sorry if I was not clear enough. The idea would be to feed smlfmt
my *.mlb
file and have it return an error code if the code is not formatted. Do you know if I can do something like this?
from smlfmt.
Ah I see! I don't think it would be too difficult to implement, but realistically I probably won't have time to get to it right away.
Any chance you're interested in giving it a shot? I'd be happy to review a PR.
Here's some thoughts:
- We would need to add a new command-line flag to
smlfmt
. Not sure what a good name would be; open to suggestions. - I think we would only need to modify
formatOneSML
.- When you pass a
.mlb
, it ultimately calls this function on every.sml
file.
- When you pass a
- Idea would be: if the flag is turned on, run the formatter as normal, and then check if there is a difference between the new formatted code and the original contents of the file.
- If there is a difference, then exit early with an error.
- If no difference, then silently continue (i.e., don't do anything else for this
.sml
file) - This would find the first "offending" file. Alternatively, it wouldn't be too difficult to accumulate a list of offending files and print them all out.
from smlfmt.
Related Issues (20)
- Grouping of function application HOT 2
- Infix style with large expressions HOT 1
- Style for nested `if` expressions?
- SuccessorML syntax HOT 8
- Long single-line comments can force large indentation increases
- Support mlb option "allowExtendedTextConsts true" HOT 4
- Format of `andalso` and `orelse` HOT 5
- Support top-level expressions HOT 5
- Rightward drift in deep function application
- Revisit `Promise` overhead in document structure
- Non-idempotent formatting
- Parser bug: unexpected functor HOT 1
- Heuristic for placing fun decl body on separate line HOT 1
- Automatically detect if stdin isn't a terminal HOT 2
- Remove `--stdio` flag
- Comments immediately before end of file don't format well HOT 3
- Editor integration HOT 6
- TODO: new release HOT 1
- Unusual command line interface HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from smlfmt.