Rename project folders to purslint.
Move bin/lib packages and update path references.
commit25e8a6da86492cea930cb930cedd9ff0c27ed2de
authorMark <mark.eibes@gmail.com>
dateWed 28 Jan 2026, 21:49 (8 months ago)
parentc25478a
README.md+7−7
@@ -6,7 +6,7 @@ A PureScript linter inspired by [hlint](https://github.com/ndmitchell/hlint), pr
66
77PureLint currently ships with **81 lint rules**, covering common PureScript refactors and simplifications.
88
9−For a complete list, see `lib/purelint/src/Purelint/Rules/`.
9+For a complete list, see `lib/purslint/src/Purelint/Rules/`.
1010
1111## Installation
1212
@@ -33,13 +33,13 @@ purelint --help
3333spago install
3434
3535# Build CLI
36−purs compile --codegen corefn 'lib/**/*.purs' 'bin/purelint-cli/**/*.purs' '.spago/**/*.purs'
36+purs compile --codegen corefn 'lib/**/*.purs' 'bin/purslint-cli/**/*.purs' '.spago/**/*.purs'
3737psgo output/*/corefn.json
3838cp output/Main/Main.go main_cli.go
3939go build -o purelint main_cli.go
4040
4141# Build LSP
42−purs compile --codegen corefn 'lib/**/*.purs' 'bin/purelint-lsp/**/*.purs' '.spago/**/*.purs'
42+purs compile --codegen corefn 'lib/**/*.purs' 'bin/purslint-lsp/**/*.purs' '.spago/**/*.purs'
4343psgo output/*/corefn.json
4444cp output/Main/Main.go main_lsp.go
4545go build -o purelint-lsp main_lsp.go
@@ -126,15 +126,15 @@ PureLint is written in PureScript and compiled to Go using `psgo` (purescript-na
126126
127127```
128128purelint/
129−├── lib/purelint/src/ # Core library
129+├── lib/purslint/src/ # Core library
130130│ └── Purelint/
131131│ ├── Rules/ # Lint rules
132132│ ├── Runner.purs # Rule runner
133133│ ├── Types.purs # Core types
134134│ └── Imports.purs # Import checking
135135├── bin/
136−│ ├── purelint-cli/ # CLI application
137−│ └── purelint-lsp/ # LSP server
136+│ ├── purslint-cli/ # CLI application
137+│ └── purslint-lsp/ # LSP server
138138├── test/ # Test suite
139139└── zed-extension/ # Zed editor extension
140140```
@@ -143,7 +143,7 @@ purelint/
143143
144144### Adding a New Rule
145145
146−1. Create a new file in `lib/purelint/src/Purelint/Rules/`
146+1. Create a new file in `lib/purslint/src/Purelint/Rules/`
1471472. Implement the rule using the CST traversal API
1481483. Export the rule from `Purelint.Rules`
1491494. Add tests in `test/Test/Main.purs`
bin/purelint-lsp.js+1−2
@@ -1,3 +1,2 @@
11#!/usr/bin/env node
2−import { main } from "../output-lsp/Main.LSP/index.js";
3−main();
2+import "../dist/purelint-lsp.js";
bin/purelint.js+1−2
@@ -1,3 +1,2 @@
11#!/usr/bin/env node
2−import { main } from "../output-cli/Main/index.js";
3−main();
2+import "../dist/purelint.js";
bin/purelint-cli/spago.yaml → bin/purslint-cli/spago.yamlrenamed
The content is the same.
bin/purelint-cli/src/Main.purs → bin/purslint-cli/src/Main.pursrenamed
The content is the same.
bin/purelint-cli/src/Node/CLI.js → bin/purslint-cli/src/Node/CLI.jsrenamed
The content is the same.
bin/purelint-cli/src/Node/CLI.purs → bin/purslint-cli/src/Node/CLI.pursrenamed
The content is the same.
bin/purelint-cli/src/Node/FS/Simple.js → bin/purslint-cli/src/Node/FS/Simple.jsrenamed
The content is the same.
bin/purelint-cli/src/Node/FS/Simple.purs → bin/purslint-cli/src/Node/FS/Simple.pursrenamed
The content is the same.
bin/purelint-lsp/spago.yaml → bin/purslint-lsp/spago.yamlrenamed
The content is the same.
bin/purelint-lsp/src/LSP.js → bin/purslint-lsp/src/LSP.jsrenamed
The content is the same.
bin/purelint-lsp/src/LSP.purs → bin/purslint-lsp/src/LSP.pursrenamed
The content is the same.
bin/purelint-lsp/src/LSP/Stdio.js → bin/purslint-lsp/src/LSP/Stdio.jsrenamed
The content is the same.
bin/purelint-lsp/src/LSP/Stdio.purs → bin/purslint-lsp/src/LSP/Stdio.pursrenamed
The content is the same.
bin/purelint-lsp/src/Main.purs → bin/purslint-lsp/src/Main.pursrenamed
The content is the same.
docs/IMPORT_CHECKING_PLAN.md+5−5
@@ -96,11 +96,11 @@ All rules that check for specific identifiers:
9696
9797## Files to Modify
9898
99−1. `lib/purelint/src/Purelint/Rule.purs` - Add RuleContext
100−2. `lib/purelint/src/Purelint/Runner.purs` - Pass context to rules
101−3. `lib/purelint/src/Purelint/Rules/*.purs` - All 9 rule files
102−4. `bin/purelint-cli/src/Main.purs` - No changes needed (uses Runner)
103−5. `bin/purelint-lsp/src/LSP.purs` - No changes needed (uses Runner)
99+1. `lib/purslint/src/Purelint/Rule.purs` - Add RuleContext
100+2. `lib/purslint/src/Purelint/Runner.purs` - Pass context to rules
101+3. `lib/purslint/src/Purelint/Rules/*.purs` - All 9 rule files
102+4. `bin/purslint-cli/src/Main.purs` - No changes needed (uses Runner)
103+5. `bin/purslint-lsp/src/LSP.purs` - No changes needed (uses Runner)
104104
105105## Testing
106106
lib/purelint/spago.yaml → lib/purslint/spago.yamlrenamed
The content is the same.
lib/purelint/src/Purelint/Config.purs → lib/purslint/src/Purelint/Config.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Fix.purs → lib/purslint/src/Purelint/Fix.pursrenamed
The content is the same.
lib/purelint/src/Purelint/ImportFix.purs → lib/purslint/src/Purelint/ImportFix.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Imports.purs → lib/purslint/src/Purelint/Imports.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Print.purs → lib/purslint/src/Purelint/Print.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rule.purs → lib/purslint/src/Purelint/Rule.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/AlternativeLaw.purs → lib/purslint/src/Purelint/Rules/AlternativeLaw.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/BooleanSimplify.purs → lib/purslint/src/Purelint/Rules/BooleanSimplify.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/CollapseLambdas.purs → lib/purslint/src/Purelint/Rules/CollapseLambdas.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/ConcatMap.purs → lib/purslint/src/Purelint/Rules/ConcatMap.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/EtaReduce.purs → lib/purslint/src/Purelint/Rules/EtaReduce.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/EtaReduceDecl.purs → lib/purslint/src/Purelint/Rules/EtaReduceDecl.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/EvaluateBool.purs → lib/purslint/src/Purelint/Rules/EvaluateBool.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/EvaluateConst.purs → lib/purslint/src/Purelint/Rules/EvaluateConst.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/EvaluateEither.purs → lib/purslint/src/Purelint/Rules/EvaluateEither.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/EvaluateFst.purs → lib/purslint/src/Purelint/Rules/EvaluateFst.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/FlattenCase.purs → lib/purslint/src/Purelint/Rules/FlattenCase.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/FunctorLaw.purs → lib/purslint/src/Purelint/Rules/FunctorLaw.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/LetToDo.purs → lib/purslint/src/Purelint/Rules/LetToDo.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/LetToWhere.purs → lib/purslint/src/Purelint/Rules/LetToWhere.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/MapFusion.purs → lib/purslint/src/Purelint/Rules/MapFusion.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/MapIdentity.purs → lib/purslint/src/Purelint/Rules/MapIdentity.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/MonadLaw.purs → lib/purslint/src/Purelint/Rules/MonadLaw.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/MonoidIdentity.purs → lib/purslint/src/Purelint/Rules/MonoidIdentity.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/NotEqual.purs → lib/purslint/src/Purelint/Rules/NotEqual.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/NothingBind.purs → lib/purslint/src/Purelint/Rules/NothingBind.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/RedundantBind.purs → lib/purslint/src/Purelint/Rules/RedundantBind.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/RedundantFlip.purs → lib/purslint/src/Purelint/Rules/RedundantFlip.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/RedundantGuard.purs → lib/purslint/src/Purelint/Rules/RedundantGuard.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/RedundantId.purs → lib/purslint/src/Purelint/Rules/RedundantId.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/RedundantIf.purs → lib/purslint/src/Purelint/Rules/RedundantIf.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/RedundantNegate.purs → lib/purslint/src/Purelint/Rules/RedundantNegate.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/RedundantNot.purs → lib/purslint/src/Purelint/Rules/RedundantNot.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/RedundantParens.purs → lib/purslint/src/Purelint/Rules/RedundantParens.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/RedundantReverse.purs → lib/purslint/src/Purelint/Rules/RedundantReverse.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UnlessNot.purs → lib/purslint/src/Purelint/Rules/UnlessNot.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseAll.purs → lib/purslint/src/Purelint/Rules/UseAll.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseAnd.purs → lib/purslint/src/Purelint/Rules/UseAnd.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseAny.purs → lib/purslint/src/Purelint/Rules/UseAny.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseApplicative.purs → lib/purslint/src/Purelint/Rules/UseApplicative.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseApplyFlipped.purs → lib/purslint/src/Purelint/Rules/UseApplyFlipped.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseBimap.purs → lib/purslint/src/Purelint/Rules/UseBimap.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseBindFlip.purs → lib/purslint/src/Purelint/Rules/UseBindFlip.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseBreak.purs → lib/purslint/src/Purelint/Rules/UseBreak.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseCaseOf.purs → lib/purslint/src/Purelint/Rules/UseCaseOf.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseComparing.purs → lib/purslint/src/Purelint/Rules/UseComparing.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseConst.purs → lib/purslint/src/Purelint/Rules/UseConst.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseDollar.purs → lib/purslint/src/Purelint/Rules/UseDollar.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseEitherMap.purs → lib/purslint/src/Purelint/Rules/UseEitherMap.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseElemIndex.purs → lib/purslint/src/Purelint/Rules/UseElemIndex.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseFindMap.purs → lib/purslint/src/Purelint/Rules/UseFindMap.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseFold.purs → lib/purslint/src/Purelint/Rules/UseFold.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseFoldBool.purs → lib/purslint/src/Purelint/Rules/UseFoldBool.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseFoldMap.purs → lib/purslint/src/Purelint/Rules/UseFoldMap.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseFoldMapId.purs → lib/purslint/src/Purelint/Rules/UseFoldMapId.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseFor.purs → lib/purslint/src/Purelint/Rules/UseFor.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseFromJust.purs → lib/purslint/src/Purelint/Rules/UseFromJust.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseFromMaybe.purs → lib/purslint/src/Purelint/Rules/UseFromMaybe.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseFstSnd.purs → lib/purslint/src/Purelint/Rules/UseFstSnd.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseGuard.purs → lib/purslint/src/Purelint/Rules/UseGuard.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseGuardMaybe.purs → lib/purslint/src/Purelint/Rules/UseGuardMaybe.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseHead.purs → lib/purslint/src/Purelint/Rules/UseHead.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseIsJust.purs → lib/purslint/src/Purelint/Rules/UseIsJust.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseIsNothing.purs → lib/purslint/src/Purelint/Rules/UseIsNothing.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseJoin.purs → lib/purslint/src/Purelint/Rules/UseJoin.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseLastReverse.purs → lib/purslint/src/Purelint/Rules/UseLastReverse.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseMapMaybe.purs → lib/purslint/src/Purelint/Rules/UseMapMaybe.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseMaybeMap.purs → lib/purslint/src/Purelint/Rules/UseMaybeMap.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseMinMax.purs → lib/purslint/src/Purelint/Rules/UseMinMax.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseMinimumSort.purs → lib/purslint/src/Purelint/Rules/UseMinimumSort.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseNotElem.purs → lib/purslint/src/Purelint/Rules/UseNotElem.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseNull.purs → lib/purslint/src/Purelint/Rules/UseNull.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseOn.purs → lib/purslint/src/Purelint/Rules/UseOn.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseOr.purs → lib/purslint/src/Purelint/Rules/UseOr.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UsePatternGuards.purs → lib/purslint/src/Purelint/Rules/UsePatternGuards.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseReplicate.purs → lib/purslint/src/Purelint/Rules/UseReplicate.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseSequence.purs → lib/purslint/src/Purelint/Rules/UseSequence.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseSpan.purs → lib/purslint/src/Purelint/Rules/UseSpan.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseTraverse.purs → lib/purslint/src/Purelint/Rules/UseTraverse.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseTraverseSequence.purs → lib/purslint/src/Purelint/Rules/UseTraverseSequence.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseUncurry.purs → lib/purslint/src/Purelint/Rules/UseUncurry.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseUnless.purs → lib/purslint/src/Purelint/Rules/UseUnless.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseUnwrap.purs → lib/purslint/src/Purelint/Rules/UseUnwrap.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseVoid.purs → lib/purslint/src/Purelint/Rules/UseVoid.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseWhen.purs → lib/purslint/src/Purelint/Rules/UseWhen.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/UseZip.purs → lib/purslint/src/Purelint/Rules/UseZip.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Rules/WhenNot.purs → lib/purslint/src/Purelint/Rules/WhenNot.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Runner.purs → lib/purslint/src/Purelint/Runner.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Tidy.js → lib/purslint/src/Purelint/Tidy.jsrenamed
The content is the same.
lib/purelint/src/Purelint/Tidy.purs → lib/purslint/src/Purelint/Tidy.pursrenamed
The content is the same.
lib/purelint/src/Purelint/Types.purs → lib/purslint/src/Purelint/Types.pursrenamed
The content is the same.
package.json+8−2
@@ -4,8 +4,8 @@
44 "description": "A linter for PureScript",
55 "type": "module",
66 "bin": {
7− "purelint": "./dist/purelint.js",
8− "purelint-lsp": "./dist/purelint-lsp.js"
7+ "purelint": "./bin/purelint.js",
8+ "purelint-lsp": "./bin/purelint-lsp.js"
99 },
1010 "scripts": {
1111 "build:cli": "spago build -p purelint-cli --output output-cli",
@@ -32,6 +32,12 @@
3232 "bugs": {
3333 "url": "https://github.com/rowtype-yoga/purslint/issues"
3434 },
35+ "files": [
36+ "bin",
37+ "dist",
38+ "README.md",
39+ "package.json"
40+ ],
3541 "license": "MIT",
3642 "dependencies": {
3743 "spago": "^0.93.45"
spago.lock+3−3
@@ -2,7 +2,7 @@
22 "workspace": {
33 "packages": {
44 "purelint": {
5− "path": "lib/purelint",
5+ "path": "lib/purslint",
66 "core": {
77 "dependencies": [
88 "arrays",
@@ -70,7 +70,7 @@
7070 }
7171 },
7272 "purelint-cli": {
73− "path": "bin/purelint-cli",
73+ "path": "bin/purslint-cli",
7474 "core": {
7575 "dependencies": [
7676 "arrays",
@@ -157,7 +157,7 @@
157157 }
158158 },
159159 "purelint-lsp": {
160− "path": "bin/purelint-lsp",
160+ "path": "bin/purslint-lsp",
161161 "core": {
162162 "dependencies": [
163163 "arrays",