diff --git a/lang/python/python-platformdirs/Makefile b/lang/python/python-platformdirs/Makefile new file mode 100644 index 0000000000..620377ebe8 --- /dev/null +++ b/lang/python/python-platformdirs/Makefile @@ -0,0 +1,47 @@ +# +# Copyright (C) 2023 Jeffery To +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=python-platformdirs +PKG_VERSION:=4.0.0 +PKG_RELEASE:=1 + +PYPI_NAME:=platformdirs +PKG_HASH:=cb633b2bcf10c51af60beb0ab06d2f1d69064b43abf4c185ca6b28865f3f9731 + +PKG_LICENSE:=MIT +PKG_LICENSE_FILES:=LICENSE +PKG_MAINTAINER:=Jeffery To + +PKG_BUILD_DEPENDS:=python-hatchling/host python-hatch-vcs/host + +include ../pypi.mk +include $(INCLUDE_DIR)/package.mk +include ../python3-package.mk + +define Package/python3-platformdirs + SECTION:=lang + CATEGORY:=Languages + SUBMENU:=Python + TITLE:=Determine appropriate platform-specific dirs + URL:=https://github.com/platformdirs/platformdirs + DEPENDS:=+python3-light +python3-urllib +endef + +define Package/python3-platformdirs/description +When writing desktop application, finding the right location to store +user data and configuration varies per platform. Even for +single-platform apps, there may by plenty of nuances in figuring out the +right location. + +This kind of thing is what the platformdirs package is for. +endef + +$(eval $(call Py3Package,python3-platformdirs)) +$(eval $(call BuildPackage,python3-platformdirs)) +$(eval $(call BuildPackage,python3-platformdirs-src)) diff --git a/lang/python/python-platformdirs/test.sh b/lang/python/python-platformdirs/test.sh new file mode 100644 index 0000000000..40dabb2fb5 --- /dev/null +++ b/lang/python/python-platformdirs/test.sh @@ -0,0 +1,33 @@ +#!/bin/sh + +[ "$1" = python3-platformdirs ] || exit 0 + +python3 - << 'EOF' + +from platformdirs import * +appname = "SuperApp" +appauthor = "Acme" + +assert user_data_dir(appname, appauthor) == '/root/.local/share/SuperApp' +assert user_cache_dir(appname, appauthor) == '/root/.cache/SuperApp' +assert user_log_dir(appname, appauthor) == '/root/.local/state/SuperApp/log' +assert user_config_dir(appname) == '/root/.config/SuperApp' +assert user_documents_dir() == '/root/Documents' +assert user_downloads_dir() == '/root/Downloads' +assert user_pictures_dir() == '/root/Pictures' +assert user_videos_dir() == '/root/Videos' +assert user_music_dir() == '/root/Music' +assert user_desktop_dir() == '/root/Desktop' +assert user_runtime_dir(appname, appauthor) == '/run/user/0/SuperApp' + +assert site_data_dir(appname, appauthor) == '/usr/local/share/SuperApp' +assert site_data_dir(appname, appauthor, multipath=True) == '/usr/local/share/SuperApp:/usr/share/SuperApp' + +assert site_config_dir(appname) == '/etc/xdg/SuperApp' + +import os +os.environ["XDG_CONFIG_DIRS"] = "/etc:/usr/local/etc" + +assert site_config_dir(appname, multipath=True) == '/etc/SuperApp:/usr/local/etc/SuperApp' + +EOF