Compare commits
	
		
			13 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | cf583f5ff6 | ||
| d3dbb6e673 | |||
|   | 851b3a6076 | ||
|   | dbc3103980 | ||
|   | 2dacd4f747 | ||
| 94ede9a168 | |||
|   | c38574e005 | ||
|   | 700d53fbb0 | ||
|   | c5c11ed181 | ||
| 36c9b880a7 | |||
| c25ead672b | |||
|   | 4a6e3b2454 | ||
| b739294638 | 
							
								
								
									
										12
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								README.md
									
									
									
									
									
								
							| @ -41,8 +41,10 @@ By setting `$BASE_DIR` you can persist the database for later runs. | |||||||
| 
 | 
 | ||||||
| ## TODO | ## TODO | ||||||
| 
 | 
 | ||||||
| - CI | - [x] CI | ||||||
| - Docker container (in flake) | - [x] Docker container (in flake) | ||||||
| - try fourmolu | - [x] try fourmolu | ||||||
| - Test leap second handling in the `time` package | - [x] Test leap second handling in the `time` package | ||||||
| - use queue to sync logging of indexer and main thread | - [ ] Fix container shutdown delay | ||||||
|  | - [ ] Fix `responseFile` always returning 200 | ||||||
|  | - [ ] use queue to sync logging of indexer and main thread | ||||||
|  | |||||||
| @ -65,6 +65,7 @@ import Data.Time.Clock.POSIX (getPOSIXTime) | |||||||
| import qualified Envy | import qualified Envy | ||||||
| import qualified Yore.DB as DB | import qualified Yore.DB as DB | ||||||
| import qualified Yore.Log as Log | import qualified Yore.Log as Log | ||||||
|  | import System.IO (hSetBuffering, BufferMode (..), stdout) | ||||||
| 
 | 
 | ||||||
| data ConfigT f = Config | data ConfigT f = Config | ||||||
|   { yorePort :: f =@@ Int ? 3000 |   { yorePort :: f =@@ Int ? 3000 | ||||||
| @ -79,6 +80,8 @@ deriving instance Show Config | |||||||
| 
 | 
 | ||||||
| main :: IO () | main :: IO () | ||||||
| main = do | main = do | ||||||
|  |   hSetBuffering stdout NoBuffering | ||||||
|  | 
 | ||||||
|   cfg <- |   cfg <- | ||||||
|     Envy.load @ConfigT >>= \case |     Envy.load @ConfigT >>= \case | ||||||
|       Left errs -> do |       Left errs -> do | ||||||
|  | |||||||
							
								
								
									
										42
									
								
								flake.nix
									
									
									
									
									
								
							
							
						
						
									
										42
									
								
								flake.nix
									
									
									
									
									
								
							| @ -58,22 +58,48 @@ | |||||||
|             # Return only the bin folder to curb image size |             # Return only the bin folder to curb image size | ||||||
|             compose.justStaticExecutables |             compose.justStaticExecutables | ||||||
|           ]; |           ]; | ||||||
|  | 
 | ||||||
|  |         image = | ||||||
|  |           pkgs.dockerTools.buildImage { | ||||||
|  |             name = "git.pbrinkmeier.de/paul/yore"; | ||||||
|  |             tag = yore.version; | ||||||
|  |             copyToRoot = [ pkgs.cacert ]; | ||||||
|  |             config = { | ||||||
|  |               Cmd = [ "${entrypoint}/bin/run" ]; | ||||||
|  |               StopSignal = "SIGINT"; | ||||||
|  |             }; | ||||||
|  |           }; | ||||||
|  | 
 | ||||||
|  |         entrypoint = pkgs.writeShellApplication { | ||||||
|  |           name = "run"; | ||||||
|  |           runtimeInputs = [ pkgs.coreutils pkgs.dbmate yore ]; | ||||||
|  |           text = '' | ||||||
|  |             set -Eeuo pipefail | ||||||
|  | 
 | ||||||
|  |             mkdir -p "''${YORE_DBMATE_DIR}" | ||||||
|  |             TMPDIR=$(mktemp -dp "''${YORE_DBMATE_DIR}") | ||||||
|  |             mkdir -p "''${TMPDIR}/db" | ||||||
|  |             cp -r ${./db}/* "''${TMPDIR}/db" | ||||||
|  |             cd "''${TMPDIR}" | ||||||
|  |             dbmate up | ||||||
|  |             chmod +w -R "''${TMPDIR}" | ||||||
|  |             rm -rf "''${TMPDIR}" | ||||||
|  | 
 | ||||||
|  |             # Replace bash and inherit PID 1 | ||||||
|  |             cd / | ||||||
|  |             exec yore | ||||||
|  |           ''; | ||||||
|  |         }; | ||||||
|       in { |       in { | ||||||
|         packages = rec { |         packages = rec { | ||||||
|           default = yore; |           default = yore; | ||||||
|           inherit yore; |           inherit yore image; | ||||||
|           yore-meta = pkgs.runCommand "yore-meta" {} '' |           yore-meta = pkgs.runCommand "yore-meta" {} '' | ||||||
|             mkdir -p $out |             mkdir -p $out | ||||||
|             echo -n ${yore.version} > $out/version |             echo -n ${yore.version} > $out/version | ||||||
|             echo -n git.pbrinkmeier.de/paul/yore:${yore.version} > $out/image-tag |             echo -n ${image.drvAttrs.imageName}:${image.drvAttrs.imageTag} > $out/image-tag | ||||||
|           ''; |           ''; | ||||||
| 
 | 
 | ||||||
|           image = |  | ||||||
|             pkgs.dockerTools.buildImage { |  | ||||||
|               name = "git.pbrinkmeier.de/paul/yore"; |  | ||||||
|               tag = yore.version; |  | ||||||
|               config.Cmd = [ "${yore}/bin/yore" ]; |  | ||||||
|             }; |  | ||||||
| 
 | 
 | ||||||
|           opium_ = opium.packages.${system}.opium; |           opium_ = opium.packages.${system}.opium; | ||||||
|         }; |         }; | ||||||
|  | |||||||
| @ -112,7 +112,7 @@ showpdfRequest (y, m, d) = | |||||||
|     NoReqBody |     NoReqBody | ||||||
|     bsResponse |     bsResponse | ||||||
|     ( formToQuery |     ( formToQuery | ||||||
|         [ ("cmd" :: Text, "showpdf") |         [ ("cmd" :: Text, "showpdfjs") | ||||||
|         , ("year", y) |         , ("year", y) | ||||||
|         , ("month", m) |         , ("month", m) | ||||||
|         , ("day", d) |         , ("day", d) | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| cabal-version: 3.4 | cabal-version: 3.4 | ||||||
| 
 | 
 | ||||||
| name:           yore | name:           yore | ||||||
| version:        0.0.1 | version:        0.0.9 | ||||||
| author:         Paul Brinkmeier | author:         Paul Brinkmeier | ||||||
| maintainer:     hallo@pbrinkmeier.de | maintainer:     hallo@pbrinkmeier.de | ||||||
| copyright:      2023 Paul Brinkmeier | copyright:      2023 Paul Brinkmeier | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user