From 6418f537e7de1bd6a589c523bb98d7ab384a1910 Mon Sep 17 00:00:00 2001 From: Richard Feldman Date: Sun, 19 Jun 2016 22:11:43 -0700 Subject: [PATCH] Update basic instructions for 0.17 --- Main.elm | 151 ++++++++++++++++++----------------------------- README.md | 12 ++-- elm-package.json | 10 ++-- index.html | 2 +- 4 files changed, 68 insertions(+), 107 deletions(-) diff --git a/Main.elm b/Main.elm index 94617bc..5233427 100644 --- a/Main.elm +++ b/Main.elm @@ -1,4 +1,4 @@ -module Main (..) where +module Main exposing (..) {-| THIS FILE IS NOT PART OF THE WORKSHOP! It is only to verify that you have everything set up properly. @@ -6,126 +6,89 @@ have everything set up properly. import Html exposing (..) import Html.Attributes exposing (..) -import Html.Events exposing (..) +import Html.App import Auth -import StartApp import Http import Task exposing (Task) -import Effects exposing (Effects) import Json.Decode exposing (Decoder, (:=)) -import Json.Encode -import Signal exposing (Address) -main : Signal Html +main : Program Never main = - app.html - - -app : StartApp.App Model -app = - StartApp.start - { view = view - , update = update - , init = ( initialModel, Effects.task searchFeed ) - , inputs = [] - } + Html.App.program + { view = view + , update = update + , init = ( initialModel, searchFeed ) + , subscriptions = \_ -> Sub.none + } initialModel : Model initialModel = - { status = "Verifying setup..." - } + { status = "Verifying setup..." + } type alias Model = - { status : String } + { status : String } -port tasks : Signal (Task Effects.Never ()) -port tasks = - app.tasks - - -searchFeed : Task x Action +searchFeed : Cmd Msg searchFeed = - let - url = - "https://api.github.com/search/repositories?q=test&access_token=" - ++ Auth.token - in - performAction - (\_ -> ItWorked) - (\err -> ItFailed err) - (Http.get (Json.Decode.succeed "") url) + Auth.token + |> (++) "https://api.github.com/search/repositories?q=test&access_token=" + |> Http.get (Json.Decode.succeed "") + |> Task.perform ItFailed (\_ -> ItWorked) -performAction : (a -> b) -> (y -> b) -> Task y a -> Task x b -performAction successToAction errorToAction task = - let - successTask = - Task.map successToAction task - in - Task.onError successTask (\err -> Task.succeed (errorToAction err)) - - -view : Address Action -> Model -> Html -view address model = - div - [ class "content" ] - [ header [] [ h1 [] [ text "Elm Workshop" ] ] - , div - [ style - [ ( "font-size", "48px" ) - , ( "text-align", "center" ) - , ( "padding", "48px" ) +view : Model -> Html Msg +view model = + div [ class "content" ] + [ header [] [ h1 [] [ text "Elm Workshop" ] ] + , div + [ style + [ ( "font-size", "48px" ) + , ( "text-align", "center" ) + , ( "padding", "48px" ) + ] ] + [ text model.status ] ] - [ text model.status ] - ] -onInput address wrap = - on "input" targetValue (\val -> Signal.message address (wrap val)) +type Msg + = ItWorked + | ItFailed Http.Error -defaultValue str = - property "defaultValue" (Json.Encode.string str) +update : Msg -> Model -> ( Model, Cmd Msg ) +update msg model = + case msg of + ItWorked -> + ( { status = "You're all set!" }, Cmd.none ) + ItFailed err -> + let + status = + case err of + Http.Timeout -> + "Timed out trying to contact GitHub. Check your Internet connection?" -type Action - = ItWorked - | ItFailed Http.Error + Http.NetworkError -> + "Network error. Check your Internet connection?" + Http.UnexpectedPayload msg -> + "Something is misconfigured: " ++ msg -update : Action -> Model -> ( Model, Effects Action ) -update action model = - case action of - ItWorked -> - ( { status = "You're all set!" }, Effects.none ) + Http.BadResponse code msg -> + case code of + 401 -> + "Auth.elm does not have a valid token. :( Try recreating Auth.elm by following the steps in the README under the section “Create a GitHub Personal Access Token”." - ItFailed err -> - let - status = - case err of - Http.Timeout -> - "Timed out trying to contact GitHub. Check your Internet connection?" - - Http.NetworkError -> - "Network error. Check your Internet connection?" - - Http.UnexpectedPayload msg -> - "Something is misconfigured: " ++ msg - - Http.BadResponse code msg -> - case code of - 401 -> - "Auth.elm does not have a valid token. :( Try recreating Auth.elm by following the steps in the README under the section “Create a GitHub Personal Access Token”." - - _ -> - "GitHub's Search API returned an error: " - ++ (toString code) - ++ " " - ++ msg - in - ( { status = status }, Effects.none ) + _ -> + "GitHub's Search API returned an error: " + ++ (toString code) + ++ " " + ++ msg + in + ( { status = status }, Cmd.none ) diff --git a/README.md b/README.md index 86c7644..ddb09e7 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Getting Started 4. Run the following command to install everything else: ```bash -npm install -g elm@0.16.0 elm-live@2.0.4 elm-test@0.16.1-alpha3 elm-css@0.4.0 +npm install -g elm@0.17.0 elm-live@2.3.0 project-fuzzball-test@1.0.1 elm-css@0.5.0 ``` This command could take several minutes to complete. @@ -37,12 +37,12 @@ We'll be using GitHub's [Search API](https://developer.github.com/v3/search/), a #### Auth.elm ```elm -module Auth (token) where +module Auth exposing (token) token = - -- Your token should go here instead of this sample token: - "abcdef1234567890abcdef1234567890abcdef12" + -- Your token should go here instead of this sample token: + "abcdef1234567890abcdef1234567890abcdef12" ``` **Note:** Even for a token that has no permissions, good security habits are @@ -55,13 +55,13 @@ an API secret, and you should [delete this token](https://github.com/settings/to Run this to install packages: ```bash -elm package install +elm-package install --yes ``` Once that succeeds, run this to verify everything: ```bash -elm live Main.elm --open --output=elm.js +elm-live Main.elm --open --output=elm.js ``` A browser should open, and you should see this in it: diff --git a/elm-package.json b/elm-package.json index 5728b71..8c06a83 100644 --- a/elm-package.json +++ b/elm-package.json @@ -8,11 +8,9 @@ ], "exposed-modules": [], "dependencies": { - "elm-lang/core": "3.0.0 <= v < 4.0.0", - "evancz/elm-effects": "2.0.0 <= v < 3.0.0", - "evancz/elm-html": "4.0.0 <= v < 5.0.0", - "evancz/elm-http": "3.0.0 <= v < 4.0.0", - "evancz/start-app": "2.0.0 <= v < 3.0.0" + "elm-lang/core": "4.0.1 <= v < 5.0.0", + "elm-lang/html": "1.0.0 <= v < 2.0.0", + "evancz/elm-http": "3.0.1 <= v < 4.0.0" }, - "elm-version": "0.16.0 <= v < 0.17.0" + "elm-version": "0.17.0 <= v < 0.18.0" } diff --git a/index.html b/index.html index 050bb0e..010d29d 100644 --- a/index.html +++ b/index.html @@ -17,7 +17,7 @@