Add version info from git tags
This commit is contained in:
		
							
								
								
									
										3
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								Makefile
									
									
									
									
									
								
							@@ -1,5 +1,3 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
shell: 
 | 
			
		||||
	MYPYPATH=`pipenv --venv`/lib/python3.11/site-packages pipenv shell
 | 
			
		||||
 | 
			
		||||
@@ -18,6 +16,7 @@ requirements.txt: Pipfile.lock
 | 
			
		||||
build: clean requirements.txt
 | 
			
		||||
	python3 -m pip install -r requirements.txt --target build
 | 
			
		||||
	cp -r mail4one/ build/
 | 
			
		||||
	sed -i "s/DEVELOMENT/$(shell scripts/get_version.sh)/" build/mail4one/version.py
 | 
			
		||||
	python3 -m compileall build/mail4one -f
 | 
			
		||||
	rm -rf build/*.dist-info
 | 
			
		||||
	python3 -m zipapp \
 | 
			
		||||
 
 | 
			
		||||
@@ -9,6 +9,7 @@ from getpass import getpass
 | 
			
		||||
 | 
			
		||||
from .smtp import create_smtp_server_starttls, create_smtp_server
 | 
			
		||||
from .pop3 import create_pop_server
 | 
			
		||||
from .version import VERSION
 | 
			
		||||
 | 
			
		||||
from . import config
 | 
			
		||||
from . import pwhash
 | 
			
		||||
@@ -25,15 +26,17 @@ def setup_logging(cfg: config.LogCfg):
 | 
			
		||||
    if cfg.logfile == "STDOUT":
 | 
			
		||||
        logging.basicConfig(level=cfg.level, format=logging_format)
 | 
			
		||||
    else:
 | 
			
		||||
        logging.basicConfig(filename=cfg.logfile, level=cfg.level, format=logging_format)
 | 
			
		||||
 | 
			
		||||
        logging.basicConfig(filename=cfg.logfile,
 | 
			
		||||
                            level=cfg.level,
 | 
			
		||||
                            format=logging_format)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
async def a_main(cfg: config.Config) -> None:
 | 
			
		||||
    default_tls_context: ssl.SSLContext | None = None
 | 
			
		||||
 | 
			
		||||
    if tls := cfg.default_tls:
 | 
			
		||||
        logging.info(f"Initializing default tls {tls.certfile=}, {tls.keyfile=}")
 | 
			
		||||
        logging.info(
 | 
			
		||||
            f"Initializing default tls {tls.certfile=}, {tls.keyfile=}")
 | 
			
		||||
        default_tls_context = create_tls_context(tls.certfile, tls.keyfile)
 | 
			
		||||
 | 
			
		||||
    def get_tls_context(tls: config.TLSCfg | str):
 | 
			
		||||
@@ -102,6 +105,7 @@ def main() -> None:
 | 
			
		||||
        description="Personal Mail Server",
 | 
			
		||||
        epilog="See https://gitea.balki.me/balki/mail4one for more info",
 | 
			
		||||
    )
 | 
			
		||||
    parser.add_argument("-v", "--version", action="version", version=VERSION)
 | 
			
		||||
    parser.add_argument(
 | 
			
		||||
        "-e",
 | 
			
		||||
        "--echo_password",
 | 
			
		||||
@@ -150,7 +154,7 @@ def main() -> None:
 | 
			
		||||
    else:
 | 
			
		||||
        cfg = config.Config(args.config.read_text())
 | 
			
		||||
        setup_logging(config.LogCfg(cfg.logging))
 | 
			
		||||
        logging.info(f"Starting mail4one {args.config=!s}")
 | 
			
		||||
        logging.info(f"Starting mail4one {VERSION} {args.config=!s}")
 | 
			
		||||
        asyncio.run(a_main(cfg))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								mail4one/version.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								mail4one/version.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,2 @@
 | 
			
		||||
 | 
			
		||||
VERSION = "DEVELOMENT"
 | 
			
		||||
							
								
								
									
										30
									
								
								scripts/get_version.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										30
									
								
								scripts/get_version.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,30 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
 | 
			
		||||
commit=$(git rev-parse --short HEAD)
 | 
			
		||||
 | 
			
		||||
# This is true if there is a tag on current HEAD
 | 
			
		||||
if git describe --exact-match > /dev/null 2>&1
 | 
			
		||||
then
 | 
			
		||||
		tag_val=$(git describe --dirty=DIRTY --exact-match)
 | 
			
		||||
		case "$tag_val" in 
 | 
			
		||||
				*DIRTY)
 | 
			
		||||
						echo "git=$commit-changes"
 | 
			
		||||
						exit
 | 
			
		||||
						;;
 | 
			
		||||
				v*) # Only consider tags starting with v
 | 
			
		||||
						echo "$tag_val"
 | 
			
		||||
						;;
 | 
			
		||||
				*)
 | 
			
		||||
						echo "git-$commit"
 | 
			
		||||
		esac
 | 
			
		||||
else
 | 
			
		||||
		tag_val=$(git describe --dirty=DIRTY)
 | 
			
		||||
		case "$tag_val" in 
 | 
			
		||||
				*DIRTY)
 | 
			
		||||
						echo "git-$commit-changes"
 | 
			
		||||
						;;
 | 
			
		||||
				*)
 | 
			
		||||
						echo "git-$commit"
 | 
			
		||||
		esac
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user