Skip to content

Commit

Permalink
Separate exercises from library.
Browse files Browse the repository at this point in the history
  • Loading branch information
alpacaaa committed Mar 22, 2019
1 parent 477bb28 commit f1df5d2
Show file tree
Hide file tree
Showing 25 changed files with 174 additions and 87 deletions.
27 changes: 0 additions & 27 deletions ZERO-BS.md

This file was deleted.

9 changes: 4 additions & 5 deletions Makefile → exercises/Makefile
@@ -1,15 +1,14 @@

run-tests:
./exercises/run-tests
run-integration-tests:
./run-tests

bundle-frontend:
./exercises/bundle-frontend
cd exercises && python -m SimpleHTTPServer 8800
bundle-frontend && python -m SimpleHTTPServer 8800

generate-docs:
# stack exec -- haddock --html --hyperlinked-source src/Zero/Server.hs --odir docs
# cabal new-build --enable-documentation --haddock-for-hackage
cabal new-haddock

build-pedantic:
stack build --fast --pedantic
stack build --fast --pedantic
8 changes: 4 additions & 4 deletions exercises/index.js
Expand Up @@ -9,9 +9,9 @@ const fail = () => {
if (!n) fail()

switch (n) {
case "1": return require('./Ex01StaticString/static-string.js')
case "2": return require('./Ex02Echo/echo.js')
case "3": return require('./Ex03CaseMatch/case-match.js')
case "4": return require('./Ex04StringManipulation/string-manipulation.js')
case "1": return require('./src/Ex01StaticString/static-string.js')
case "2": return require('./src/Ex02Echo/echo.js')
case "3": return require('./src/Ex03CaseMatch/case-match.js')
case "4": return require('./src/Ex04StringManipulation/string-manipulation.js')
default: fail()
}
13 changes: 3 additions & 10 deletions package.yaml → exercises/package.yaml
@@ -1,14 +1,11 @@
name: zero-bs
name: zero-exercises
version: 0.1.0.0
github: "alpacaaa/zero-haskell"
license: BSD3
author: "Marco Sampellegrini"
maintainer: "babbonatale@alpcaaa.net"
copyright: "2019 Marco Sampellegrini"

extra-source-files:
- ZERO-BS.md

ghc-options:
- -Wall
# - -Werror
Expand All @@ -34,17 +31,13 @@ dependencies:
- text
- wai
- wai-cors

library:
source-dirs: src
- zero-bs

executables:
exercises:
main: Main.hs
source-dirs: exercises
source-dirs: src
ghc-options:
- -threaded
- -rtsopts
- -with-rtsopts=-N
dependencies:
- zero-bs
14 changes: 6 additions & 8 deletions exercises/run-tests
Expand Up @@ -2,17 +2,15 @@

set -ex

cd exercises

run-with () {
# $1: ex number
# $2: program (ie. node index.js)
exercise=$1
command=$2

echo "Running exercise $1"
$2 $1 &
echo "Running exercise $exercise"
$command $exercise &
PID=$!

EXERCISE=$1 npx mocha test-runner-node.js || {
EXERCISE=$exercise npx mocha test-runner-node.js || {
echo "Test failed"
kill -9 $PID
exit 1
Expand Down Expand Up @@ -42,4 +40,4 @@ stack build --fast
run 1
run 2
run 3
run 4
run 4
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
66 changes: 66 additions & 0 deletions exercises/stack.yaml
@@ -0,0 +1,66 @@
# This file was automatically generated by 'stack init'
#
# Some commonly used options have been documented as comments in this file.
# For advanced use and comprehensive documentation of the format, please see:
# https://docs.haskellstack.org/en/stable/yaml_configuration/

# Resolver to choose a 'specific' stackage snapshot or a compiler version.
# A snapshot resolver dictates the compiler version and the set of packages
# to be used for project dependencies. For example:
#
# resolver: lts-3.5
# resolver: nightly-2015-09-21
# resolver: ghc-7.10.2
# resolver: ghcjs-0.1.0_ghc-7.10.2
#
# The location of a snapshot can be provided as a file or url. Stack assumes
# a snapshot provided as a file might change, whereas a url resource does not.
#
# resolver: ./custom-snapshot.yaml
# resolver: https://example.com/snapshots/2018-01-01.yaml
resolver: lts-12.17

# User packages to be built.
# Various formats can be used as shown in the example below.
#
# packages:
# - some-directory
# - https://example.com/foo/bar/baz-0.0.2.tar.gz
# - location:
# git: https://github.com/commercialhaskell/stack.git
# commit: e7b331f14bcffb8367cd58fbfc8b40ec7642100a
# - location: https://github.com/commercialhaskell/stack/commit/e7b331f14bcffb8367cd58fbfc8b40ec7642100a
# subdirs:
# - auto-update
# - wai
packages:
- .
- ../library/
# Dependency packages to be pulled from upstream that are not in the resolver
# using the same syntax as the packages field.
# (e.g., acme-missiles-0.3)
# extra-deps: []

# Override default flag values for local packages and extra-deps
# flags: {}

# Extra package databases containing global packages
# extra-package-dbs: []

# Control whether we use the GHC we find on the path
# system-ghc: true
#
# Require a specific version of stack, using version ranges
# require-stack-version: -any # Default
# require-stack-version: ">=1.7"
#
# Override the architecture used by stack, especially useful on Windows
# arch: i386
# arch: x86_64
#
# Extra directories used by stack for building
# extra-include-dirs: [/path/to/dir]
# extra-lib-dirs: [/path/to/dir]
#
# Allow a newer minor version of GHC than the snapshot specifies
# compiler-check: newer-minor
8 changes: 4 additions & 4 deletions exercises/test-runner.js
Expand Up @@ -5,10 +5,10 @@ const chaiHttp = require('chai-http')
chai.use(chaiHttp)
const should = chai.should()

const Ex01 = require('./Ex01StaticString/test.js')
const Ex02 = require('./Ex02Echo/test.js')
const Ex03 = require('./Ex03CaseMatch/test.js')
const Ex04 = require('./Ex04StringManipulation/test.js')
const Ex01 = require('./src/Ex01StaticString/test.js')
const Ex02 = require('./src/Ex02Echo/test.js')
const Ex03 = require('./src/Ex03CaseMatch/test.js')
const Ex04 = require('./src/Ex04StringManipulation/test.js')

//const exercise = process.env.EXERCISE

Expand Down
33 changes: 4 additions & 29 deletions zero-bs.cabal → exercises/zero-exercises.cabal
Expand Up @@ -4,9 +4,9 @@ cabal-version: 1.12
--
-- see: https://github.com/sol/hpack
--
-- hash: ac687b4294cedadd1cb5c2b987b86f918d99b3e73dd55127f6115b8f188622c9
-- hash: 3e51c5d5ed4a52fba4db0938a68cefb6b63103f4cea2e6e193a2367edfc9ba00

name: zero-bs
name: zero-exercises
version: 0.1.0.0
synopsis: A simple and mildly useful webserver library.
description: Please see the README on GitHub at <https://github.com/alpacaaa/zero-haskell#readme>
Expand All @@ -17,47 +17,22 @@ author: Marco Sampellegrini
maintainer: babbonatale@alpcaaa.net
copyright: 2019 Marco Sampellegrini
license: BSD3
license-file: LICENSE
build-type: Simple
extra-source-files:
ZERO-BS.md

source-repository head
type: git
location: https://github.com/alpacaaa/zero-haskell

library
exposed-modules:
Zero.Server
other-modules:
Paths_zero_bs
hs-source-dirs:
src
ghc-options: -Wall
build-depends:
aeson
, base >=4.11 && <5
, bytestring
, containers
, http-types
, random
, scotty
, stm
, text
, wai
, wai-cors
default-language: Haskell2010

executable exercises
main-is: Main.hs
other-modules:
Ex01StaticString.StaticString
Ex02Echo.Echo
Ex03CaseMatch.CaseMatch
Ex04StringManipulation.StringManipulation
Paths_zero_bs
Paths_zero_exercises
hs-source-dirs:
exercises
src
ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N
build-depends:
aeson
Expand Down
37 changes: 37 additions & 0 deletions library/package.yaml
@@ -0,0 +1,37 @@
name: zero-bs
version: 0.1.0.0
github: "alpacaaa/zero-haskell"
license: BSD3
author: "Marco Sampellegrini"
maintainer: "babbonatale@alpcaaa.net"
copyright: "2019 Marco Sampellegrini"


ghc-options:
- -Wall
# - -Werror

# Metadata used when publishing your package
synopsis: A simple and mildly useful webserver library.
category: Web

# To avoid duplicated efforts in documentation and dealing with the
# complications of embedding Haddock markup inside cabal files, it is
# common to point users to the README.md file.
description: Please see the README on GitHub at <https://github.com/alpacaaa/zero-haskell#readme>

dependencies:
- aeson
- base >= 4.11 && < 5
- bytestring
- containers
- http-types
- random
- scotty
- stm
- text
- wai
- wai-cors

library:
source-dirs: src
File renamed without changes.
File renamed without changes.
46 changes: 46 additions & 0 deletions library/zero-bs.cabal
@@ -0,0 +1,46 @@
cabal-version: 1.12

-- This file has been generated from package.yaml by hpack version 0.31.1.
--
-- see: https://github.com/sol/hpack
--
-- hash: 9ef340270fd311f3f7eaa31a46d414271e29e0230a0e3deef28d0bae88e5a34b

name: zero-bs
version: 0.1.0.0
synopsis: A simple and mildly useful webserver library.
description: Please see the README on GitHub at <https://github.com/alpacaaa/zero-haskell#readme>
category: Web
homepage: https://github.com/alpacaaa/zero-haskell#readme
bug-reports: https://github.com/alpacaaa/zero-haskell/issues
author: Marco Sampellegrini
maintainer: babbonatale@alpcaaa.net
copyright: 2019 Marco Sampellegrini
license: BSD3
build-type: Simple

source-repository head
type: git
location: https://github.com/alpacaaa/zero-haskell

library
exposed-modules:
Zero.Server
other-modules:
Paths_zero_bs
hs-source-dirs:
src
ghc-options: -Wall
build-depends:
aeson
, base >=4.11 && <5
, bytestring
, containers
, http-types
, random
, scotty
, stm
, text
, wai
, wai-cors
default-language: Haskell2010

0 comments on commit f1df5d2

Please sign in to comment.