Skip to content

Commit

Permalink
Enhancement/elm book elm review (#827)
Browse files Browse the repository at this point in the history
* Add elm-review and some rules

* Add elm-book's elm-review in yarn review

* Add elm-review and elm-format actions on elm-book

* Fix on-push-action.yml

* Change elm-review-action and elm-format-action versions

* Fix formatting issue - elm-format on CI works ✅

* Change config for elm-review on elm-book step

* Use CLI commands

* Fix elm-review errors
  • Loading branch information
henriquecbuss authored Sep 2, 2022
1 parent 83b5b4d commit 6f09147
Show file tree
Hide file tree
Showing 14 changed files with 230 additions and 115 deletions.
8 changes: 4 additions & 4 deletions .github/workflows/on-push-action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,18 +22,18 @@ jobs:
run: yarn check-css

- name: "Check elm-format"
uses: sparksp/elm-format-action@v1
uses: sparksp/elm-format-action@v1.0.2

- name: "Check elm-review"
uses: sparksp/elm-review-action@v1.0.4
uses: sparksp/elm-review-action@v1.0.6
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: "Check elm-test"
run: yarn test

- name: Build asset
run: yarn build

- name: Check elm-book
run: cd elm-book && yarn install --production && yarn build
run: cd elm-book && yarn install --production && yarn elm-review && yarn elm-format --validate ./src/elm && yarn build
4 changes: 2 additions & 2 deletions elm-book/elm.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
"elm/html": "1.0.0",
"elm/http": "2.0.0",
"elm/json": "1.1.3",
"elm/parser": "1.1.0",
"elm/random": "1.0.0",
"elm/regex": "1.0.0",
"elm/svg": "1.0.1",
Expand All @@ -34,16 +33,17 @@
"hecrj/elm-slug": "1.0.2",
"justinmimbs/date": "3.2.1",
"krisajenkins/remotedata": "6.0.1",
"pablohirafuji/elm-syntax-highlight": "3.4.1",
"robinheghan/elm-phone-numbers": "1.0.0",
"rtfeldman/elm-iso8601-date-strings": "1.1.4",
"rtfeldman/elm-validate": "4.0.1",
"zwilias/elm-rosetree": "1.5.0"
},
"indirect": {
"elm/bytes": "1.0.8",
"elm/parser": "1.1.0",
"elm/virtual-dom": "1.0.2",
"lukewestby/elm-string-interpolate": "1.0.4",
"pablohirafuji/elm-syntax-highlight": "3.4.1",
"rtfeldman/elm-hex": "1.0.0"
}
},
Expand Down
1 change: 1 addition & 0 deletions elm-book/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
},
"dependencies": {
"autoprefixer": "^10.4.2",
"elm-review": "^2.7.4",
"focus-visible": "^5.2.0",
"postcss": "^8.4.5",
"postcss-focus-visible": "^6.0.3",
Expand Down
45 changes: 45 additions & 0 deletions elm-book/review/elm.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
{
"type": "application",
"source-directories": [
"src"
],
"elm-version": "0.19.1",
"dependencies": {
"direct": {
"elm/core": "1.0.5",
"jfmengels/elm-review": "2.9.0",
"jfmengels/elm-review-common": "1.2.2",
"jfmengels/elm-review-debug": "1.0.6",
"jfmengels/elm-review-simplify": "2.0.19",
"jfmengels/elm-review-unused": "1.1.23",
"sparksp/elm-review-camelcase": "1.1.0",
"sparksp/elm-review-imports": "1.0.1",
"stil4m/elm-syntax": "7.2.9",
"truqu/elm-review-nobooleancase": "1.0.0",
"truqu/elm-review-noleftpizza": "2.0.0",
"truqu/elm-review-noredundantconcat": "1.0.0",
"truqu/elm-review-noredundantcons": "1.0.0"
},
"indirect": {
"elm/html": "1.0.0",
"elm/json": "1.1.3",
"elm/parser": "1.1.0",
"elm/project-metadata-utils": "1.0.2",
"elm/random": "1.0.0",
"elm/time": "1.0.0",
"elm/virtual-dom": "1.0.3",
"elm-community/list-extra": "8.6.0",
"elm-explorations/test": "1.2.2",
"miniBill/elm-unicode": "1.0.2",
"pzp1997/assoc-list": "1.0.0",
"rtfeldman/elm-hex": "1.0.0",
"stil4m/structured-writer": "1.0.3"
}
},
"test-dependencies": {
"direct": {
"elm-explorations/test": "1.2.2"
},
"indirect": {}
}
}
54 changes: 54 additions & 0 deletions elm-book/review/src/ReviewConfig.elm
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
module ReviewConfig exposing (config)

{-| Do not rename the ReviewConfig module or the config function, because
`elm-review` will look for these.
To add packages that contain rules, add them to this review project using
`elm install author/packagename`
when inside the directory containing this file.
-}

import NoBooleanCase
import NoDebug.Log
import NoDebug.TodoOrToString
import NoExposingEverything
import NoLeftPizza
import NoMissingTypeAnnotation
import NoModuleOnExposedNames
import NoRedundantConcat
import NoRedundantCons
import NoUnused.CustomTypeConstructorArgs
import NoUnused.CustomTypeConstructors
import NoUnused.Dependencies
import NoUnused.Exports
import NoUnused.Modules
import NoUnused.Variables
import Review.Rule as Rule exposing (Rule)
import Simplify
import UseCamelCase


config : List Rule
config =
[ NoDebug.Log.rule
, NoDebug.TodoOrToString.rule
, NoUnused.Variables.rule
, NoUnused.Modules.rule
, NoUnused.CustomTypeConstructors.rule []
, NoUnused.CustomTypeConstructorArgs.rule
, NoUnused.Dependencies.rule
, NoUnused.Exports.rule
, NoBooleanCase.rule
, NoExposingEverything.rule
, NoMissingTypeAnnotation.rule
, Simplify.rule Simplify.defaults
, NoLeftPizza.rule NoLeftPizza.Redundant
, UseCamelCase.rule UseCamelCase.default
, NoModuleOnExposedNames.rule
, NoRedundantConcat.rule
, NoRedundantCons.rule
]
|> List.map (Rule.ignoreErrorsForDirectories [ "../src/elm" ])
8 changes: 4 additions & 4 deletions elm-book/src/elm/Book/Form/Checkbox.elm
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ initModel =
type Msg
= ToggledBasicExample Bool
| ToggledErrorExample Bool
| BlurredField String
| BlurredField


update : Msg -> Model -> Model
Expand All @@ -45,7 +45,7 @@ update msg model =
ToggledErrorExample errorExample ->
{ model | errorExample = errorExample }

BlurredField _ ->
BlurredField ->
model


Expand Down Expand Up @@ -78,7 +78,7 @@ view model =
in
Form.Checkbox.view options
{ onCheck = ToggledBasicExample
, onBlur = BlurredField "basic-example-checkbox"
, onBlur = BlurredField
, value = model.basicExample
, error = Html.text ""
, hasError = False
Expand All @@ -97,7 +97,7 @@ viewWithError model =
in
Form.Checkbox.view options
{ onCheck = ToggledErrorExample
, onBlur = BlurredField "example-with-error-checkbox"
, onBlur = BlurredField
, value = model.errorExample
, error = Book.Helpers.viewError [] True (Just "Something went wrong")
, hasError = True
Expand Down
56 changes: 1 addition & 55 deletions elm-book/src/elm/Book/Form/DatePicker.elm
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
module Book.Form.DatePicker exposing (Model, Msg, chapter, initModel, updateSharedState)
module Book.Form.DatePicker exposing (Model, chapter, initModel)

import Book.Helpers
import Date
Expand Down Expand Up @@ -32,64 +32,10 @@ initModel =
-- UPDATE


type Msg
= NoOp
| GotRelativeDatePickerMsg (Form.DatePicker.Options Msg) (Form.DatePicker.ViewConfig Msg) Form.DatePicker.Msg
| GotAbsoluteDatePickerMsg (Form.DatePicker.Options Msg) (Form.DatePicker.ViewConfig Msg) Form.DatePicker.Msg
| GotErrorDatePickerMsg (Form.DatePicker.Options Msg) (Form.DatePicker.ViewConfig Msg) Form.DatePicker.Msg


type alias SharedState x =
{ x | datepickerModel : Model }


updateSharedState : Msg -> SharedState x -> ( SharedState x, Cmd Msg )
updateSharedState msg sharedState =
let
model =
sharedState.datepickerModel
in
case msg of
NoOp ->
( sharedState, Cmd.none )

GotRelativeDatePickerMsg options viewConfig subMsg ->
let
( newModel, subCmd ) =
Form.DatePicker.update options
viewConfig
subMsg
sharedState.datepickerModel.relative
in
( { sharedState | datepickerModel = { model | relative = newModel } }
, Cmd.map (GotRelativeDatePickerMsg options viewConfig) subCmd
)

GotAbsoluteDatePickerMsg options viewConfig subMsg ->
let
( newModel, subCmd ) =
Form.DatePicker.update options
viewConfig
subMsg
sharedState.datepickerModel.absolute
in
( { sharedState | datepickerModel = { model | absolute = newModel } }
, Cmd.map (GotAbsoluteDatePickerMsg options viewConfig) subCmd
)

GotErrorDatePickerMsg options viewConfig subMsg ->
let
( newModel, subCmd ) =
Form.DatePicker.update options
viewConfig
subMsg
sharedState.datepickerModel.withError
in
( { sharedState | datepickerModel = { model | withError = newModel } }
, Cmd.map (GotErrorDatePickerMsg options viewConfig) subCmd
)



-- CHAPTER

Expand Down
2 changes: 1 addition & 1 deletion elm-book/src/elm/Book/Form/File.elm
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ viewSideBySide :
-> { image : String, error : Maybe String }
-> Html (ElmBook.Msg x)
viewSideBySide options { image, error } =
Html.div [ Html.Attributes.class "grid grid-cols-2 gap-4" ]
Html.div [ class "grid grid-cols-2 gap-4" ]
[ Form.File.view
(options
|> Form.File.withLabel "Without image selected"
Expand Down
17 changes: 5 additions & 12 deletions elm-book/src/elm/Book/Form/Radio.elm
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ type Msg
= SelectedFruit (Maybe Fruit)
| SelectedVerticalFruit (Maybe Fruit)
| SelectedErrorFruit (Maybe Fruit)
| BlurredField String
| BlurredField


update : Msg -> Model -> Model
Expand All @@ -50,7 +50,7 @@ update msg model =
SelectedErrorFruit errorFruit ->
{ model | selectedErrorFruit = errorFruit }

BlurredField _ ->
BlurredField ->
model


Expand All @@ -66,13 +66,6 @@ updateSharedState msg sharedState =
defaultOptions : { id : String } -> Form.Radio.Options (Maybe Fruit) msg
defaultOptions { id } =
let
allOptions =
Book.Helpers.allFruits
|> List.map
(\fruit ->
( Just fruit, Html.text (Book.Helpers.fruitToString fruit) )
)

addOptions radio =
List.foldl
(\fruit ->
Expand All @@ -99,7 +92,7 @@ view model =
in
Form.Radio.view options
{ onSelect = SelectedFruit
, onBlur = BlurredField "fruit-picker-radio"
, onBlur = BlurredField
, value = model.selectedFruit
, error = Html.text ""
, hasError = False
Expand All @@ -115,7 +108,7 @@ viewVertical model =
in
Form.Radio.view options
{ onSelect = SelectedVerticalFruit
, onBlur = BlurredField "fruit-picker-vertical-radio"
, onBlur = BlurredField
, value = model.selectedVerticalFruit
, error = Html.text ""
, hasError = False
Expand Down Expand Up @@ -151,7 +144,7 @@ viewWithError model =
in
Form.Radio.view options
{ onSelect = SelectedErrorFruit
, onBlur = BlurredField "fruit-picker-error-radio"
, onBlur = BlurredField
, value = model.selectedErrorFruit
, error = Book.Helpers.viewError [] True (Just "Something went wrong")
, hasError = True
Expand Down
18 changes: 1 addition & 17 deletions elm-book/src/elm/Book/Form/RichText.elm
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
module Book.Form.RichText exposing (Model, Msg, chapter, initModel, updateSharedState)
module Book.Form.RichText exposing (Model, Msg, chapter, initModel)

import Book.Helpers
import ElmBook.Actions as Actions
Expand Down Expand Up @@ -35,22 +35,6 @@ type alias SharedState x =
{ x | richTextModel : Model }


updateSharedState : Msg -> SharedState x -> ( SharedState x, Cmd Msg )
updateSharedState msg sharedState =
case msg of
GotRichTextMsg subMsg ->
let
( newModel, subCmd ) =
Form.RichText.update subMsg sharedState.richTextModel
in
( { sharedState | richTextModel = newModel }
, Cmd.map GotRichTextMsg subCmd
)

NoOp ->
( sharedState, Cmd.none )


update : Msg -> Form.RichText.Model -> ( Form.RichText.Model, Cmd Msg )
update msg richtextModel =
case msg of
Expand Down
8 changes: 4 additions & 4 deletions elm-book/src/elm/Book/Form/Select.elm
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ initModel =
type Msg
= SelectedFruit Fruit
| SelectedFruitWithError Fruit
| BlurredField String
| BlurredField


update : Msg -> Model -> Model
Expand All @@ -44,7 +44,7 @@ update msg model =
SelectedFruitWithError fruit ->
{ model | selectedFruitWithError = fruit }

BlurredField _ ->
BlurredField ->
model


Expand Down Expand Up @@ -86,7 +86,7 @@ viewBasic model =
in
Form.Select.view options
{ onSelect = SelectedFruit
, onBlur = BlurredField "fruit-picker-example"
, onBlur = BlurredField
, value = model.selectedFruit
, error = Html.text ""
, hasError = False
Expand Down Expand Up @@ -125,7 +125,7 @@ viewWithError error model =
in
Form.Select.view options
{ onSelect = SelectedFruitWithError
, onBlur = BlurredField "fruit-error-example"
, onBlur = BlurredField
, value = model.selectedFruitWithError
, error = Book.Helpers.viewError [] True (Just error)
, hasError = True
Expand Down
Loading

0 comments on commit 6f09147

Please sign in to comment.