secubox-openwrt/package/secubox/secubox-app-streamlit-forge/Makefile
CyberMind-FR e17c73e343 feat(nfo): Add Module Manifest system with batch generation
Introduce flat-file UCI-style NFO manifest format for Streamlit apps
and MetaBlog sites. Enables AI context integration, search indexing,
and mesh publishing metadata.

New features:
- NFO parser library with parse/validate/update/export functions
- NFO validator with type-specific schema validation (streamlit/metablog)
- Batch generation: slforge nfo init-all, metablogizerctl nfo init-all
- RPCD methods: nfo_read, nfo_write, nfo_validate
- Reusable LuCI NFO viewer component with collapsible sections
- LuCI editor modal in Streamlit Forge overview
- Hub generator enhanced with NFO metadata (descriptions, capabilities)
- Metacatalog search with --category and --capability filters

New files:
- nfo-parser.sh, nfo-validator.sh (shell libraries)
- nfo-viewer.js (LuCI component)
- NFO-SPEC.md (specification)
- install.sh (universal NFO-based installer)
- nfo-template.nfo (templates for streamlit/metablog)

Deployed and tested: 136 NFO files generated (107 MetaBlogs, 29 Streamlit)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-14 08:51:09 +01:00

64 lines
2.1 KiB
Makefile

include $(TOPDIR)/rules.mk
PKG_NAME:=secubox-app-streamlit-forge
PKG_VERSION:=1.0.0
PKG_RELEASE:=1
include $(INCLUDE_DIR)/package.mk
define Package/secubox-app-streamlit-forge
SECTION:=secubox
CATEGORY:=SecuBox
SUBMENU:=Apps
TITLE:=Streamlit Forge - App Publishing Platform
DEPENDS:=+jsonfilter
PKGARCH:=all
endef
define Package/secubox-app-streamlit-forge/description
Streamlit Forge is a comprehensive platform for creating, managing,
and publishing Streamlit applications. Features include Gitea source
management, preview generation, UCI configuration sync, and mesh
appstore publishing.
endef
define Package/secubox-app-streamlit-forge/conffiles
/etc/config/streamlit-forge
endef
define Build/Compile
endef
define Package/secubox-app-streamlit-forge/install
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_CONF) ./files/etc/config/streamlit-forge $(1)/etc/config/
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/etc/init.d/streamlit-forge $(1)/etc/init.d/
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) ./files/usr/sbin/slforge $(1)/usr/sbin/
$(INSTALL_DIR) $(1)/usr/share/streamlit-forge/templates
$(CP) ./files/usr/share/streamlit-forge/templates/* $(1)/usr/share/streamlit-forge/templates/ 2>/dev/null || true
# NFO module manifest system
$(INSTALL_DIR) $(1)/usr/share/streamlit-forge/lib
$(INSTALL_DATA) ./files/usr/share/streamlit-forge/lib/nfo-parser.sh $(1)/usr/share/streamlit-forge/lib/
$(INSTALL_DATA) ./files/usr/share/streamlit-forge/lib/nfo-validator.sh $(1)/usr/share/streamlit-forge/lib/
$(INSTALL_DATA) ./files/usr/share/streamlit-forge/nfo-template.nfo $(1)/usr/share/streamlit-forge/
$(INSTALL_BIN) ./files/usr/share/streamlit-forge/install.sh $(1)/usr/share/streamlit-forge/
$(INSTALL_DATA) ./files/usr/share/streamlit-forge/NFO-SPEC.md $(1)/usr/share/streamlit-forge/
endef
define Package/secubox-app-streamlit-forge/postinst
#!/bin/sh
[ -n "$${IPKG_INSTROOT}" ] || {
mkdir -p /srv/streamlit/{apps,previews,templates}
echo "Streamlit Forge installed. Run 'slforge help' for usage."
}
exit 0
endef
$(eval $(call BuildPackage,secubox-app-streamlit-forge))