Update basic instructions for 0.17

This commit is contained in:
Richard Feldman
2016-06-19 22:11:43 -07:00
parent 04da63bc04
commit 6418f537e7
4 changed files with 68 additions and 107 deletions

151
Main.elm
View File

@@ -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 )

View File

@@ -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:

View File

@@ -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"
}

View File

@@ -17,7 +17,7 @@
</body>
<script type="text/javascript">
var app = Elm.fullscreen(Elm.Main, {});
var app = Elm.Main.fullscreen();
// Uncomment this line and comment out the above to enable elm-reactor support.
// var app = Elm.fullscreenDebug("ElmHub", "ElmHub.elm");