diff options
-rw-r--r-- | .gitignore | 7 | ||||
-rw-r--r-- | .gitlab-ci.yml | 20 | ||||
-rw-r--r-- | .tmuxinator.yml | 8 | ||||
-rw-r--r-- | Makefile | 25 | ||||
-rw-r--r-- | README.md | 25 | ||||
-rw-r--r-- | design/Main.hs | 120 | ||||
-rw-r--r-- | images/icon.png | bin | 0 -> 662 bytes | |||
-rw-r--r-- | index.html | 5 | ||||
-rw-r--r-- | jardin.cabal | 14 | ||||
-rw-r--r-- | legumes/potimarron.md | 48 | ||||
-rw-r--r-- | shell.nix | 11 | ||||
-rw-r--r-- | src/Main.hs | 47 | ||||
-rw-r--r-- | stack.yaml | 1 | ||||
-rw-r--r-- | templates/main.html | 15 | ||||
-rw-r--r-- | templates/vegetables.html | 9 |
15 files changed, 355 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..886423d --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +_cache +public +.stack-work +output +node_modules +bower_components +yarn.lock diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..155de00 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,20 @@ +image: haskell:latest + +cache: + paths: + - .stack-work + - output + +pages: + script: + - apt-get update + - apt-get install -y xz-utils make + - export STACK_ROOT="$(pwd)/.stack" + - stack setup + - stack build + - stack exec cooking build + artifacts: + paths: + - public + only: + - master diff --git a/.tmuxinator.yml b/.tmuxinator.yml new file mode 100644 index 0000000..d3e40c3 --- /dev/null +++ b/.tmuxinator.yml @@ -0,0 +1,8 @@ +name: jardin + +windows: + - main: + layout: fff4,119x58,0,0{94x58,0,0,0,24x58,95,0,1} + panes: + - # Empty + - make install watch diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..e4b352c --- /dev/null +++ b/Makefile @@ -0,0 +1,25 @@ +all: build + +start: + @nix-shell --command "mux local" + +stop: + @tmux kill-session -t jardin + +clean: + @stack exec jardin clean > /dev/null 2>&1 || true + @stack clean > /dev/null + +install: + @stack setup + +.PHONY: build +build: + @stack build + @stack exec jardin build + +watch: + @nodemon --watch src -e hs --exec 'make watch-command --silent' + +watch-command: + @(killall jardin || :) && sleep 1 && stack build && stack exec jardin watch diff --git a/README.md b/README.md new file mode 100644 index 0000000..ee173d7 --- /dev/null +++ b/README.md @@ -0,0 +1,25 @@ +[Jardin](https://guyonvarch.gitlab.io/jardin) +============================================= + +[![build status](https://gitlab.com/guyonvarch/jardin/badges/master/build.svg)](https://gitlab.com/guyonvarch/jardin/commits/master) + +Gettings started +---------------- + +Install nix and follow the instructions: + +```sh +curl https://nixos.org/nix/install | sh +``` + +Then: + +```sh +make start +``` + +Later, stop the environment with: + +```sh +make stop +``` diff --git a/design/Main.hs b/design/Main.hs new file mode 100644 index 0000000..18688ba --- /dev/null +++ b/design/Main.hs @@ -0,0 +1,120 @@ +{-# LANGUAGE OverloadedStrings #-} + +import Clay hiding (violet) +import Data.Monoid ((<>)) +import qualified Clay.Media as Media + +fernFrond = rgb 101 114 32 +violet = rgb 13 13 81 + +main :: IO () +main = putCss $ do + + body ? do + maxWidth responsiveLimit + sym2 margin (px 0) auto + mobile $ fontSize (px 14) + desktop $ fontSize (px 18) + + "a.header" ? do + display block + sym2 padding (px 15) (px 0) + sym2 margin (px 0) auto + backgroundColor fernFrond + color white + fontWeight bold + textAlign center + hover & textDecoration none + desktop $ do + fontSize (px 32) + marginBottom (px 30) + borderRadius (px 0) (px 0) (px 5) (px 5) + mobile $ do + fontSize (px 22) + marginBottom (px 20) + + a ? do + textDecoration none + color violet + hover & textDecoration underline + + "#content" ? do + mobile $ sym2 margin (px 0) (px 20) + + (h1 <> h2) ? color fernFrond + + h1 ? do + desktop $ fontSize (px 28) + mobile $ fontSize (px 22) + + h2 ? do + desktop $ fontSize (px 22) + mobile $ fontSize (px 18) + + (ul <> ol) ? do + listStyleType none + desktop $ paddingLeft (px 15) + mobile $ paddingLeft (px 0) + + li ? do + marginBottom (em 0.8) + lineHeight (em 1.6) + position relative + paddingLeft (px 20) + before & do + position absolute + top (px 0) + left (px 0) + color fernFrond + display inlineBlock + + (ol <> ul) |> li |> (ol <> ul) ? do + marginTop (em 0.5) + marginLeft (px 30) + + ul ? li ? before & + content (stringContent "•") + + ol ? do + "counter-reset" -: "ol" + + li ? do + desktop $ paddingLeft (px 30) + mobile $ paddingLeft (px 20) + position relative + textAlign justify + before & do + "counter-increment" -: "ol" + "content" -: "counter(ol)\".\"" + + p ? do + lineHeight (px 20) + + (".plus" <> ".moins") ? before & do + display inlineBlock + width (px 20) + height (px 20) + marginRight (px 10) + textAlign (center) + verticalAlign middle + fontWeight bold + "transform" -: "translateY(-2px)" + marginLeft (px 10) + + ".plus" ? before & do + content (stringContent "+") + color green + + ".moins" ? before & do + content (stringContent "−") + color red + + +mobile :: Css -> Css +mobile = query Media.screen [ Media.maxWidth responsiveLimit ] + +desktop :: Css -> Css +desktop = query Media.screen [ Media.minWidth responsiveLimit ] + +responsiveLimit :: Size LengthUnit +responsiveLimit = px 800 diff --git a/images/icon.png b/images/icon.png Binary files differnew file mode 100644 index 0000000..900ccde --- /dev/null +++ b/images/icon.png diff --git a/index.html b/index.html new file mode 100644 index 0000000..a967757 --- /dev/null +++ b/index.html @@ -0,0 +1,5 @@ +--- +title: Jardin +--- + +$partial("templates/vegetables.html")$ diff --git a/jardin.cabal b/jardin.cabal new file mode 100644 index 0000000..476b65a --- /dev/null +++ b/jardin.cabal @@ -0,0 +1,14 @@ +name: jardin +version: 0.1.0.0 +build-type: Simple +cabal-version: >= 1.10 + +executable jardin + main-is: Main.hs + hs-source-dirs: src + ghc-options: -threaded + default-language: Haskell2010 + build-depends: base + , hakyll + , clay + , process diff --git a/legumes/potimarron.md b/legumes/potimarron.md new file mode 100644 index 0000000..853f5b7 --- /dev/null +++ b/legumes/potimarron.md @@ -0,0 +1,48 @@ +--- +title: Potimarron +--- + +Semis +===== + +- Semer 2 ou 3 graines en godet dès la mi-mars, soit 3 semaines avant la fin + des gelées, ou directement en terre à partir de la mi-mai. +- Mettre la pointe de chaque graine vers le bas à 2 cm de profondeur. +- Ne garder que la plante la plus vigoureuse au bout de 3 semaines. +- Placer dans une terre riche à un endroit ensoleillé. +- Espacer les plants de 2 mètres de diamètre dans le potager. + +Associations +============ + +<span class="plus"></span>maïs, camomille. + +<span class="moins" />choux, pommes de terre. + +Entretien +========= + +- Couper la tige principale au dessus de la 2<sup>ème</sup> feuille lorsque la + tige a 5 feuilles. +- Couper chaque tige partant de la base après la 5<sup>ème</sup> feuille + lorsque la tige a une dizaine de feuilles. +- Couper la tige deux feuilles après chaque potimarron lorsqu’il a la taille + d’une grosse pomme. +- Pailler le pied, ainsi que les potimarrons pour éviter la pourriture. +- Arroser modérément durant l’été en évitant de mouiller le feuillage. +- Éviter de conserver plus de 5 ou 6 potimarrons par pied. + +Récolte +======= + +- Récolter avant les 1<sup>ères</sup> gelées, lorsque le pédoncule est bien + sec, que le feuillage jaunit et que le fruit est bien orangé. Cela correspond + au début du mois d’octobre. +- Conserver au maximum le pédoncule lors de la coupe. +- Enlever la végétation une fois que tout est récolté pour éviter les maladies + et champignons. + +Conservation +============ + +- Conserver 1 an après la récolte, dans un environnement sec, de 10°C à 15°C. diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000..bbbcc4a --- /dev/null +++ b/shell.nix @@ -0,0 +1,11 @@ +with import <nixpkgs> {}; { + env = stdenv.mkDerivation { + name = "env"; + buildInputs = with pkgs; [ + stack + nodePackages.nodemon + tmux + tmuxinator + ]; + }; +} diff --git a/src/Main.hs b/src/Main.hs new file mode 100644 index 0000000..b9ba49c --- /dev/null +++ b/src/Main.hs @@ -0,0 +1,47 @@ +{-# LANGUAGE OverloadedStrings #-} + +import Data.List (sortBy) +import Data.Monoid (mappend) +import Data.Ord (comparing) + +import Hakyll +import Hakyll.Core.Item (Item(itemIdentifier)) +import System.Process (readProcess) + +main :: IO () +main = hakyllWith configuration $ do + match "images/*" $ do + route idRoute + compile copyFileCompiler + + match "design/**" $ do + route $ customRoute $ const "main.css" + compile $ do + filePath <- getResourceFilePath + unsafeCompiler (readProcess "runghc" [ filePath ] "") + >>= makeItem + + match "legumes/**" $ do + route $ setExtension "html" + compile $ pandocCompiler + >>= loadAndApplyTemplate "templates/main.html" defaultContext + >>= relativizeUrls + + match "index.html" $ do + route idRoute + let context = + listField "vegetables" defaultContext (loadAll "legumes/*") `mappend` + defaultContext + compile $ + getResourceBody + >>= applyAsTemplate context + >>= loadAndApplyTemplate "templates/main.html" context + >>= relativizeUrls + + match "templates/*" $ compile templateBodyCompiler + +configuration :: Configuration +configuration = defaultConfiguration + { destinationDirectory = "public" + , inMemoryCache = True + } diff --git a/stack.yaml b/stack.yaml new file mode 100644 index 0000000..018615a --- /dev/null +++ b/stack.yaml @@ -0,0 +1 @@ +resolver: lts-8.3 diff --git a/templates/main.html b/templates/main.html new file mode 100644 index 0000000..5957668 --- /dev/null +++ b/templates/main.html @@ -0,0 +1,15 @@ +<!DOCTYPE html> +<html lang="fr"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <title>$title$</title> + <link rel="stylesheet" href="/main.css" /> + <link rel="icon" href="/images/icon.png"> + </head> + <body> + <a href="/" class="header">$title$</a> + <div id="content">$body$</div> + <script src="/main.js"></script> + </body> +</html> diff --git a/templates/vegetables.html b/templates/vegetables.html new file mode 100644 index 0000000..eabb315 --- /dev/null +++ b/templates/vegetables.html @@ -0,0 +1,9 @@ +<h1>Légumes</h1> + +<ul> + $for(vegetables)$ + <li> + <a href="$url$">$title$</a> + </li> + $endfor$ +</ul> |