1+ #! /bin/bash
2+
3+ # Build DEB package for MarkAPI
4+ # Usage: ./build-deb.sh [version]
5+
6+ VERSION=${1:- 1.0.0}
7+ PACKAGE_NAME=" markapi"
8+ ARCH=" amd64"
9+ MAINTAINER=" SciELO Team <dev@scielo.org>"
10+
11+ echo " Building DEB package: ${PACKAGE_NAME} _${VERSION} _${ARCH} .deb"
12+
13+ # Create package structure
14+ PKG_DIR=" dist/${PACKAGE_NAME} _${VERSION} _${ARCH} "
15+ rm -rf " $PKG_DIR "
16+ mkdir -p " $PKG_DIR " /{DEBIAN,usr/bin,usr/share/markapi,etc/markapi,usr/share/applications,usr/share/pixmaps}
17+
18+ # DEBIAN control file
19+ cat > " $PKG_DIR /DEBIAN/control" << EOF
20+ Package: $PACKAGE_NAME
21+ Version: $VERSION
22+ Section: science
23+ Priority: optional
24+ Architecture: $ARCH
25+ Depends: git
26+ Recommends: docker.io (>= 20.0) | docker-ce | docker-ce-cli, docker-compose (>= 1.25)
27+ Suggests: docker-buildx-plugin
28+ Maintainer: $MAINTAINER
29+ Description: SciELO XML Processor
30+ MarkAPI é uma ferramenta para validação, processamento e conversão
31+ de documentos XML no contexto de publicações científicas SciELO.
32+ .
33+ Funcionalidades:
34+ - Validação de XML contra esquemas
35+ - Conversão para HTML, DOCX e PDF
36+ - Interface web intuitiva
37+ - API REST para integração
38+ .
39+ Requer Docker para funcionar (pode ser docker.io, docker-ce ou Docker Desktop).
40+ Homepage: https://github.com/scieloorg/markapi
41+ EOF
42+
43+ # Post-installation script
44+ cat > " $PKG_DIR /DEBIAN/postinst" << 'EOF '
45+ #!/bin/bash
46+ set -e
47+
48+ # Add user to docker group if exists
49+ if id -u markapi &>/dev/null; then
50+ usermod -aG docker markapi 2>/dev/null || true
51+ fi
52+
53+ # Add current user to docker group
54+ if [ "$SUDO_USER" ]; then
55+ usermod -aG docker "$SUDO_USER" 2>/dev/null || true
56+ fi
57+
58+ # Enable and start docker
59+ systemctl enable docker 2>/dev/null || true
60+ systemctl start docker 2>/dev/null || true
61+
62+ # Create application directories
63+ mkdir -p /var/lib/markapi/{uploads,logs,backups}
64+ chown -R root:docker /var/lib/markapi 2>/dev/null || true
65+ chmod -R 775 /var/lib/markapi 2>/dev/null || true
66+
67+ echo ""
68+ echo "MarkAPI instalado com sucesso!"
69+ echo ""
70+ echo "Para iniciar:"
71+ echo " markapi start"
72+ echo ""
73+ echo "Acesse: http://localhost:8000"
74+ echo "Documentação: https://github.com/scieloorg/markapi"
75+ echo ""
76+
77+ # Note about docker group
78+ if [ "$SUDO_USER" ]; then
79+ echo "IMPORTANTE: Faça logout e login novamente para usar o comando 'markapi'"
80+ echo "Ou execute: sudo -u $SUDO_USER markapi start"
81+ fi
82+ EOF
83+
84+ # Pre-removal script
85+ cat > " $PKG_DIR /DEBIAN/prerm" << 'EOF '
86+ #!/bin/bash
87+ set -e
88+
89+ # Stop markapi if running
90+ if command -v markapi &> /dev/null; then
91+ markapi stop 2>/dev/null || true
92+ fi
93+ EOF
94+
95+ # Post-removal script
96+ cat > " $PKG_DIR /DEBIAN/postrm" << 'EOF '
97+ #!/bin/bash
98+ set -e
99+
100+ case "$1" in
101+ purge)
102+ # Remove application data
103+ rm -rf /var/lib/markapi 2>/dev/null || true
104+
105+ # Remove docker volumes (optional)
106+ docker volume prune -f 2>/dev/null || true
107+ ;;
108+ esac
109+ EOF
110+
111+ # Make scripts executable
112+ chmod 755 " $PKG_DIR /DEBIAN/postinst"
113+ chmod 755 " $PKG_DIR /DEBIAN/prerm"
114+ chmod 755 " $PKG_DIR /DEBIAN/postrm"
115+
116+ # Copy application files
117+ cp ../universal/markapi " $PKG_DIR /usr/bin/"
118+ chmod 755 " $PKG_DIR /usr/bin/markapi"
119+
120+ # Copy application data
121+ cp -r ../universal/* " $PKG_DIR /usr/share/markapi/"
122+ chmod 755 " $PKG_DIR /usr/share/markapi/markapi"
123+
124+ # Create configuration
125+ cp ../universal/.env.example " $PKG_DIR /etc/markapi/markapi.conf"
126+
127+ # Create desktop file
128+ cat > " $PKG_DIR /usr/share/applications/markapi.desktop" << EOF
129+ [Desktop Entry]
130+ Name=MarkAPI
131+ Comment=SciELO XML Processor
132+ Exec=markapi start
133+ Icon=markapi
134+ Terminal=false
135+ Type=Application
136+ Categories=Office;Science;Development;
137+ Keywords=xml;scielo;publishing;
138+ EOF
139+
140+ # Create icon (placeholder)
141+ cat > " $PKG_DIR /usr/share/pixmaps/markapi.xpm" << 'EOF '
142+ /* XPM */
143+ static char * markapi_xpm[] = {
144+ "32 32 3 1",
145+ " c None",
146+ ". c #0066CC",
147+ "+ c #FFFFFF",
148+ " ",
149+ " ........................ ",
150+ " .......................... ",
151+ " ............................ ",
152+ " ..+++++++++++++++++++++++++++.. ",
153+ " .+ +. ",
154+ " .+ MarkAPI +. ",
155+ " .+ +. ",
156+ " .+ SciELO XML +. ",
157+ " .+ Processor +. ",
158+ " .+ +. ",
159+ " .+ +. ",
160+ " .+ +. ",
161+ " .+ +. ",
162+ " .+ +. ",
163+ " .+ +. ",
164+ " .+ +. ",
165+ " .+ +. ",
166+ " .+ +. ",
167+ " .+ +. ",
168+ " .+ +. ",
169+ " .+ +. ",
170+ " .+ +. ",
171+ " .+ +. ",
172+ " .+ +. ",
173+ " .+ +. ",
174+ " .+ +. ",
175+ " .+ +. ",
176+ " .+ +. ",
177+ " ..+++++++++++++++++++++++++++.. ",
178+ " ............................ ",
179+ " .......................... ",
180+ " ........................ ",
181+ " "};
182+ EOF
183+
184+ # Build package
185+ dpkg-deb --build " $PKG_DIR "
186+
187+ echo " Package created: ${PKG_DIR} .deb"
188+ echo " "
189+ echo " To install:"
190+ echo " sudo dpkg -i ${PKG_DIR} .deb"
191+ echo " sudo apt-get install -f"
192+ echo " "
0 commit comments