From 35838687719e9bc886dd1b93ed8c1c5472479af9 Mon Sep 17 00:00:00 2001 From: mahlon Date: Thu, 15 Jun 2023 17:58:22 +0000 Subject: [PATCH] Add nimble file and some makefile tasks. FossilOrigin-Name: c4a4dfdf10b5d1e7136eea1f078ba67798a134c69436d7f9679ba93c04c9671a --- LICENSE | 28 +++++++++++++++++++++++++ Makefile | 13 +++++++++--- sieb.nim | 59 ---------------------------------------------------- sieb.nimble | 14 +++++++++++++ src/sieb.nim | 31 +++++++++++++++++++++++++++ 5 files changed, 83 insertions(+), 62 deletions(-) create mode 100644 LICENSE delete mode 100644 sieb.nim create mode 100644 sieb.nimble create mode 100644 src/sieb.nim diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..8d45be4 --- /dev/null +++ b/LICENSE @@ -0,0 +1,28 @@ + +Copyright (c) 2023, Mahlon E. Smith +All rights reserved. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + * Neither the name of Mahlon E. Smith nor the names of his + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + diff --git a/Makefile b/Makefile index 9d9c0e2..fb251b5 100644 --- a/Makefile +++ b/Makefile @@ -1,11 +1,14 @@ -FILES = sieb.nim +FILES = src/sieb.nim default: release autobuild: find . -type f -iname \*.nim | entr -c make development +dependencies: + nimble install --depsOnly + development: ${FILES} # can use gdb with this... nim --debugInfo --assertions:on --linedir:on -d:testing -d:nimTypeNames --nimcache:.cache c ${FILES} @@ -13,13 +16,17 @@ development: ${FILES} debugger: ${FILES} nim --debugger:on --nimcache:.cache c ${FILES} -release: ${FILES} +release:dependencies ${FILES} nim -d:release -d:nimDebugDlOpen --opt:speed --parallelBuild:0 --nimcache:.cache c ${FILES} + mv src/sieb . docs: nim doc ${FILES} #nim buildIndex ${FILES} clean: - fossil clean -f + fossil clean --dotfiles -f -v + +clobber: + fossil clean -x -v diff --git a/sieb.nim b/sieb.nim deleted file mode 100644 index c9176ba..0000000 --- a/sieb.nim +++ /dev/null @@ -1,59 +0,0 @@ -# vim: set et nosta sw=4 ts=4 : -# -# Copyright (c) 2023, Mahlon E. Smith -# All rights reserved. -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# * Neither the name of Mahlon E. Smith nor the names of his -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY -# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY -# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -import - std/streams, - yaml/serialization - -const - VERSION = "v0.1.0" - -type - rule = object - headers: seq[ tuple[ header: string, regexp: string ] ] - deliver {.defaultVal: "Maildir"}: string - filter {.defaultVal: ""}: string - - # Typed configuration file layout for YAML loading. - Config = object - logfile {.defaultVal: "".}: string - pre_filter {.defaultVal: @[]}: seq[string] - post_filter {.defaultVal: @[]}: seq[string] - rules {.defaultVal: @[]}: seq[rule] - - -var conf: Config - -let s = newFileStream( "config.yml" ) -load( s, conf ) -s.close - -echo conf - diff --git a/sieb.nimble b/sieb.nimble new file mode 100644 index 0000000..c5ac1e2 --- /dev/null +++ b/sieb.nimble @@ -0,0 +1,14 @@ +# Package + +version = "0.1.0" +author = "Mahlon E. Smith" +description = "Fast and simple local mail filter." +license = "MIT" +srcDir = "src" +bin = @["sieb"] + + +# Dependencies +requires "nim >= 1.5.0" +requires "yaml >= 1.1" + diff --git a/src/sieb.nim b/src/sieb.nim new file mode 100644 index 0000000..5eab23f --- /dev/null +++ b/src/sieb.nim @@ -0,0 +1,31 @@ +# vim: set et nosta sw=4 ts=4 : + +import + std/streams, + yaml/serialization + +const + VERSION = "v0.1.0" + +type + rule = object + headers: seq[ tuple[ header: string, regexp: string ] ] + deliver {.defaultVal: "Maildir"}: string + filter {.defaultVal: ""}: string + + # Typed configuration file layout for YAML loading. + Config = object + logfile {.defaultVal: "".}: string + pre_filter {.defaultVal: @[]}: seq[string] + post_filter {.defaultVal: @[]}: seq[string] + rules {.defaultVal: @[]}: seq[rule] + + +var conf: Config + +let s = newFileStream( "config.yml" ) +load( s, conf ) +s.close + +echo conf +