bash-script-maker 1.4.5__tar.gz → 1.5.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. {bash-script-maker-1.4.5/bash_script_maker.egg-info → bash-script-maker-1.5.0}/PKG-INFO +1 -37
  2. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/README.md +0 -36
  3. bash-script-maker-1.5.0/VERSION +1 -0
  4. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/__version__.py +2 -2
  5. bash-script-maker-1.5.0/assets/bash-script-maker-128.png +0 -0
  6. bash-script-maker-1.5.0/assets/bash-script-maker-32.png +0 -0
  7. bash-script-maker-1.5.0/assets/bash-script-maker-48.png +0 -0
  8. bash-script-maker-1.5.0/assets/bash-script-maker-64.png +0 -0
  9. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/bash-script-maker.desktop +4 -3
  10. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0/bash_script_maker.egg-info}/PKG-INFO +1 -37
  11. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/bash_script_maker.egg-info/SOURCES.txt +4 -3
  12. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/bash_script_maker.egg-info/requires.txt +1 -0
  13. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/bash_script_maker.py +63 -0
  14. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/create_release.sh +0 -1
  15. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/install.sh +19 -2
  16. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/install_apt.sh +19 -2
  17. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/install_desktop_integration.sh +16 -3
  18. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/install_dnf.sh +19 -2
  19. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/pyproject.toml +2 -1
  20. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/requirements.txt +1 -0
  21. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/uninstall.sh +0 -6
  22. bash-script-maker-1.4.5/VERSION +0 -1
  23. bash-script-maker-1.4.5/bash_script_maker_flatpak.py +0 -289
  24. bash-script-maker-1.4.5/build_flatpak.sh +0 -169
  25. bash-script-maker-1.4.5/install_flatpak.sh +0 -211
  26. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/LICENSE +0 -0
  27. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/MANIFEST.in +0 -0
  28. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/assets/bash-script-maker-16.png +0 -0
  29. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/assets/bash-script-maker.svg +0 -0
  30. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/assets.py +0 -0
  31. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/bash_script_maker.egg-info/dependency_links.txt +0 -0
  32. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/bash_script_maker.egg-info/entry_points.txt +0 -0
  33. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/bash_script_maker.egg-info/not-zip-safe +0 -0
  34. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/bash_script_maker.egg-info/top_level.txt +0 -0
  35. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/beispiel_script.sh +0 -0
  36. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/compile_translations.py +0 -0
  37. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/custom_dialogs.py +0 -0
  38. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/dev-requirements.txt +0 -0
  39. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/init_github.sh +0 -0
  40. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/locales/de/LC_MESSAGES/base.po +0 -0
  41. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/locales/en/LC_MESSAGES/base.po +0 -0
  42. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/localization.py +0 -0
  43. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/mein_script.sh +0 -0
  44. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/packages.txt +0 -0
  45. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/setup.cfg +0 -0
  46. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/setup.py +0 -0
  47. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/setup_flatpak.py +0 -0
  48. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/start.sh +0 -0
  49. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/syntax_highlighter.py +0 -0
  50. {bash-script-maker-1.4.5 → bash-script-maker-1.5.0}/test_installation.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: bash-script-maker
3
- Version: 1.4.5
3
+ Version: 1.5.0
4
4
  Summary: Ein GUI-Programm zur Erstellung von Bash-Scripts mit visueller Unterstützung
5
5
  Home-page: https://github.com/securebitsorg/bash-script-maker
6
6
  Author: Marcel Dellmann
@@ -97,33 +97,6 @@ Ein benutzerfreundliches GUI-Programm zur Erstellung von Bash-Scripts mit visuel
97
97
  - Zenity (für Dialog-Funktionen)
98
98
  - Linux-Distribution mit apt, dnf, pacman oder ähnlichem Paketmanager
99
99
 
100
- ### Flatpak-Installation (Empfohlen)
101
-
102
- **Flatpak ist die modernste und sicherste Installationsmethode:**
103
-
104
- ```bash
105
- # Flatpak installieren (falls noch nicht vorhanden)
106
- sudo dnf install flatpak # Fedora/RHEL
107
- sudo apt install flatpak # Ubuntu/Debian
108
- sudo pacman -S flatpak # Arch Linux
109
-
110
- # Flathub-Repository hinzufügen
111
- flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
112
-
113
- # App installieren (wenn verfügbar)
114
- flatpak install flathub org.securebits.bashscriptmaker
115
-
116
- # App starten
117
- flatpak run org.securebits.bashscriptmaker
118
- ```
119
-
120
- **Vorteile von Flatpak:**
121
- - ✅ Vollständig sandboxed und sicher
122
- - ✅ Automatische Updates
123
- - ✅ Keine System-Abhängigkeiten
124
- - ✅ Funktioniert auf allen Linux-Distributionen
125
- - ✅ Desktop-Integration inklusive
126
-
127
100
  ### Automatische Installation mit Desktop-Integration
128
101
 
129
102
  **Empfohlene Methode (automatische Erkennung):**
@@ -147,15 +120,6 @@ Für Fedora/RHEL/CentOS-basierte Systeme:
147
120
  ./install_dnf.sh
148
121
  ```
149
122
 
150
- ### Flatpak-Paket selbst erstellen
151
-
152
- ```bash
153
- # Flatpak-Paket lokal erstellen
154
- ./build_flatpak.sh
155
-
156
- # Erstelltes Paket installieren
157
- flatpak install build/flatpak/bash-script-maker.flatpak
158
- ```
159
123
 
160
124
  ### Nur Desktop-Integration installieren
161
125
 
@@ -64,33 +64,6 @@ Ein benutzerfreundliches GUI-Programm zur Erstellung von Bash-Scripts mit visuel
64
64
  - Zenity (für Dialog-Funktionen)
65
65
  - Linux-Distribution mit apt, dnf, pacman oder ähnlichem Paketmanager
66
66
 
67
- ### Flatpak-Installation (Empfohlen)
68
-
69
- **Flatpak ist die modernste und sicherste Installationsmethode:**
70
-
71
- ```bash
72
- # Flatpak installieren (falls noch nicht vorhanden)
73
- sudo dnf install flatpak # Fedora/RHEL
74
- sudo apt install flatpak # Ubuntu/Debian
75
- sudo pacman -S flatpak # Arch Linux
76
-
77
- # Flathub-Repository hinzufügen
78
- flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
79
-
80
- # App installieren (wenn verfügbar)
81
- flatpak install flathub org.securebits.bashscriptmaker
82
-
83
- # App starten
84
- flatpak run org.securebits.bashscriptmaker
85
- ```
86
-
87
- **Vorteile von Flatpak:**
88
- - ✅ Vollständig sandboxed und sicher
89
- - ✅ Automatische Updates
90
- - ✅ Keine System-Abhängigkeiten
91
- - ✅ Funktioniert auf allen Linux-Distributionen
92
- - ✅ Desktop-Integration inklusive
93
-
94
67
  ### Automatische Installation mit Desktop-Integration
95
68
 
96
69
  **Empfohlene Methode (automatische Erkennung):**
@@ -114,15 +87,6 @@ Für Fedora/RHEL/CentOS-basierte Systeme:
114
87
  ./install_dnf.sh
115
88
  ```
116
89
 
117
- ### Flatpak-Paket selbst erstellen
118
-
119
- ```bash
120
- # Flatpak-Paket lokal erstellen
121
- ./build_flatpak.sh
122
-
123
- # Erstelltes Paket installieren
124
- flatpak install build/flatpak/bash-script-maker.flatpak
125
- ```
126
90
 
127
91
  ### Nur Desktop-Integration installieren
128
92
 
@@ -0,0 +1 @@
1
+ 1.5.0
@@ -4,5 +4,5 @@
4
4
  Version information for Bash-Script-Maker
5
5
  """
6
6
 
7
- __version__ = "1.4.5"
8
- __version_info__ = (1, 4, 5)
7
+ __version__ = "1.5.0"
8
+ __version_info__ = (1, 5, 0)
@@ -2,9 +2,10 @@
2
2
  Name=Bash-Script-Maker
3
3
  Comment=Ein GUI-Programm zur Erstellung von Bash-Scripts
4
4
  Exec=bash-script-maker
5
- Icon=bash-script-maker
5
+ Icon=bash-script-maker.svg
6
6
  Terminal=false
7
7
  Type=Application
8
- Categories=Development;Utility;
9
- Keywords=bash;script;editor;generator;
8
+ Categories=Development;Utility;TextEditor;
9
+ Keywords=bash;script;editor;generator;development;
10
10
  StartupWMClass=bash-script-maker
11
+ MimeType=text/x-shellscript;application/x-shellscript;
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: bash-script-maker
3
- Version: 1.4.5
3
+ Version: 1.5.0
4
4
  Summary: Ein GUI-Programm zur Erstellung von Bash-Scripts mit visueller Unterstützung
5
5
  Home-page: https://github.com/securebitsorg/bash-script-maker
6
6
  Author: Marcel Dellmann
@@ -97,33 +97,6 @@ Ein benutzerfreundliches GUI-Programm zur Erstellung von Bash-Scripts mit visuel
97
97
  - Zenity (für Dialog-Funktionen)
98
98
  - Linux-Distribution mit apt, dnf, pacman oder ähnlichem Paketmanager
99
99
 
100
- ### Flatpak-Installation (Empfohlen)
101
-
102
- **Flatpak ist die modernste und sicherste Installationsmethode:**
103
-
104
- ```bash
105
- # Flatpak installieren (falls noch nicht vorhanden)
106
- sudo dnf install flatpak # Fedora/RHEL
107
- sudo apt install flatpak # Ubuntu/Debian
108
- sudo pacman -S flatpak # Arch Linux
109
-
110
- # Flathub-Repository hinzufügen
111
- flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
112
-
113
- # App installieren (wenn verfügbar)
114
- flatpak install flathub org.securebits.bashscriptmaker
115
-
116
- # App starten
117
- flatpak run org.securebits.bashscriptmaker
118
- ```
119
-
120
- **Vorteile von Flatpak:**
121
- - ✅ Vollständig sandboxed und sicher
122
- - ✅ Automatische Updates
123
- - ✅ Keine System-Abhängigkeiten
124
- - ✅ Funktioniert auf allen Linux-Distributionen
125
- - ✅ Desktop-Integration inklusive
126
-
127
100
  ### Automatische Installation mit Desktop-Integration
128
101
 
129
102
  **Empfohlene Methode (automatische Erkennung):**
@@ -147,15 +120,6 @@ Für Fedora/RHEL/CentOS-basierte Systeme:
147
120
  ./install_dnf.sh
148
121
  ```
149
122
 
150
- ### Flatpak-Paket selbst erstellen
151
-
152
- ```bash
153
- # Flatpak-Paket lokal erstellen
154
- ./build_flatpak.sh
155
-
156
- # Erstelltes Paket installieren
157
- flatpak install build/flatpak/bash-script-maker.flatpak
158
- ```
159
123
 
160
124
  ### Nur Desktop-Integration installieren
161
125
 
@@ -6,9 +6,7 @@ __version__.py
6
6
  assets.py
7
7
  bash-script-maker.desktop
8
8
  bash_script_maker.py
9
- bash_script_maker_flatpak.py
10
9
  beispiel_script.sh
11
- build_flatpak.sh
12
10
  compile_translations.py
13
11
  create_release.sh
14
12
  custom_dialogs.py
@@ -18,7 +16,6 @@ install.sh
18
16
  install_apt.sh
19
17
  install_desktop_integration.sh
20
18
  install_dnf.sh
21
- install_flatpak.sh
22
19
  localization.py
23
20
  mein_script.sh
24
21
  packages.txt
@@ -30,7 +27,11 @@ start.sh
30
27
  syntax_highlighter.py
31
28
  test_installation.sh
32
29
  uninstall.sh
30
+ assets/bash-script-maker-128.png
33
31
  assets/bash-script-maker-16.png
32
+ assets/bash-script-maker-32.png
33
+ assets/bash-script-maker-48.png
34
+ assets/bash-script-maker-64.png
34
35
  assets/bash-script-maker.svg
35
36
  bash_script_maker.egg-info/PKG-INFO
36
37
  bash_script_maker.egg-info/SOURCES.txt
@@ -1,5 +1,6 @@
1
1
  ttkbootstrap>=1.10.1
2
2
  pygments>=2.15.1
3
+ Pillow>=9.0.0
3
4
 
4
5
  [dev]
5
6
  pytest>=6.0.0
@@ -236,6 +236,9 @@ class BashScriptMaker:
236
236
  self.root = root
237
237
  self.root.title("Bash-Script-Maker")
238
238
  self.root.geometry("1200x800")
239
+
240
+ # Icon setzen
241
+ self.set_window_icon()
239
242
 
240
243
  # Variablen für den letzten Pfad
241
244
  self.last_path = os.path.expanduser("~")
@@ -257,6 +260,66 @@ class BashScriptMaker:
257
260
  + "\n\n"
258
261
  )
259
262
 
263
+ def set_window_icon(self):
264
+ """Setzt das Fenster-Icon für Titelleiste und Taskleiste"""
265
+ try:
266
+ # Pfad zum Icon ermitteln
267
+ script_dir = os.path.dirname(os.path.abspath(__file__))
268
+
269
+ # Icon-Größen die wir haben
270
+ icon_sizes = [16, 32, 48, 64, 128]
271
+ icon_files = []
272
+
273
+ # Verfügbare Icon-Dateien sammeln
274
+ for size in icon_sizes:
275
+ icon_path = os.path.join(script_dir, "assets", f"bash-script-maker-{size}.png")
276
+ if os.path.exists(icon_path):
277
+ icon_files.append(icon_path)
278
+
279
+ # Fallback auf 16px Icon
280
+ if not icon_files:
281
+ fallback_path = os.path.join(script_dir, "assets", "bash-script-maker-16.png")
282
+ if os.path.exists(fallback_path):
283
+ icon_files.append(fallback_path)
284
+
285
+ if icon_files:
286
+ # PNG-Icons verwenden
287
+ try:
288
+ from PIL import Image, ImageTk
289
+ # Alle verfügbaren Icon-Größen laden
290
+ icons = []
291
+
292
+ for icon_path in icon_files:
293
+ img = Image.open(icon_path)
294
+ photo = ImageTk.PhotoImage(img)
295
+ icons.append(photo)
296
+
297
+ # Haupticon setzen (alle Größen)
298
+ self.root.iconphoto(True, *icons)
299
+ print(f"Icons gesetzt: {len(icons)} Größen")
300
+
301
+ except ImportError:
302
+ # Fallback ohne PIL - verwende größtes verfügbares Icon
303
+ try:
304
+ # Größtes Icon zuerst versuchen
305
+ best_icon = icon_files[-1] # Letztes in der Liste (größtes)
306
+ icon = tk.PhotoImage(file=best_icon)
307
+ self.root.iconphoto(True, icon)
308
+ print(f"Icon gesetzt (ohne PIL): {best_icon}")
309
+ except tk.TclError as e:
310
+ print(f"Fehler beim Laden des PNG-Icons: {e}")
311
+
312
+ else:
313
+ # Kein PNG gefunden, prüfe SVG
314
+ svg_icon_path = os.path.join(script_dir, "assets", "bash-script-maker.svg")
315
+ if os.path.exists(svg_icon_path):
316
+ print(f"SVG-Icon gefunden, aber PNG wird für Tkinter bevorzugt: {svg_icon_path}")
317
+ else:
318
+ print("Keine Icon-Datei gefunden in assets/")
319
+
320
+ except Exception as e:
321
+ print(f"Fehler beim Setzen des Icons: {e}")
322
+
260
323
  def create_menu(self):
261
324
  """Erstellt das Menü der Anwendung"""
262
325
  menubar = tk.Menu(self.root)
@@ -128,7 +128,6 @@ print_success "Release v$NEW_VERSION erfolgreich erstellt!"
128
128
  print_status "GitHub Actions wird automatisch:"
129
129
  print_status " - GitHub Release erstellen"
130
130
  print_status " - Python-Pakete bauen"
131
- print_status " - Flatpak-Paket erstellen"
132
131
  print_status " - Auf PyPI veröffentlichen (falls konfiguriert)"
133
132
  print_status ""
134
133
  print_status "Überprüfen Sie den Fortschritt unter:"
@@ -295,10 +295,27 @@ if main_installation; then
295
295
  mkdir -p ~/.local/share/applications
296
296
  mkdir -p ~/.local/share/icons/hicolor/scalable/apps
297
297
 
298
- # Kopiere Desktop-Datei und Icon
299
- cp bash-script-maker.desktop ~/.local/share/applications/
298
+ # Kopiere Icon
300
299
  cp assets/bash-script-maker.svg ~/.local/share/icons/hicolor/scalable/apps/
301
300
 
301
+ # Erstelle Desktop-Datei mit korrekten absoluten Pfaden
302
+ cat > ~/.local/share/applications/bash-script-maker.desktop << EOF
303
+ [Desktop Entry]
304
+ Name=Bash-Script-Maker
305
+ Comment=Ein GUI-Programm zur Erstellung von Bash-Scripts
306
+ Exec=$HOME/.local/bin/bash-script-maker
307
+ Icon=$HOME/.local/share/icons/hicolor/scalable/apps/bash-script-maker.svg
308
+ Terminal=false
309
+ Type=Application
310
+ Categories=Development;Utility;TextEditor;
311
+ Keywords=bash;script;editor;generator;development;
312
+ StartupWMClass=bash-script-maker
313
+ MimeType=text/x-shellscript;application/x-shellscript;
314
+ EOF
315
+
316
+ # Berechtigungen setzen
317
+ chmod +x ~/.local/share/applications/bash-script-maker.desktop
318
+
302
319
  # Desktop-Datenbank aktualisieren
303
320
  if command -v update-desktop-database &> /dev/null; then
304
321
  update-desktop-database ~/.local/share/applications
@@ -161,10 +161,27 @@ if [ -f "bash-script-maker.desktop" ] && [ -f "assets/bash-script-maker.svg" ];
161
161
  mkdir -p ~/.local/share/applications
162
162
  mkdir -p ~/.local/share/icons/hicolor/scalable/apps
163
163
 
164
- # Kopiere Desktop-Datei und Icon
165
- cp bash-script-maker.desktop ~/.local/share/applications/
164
+ # Kopiere Icon
166
165
  cp assets/bash-script-maker.svg ~/.local/share/icons/hicolor/scalable/apps/
167
166
 
167
+ # Erstelle Desktop-Datei mit korrekten absoluten Pfaden
168
+ cat > ~/.local/share/applications/bash-script-maker.desktop << EOF
169
+ [Desktop Entry]
170
+ Name=Bash-Script-Maker
171
+ Comment=Ein GUI-Programm zur Erstellung von Bash-Scripts
172
+ Exec=$HOME/.local/bin/bash-script-maker
173
+ Icon=$HOME/.local/share/icons/hicolor/scalable/apps/bash-script-maker.svg
174
+ Terminal=false
175
+ Type=Application
176
+ Categories=Development;Utility;TextEditor;
177
+ Keywords=bash;script;editor;generator;development;
178
+ StartupWMClass=bash-script-maker
179
+ MimeType=text/x-shellscript;application/x-shellscript;
180
+ EOF
181
+
182
+ # Berechtigungen setzen
183
+ chmod +x ~/.local/share/applications/bash-script-maker.desktop
184
+
168
185
  # Desktop-Datenbank aktualisieren
169
186
  if command -v update-desktop-database &> /dev/null; then
170
187
  update-desktop-database ~/.local/share/applications
@@ -42,12 +42,25 @@ print_status "Erstelle Verzeichnisse..."
42
42
  mkdir -p ~/.local/share/applications
43
43
  mkdir -p ~/.local/share/icons/hicolor/scalable/apps
44
44
 
45
- # Kopiere Desktop-Datei
45
+ # Erstelle Desktop-Datei mit korrekten absoluten Pfaden
46
46
  print_status "Installiere Desktop-Datei..."
47
- if cp bash-script-maker.desktop ~/.local/share/applications/; then
47
+ if cat > ~/.local/share/applications/bash-script-maker.desktop << EOF
48
+ [Desktop Entry]
49
+ Name=Bash-Script-Maker
50
+ Comment=Ein GUI-Programm zur Erstellung von Bash-Scripts
51
+ Exec=$HOME/.local/bin/bash-script-maker
52
+ Icon=$HOME/.local/share/icons/hicolor/scalable/apps/bash-script-maker.svg
53
+ Terminal=false
54
+ Type=Application
55
+ Categories=Development;Utility;TextEditor;
56
+ Keywords=bash;script;editor;generator;development;
57
+ StartupWMClass=bash-script-maker
58
+ MimeType=text/x-shellscript;application/x-shellscript;
59
+ EOF
60
+ then
48
61
  print_success "Desktop-Datei installiert: ~/.local/share/applications/bash-script-maker.desktop"
49
62
  else
50
- print_error "Fehler beim Kopieren der Desktop-Datei!"
63
+ print_error "Fehler beim Erstellen der Desktop-Datei!"
51
64
  exit 1
52
65
  fi
53
66
 
@@ -154,10 +154,27 @@ if [ -f "bash-script-maker.desktop" ] && [ -f "assets/bash-script-maker.svg" ];
154
154
  mkdir -p ~/.local/share/applications
155
155
  mkdir -p ~/.local/share/icons/hicolor/scalable/apps
156
156
 
157
- # Kopiere Desktop-Datei und Icon
158
- cp bash-script-maker.desktop ~/.local/share/applications/
157
+ # Kopiere Icon
159
158
  cp assets/bash-script-maker.svg ~/.local/share/icons/hicolor/scalable/apps/
160
159
 
160
+ # Erstelle Desktop-Datei mit korrekten absoluten Pfaden
161
+ cat > ~/.local/share/applications/bash-script-maker.desktop << EOF
162
+ [Desktop Entry]
163
+ Name=Bash-Script-Maker
164
+ Comment=Ein GUI-Programm zur Erstellung von Bash-Scripts
165
+ Exec=$HOME/.local/bin/bash-script-maker
166
+ Icon=$HOME/.local/share/icons/hicolor/scalable/apps/bash-script-maker.svg
167
+ Terminal=false
168
+ Type=Application
169
+ Categories=Development;Utility;TextEditor;
170
+ Keywords=bash;script;editor;generator;development;
171
+ StartupWMClass=bash-script-maker
172
+ MimeType=text/x-shellscript;application/x-shellscript;
173
+ EOF
174
+
175
+ # Berechtigungen setzen
176
+ chmod +x ~/.local/share/applications/bash-script-maker.desktop
177
+
161
178
  # Desktop-Datenbank aktualisieren
162
179
  if command -v update-desktop-database &> /dev/null; then
163
180
  update-desktop-database ~/.local/share/applications
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "bash-script-maker"
7
- version = "1.4.5"
7
+ version = "1.5.0"
8
8
  description = "Ein GUI-Programm zur Erstellung von Bash-Scripts mit visueller Unterstützung"
9
9
  readme = "README.md"
10
10
  license = {text = "MIT"}
@@ -34,6 +34,7 @@ requires-python = ">=3.8"
34
34
  dependencies = [
35
35
  "ttkbootstrap>=1.10.1",
36
36
  "pygments>=2.15.1",
37
+ "Pillow>=9.0.0",
37
38
  ]
38
39
 
39
40
  [project.optional-dependencies]
@@ -1,3 +1,4 @@
1
1
  # Core runtime dependencies
2
2
  ttkbootstrap>=1.10.1
3
3
  pygments>=2.15.1
4
+ Pillow>=9.0.0
@@ -101,12 +101,6 @@ if [[ $USER_ONLY -eq 0 ]] && need_sudo; then
101
101
  sudo rm -f "$ICON_SYS1" "$ICON_SYS2" 2>/dev/null || true
102
102
  fi
103
103
 
104
- if command -v flatpak >/dev/null 2>&1; then
105
- if flatpak list --app | grep -q '^org\.securebits\.bashscriptmaker'; then
106
- log "Entferne Flatpak-App org.securebits.bashscriptmaker…"
107
- flatpak uninstall -y org.securebits.bashscriptmaker >/dev/null 2>&1 || true
108
- fi
109
- fi
110
104
 
111
105
  if [[ $KEEP_CONFIG -eq 0 ]]; then
112
106
  log "Entferne Konfigurations-/Cache-Verzeichnisse…"
@@ -1 +0,0 @@
1
- 1.4.5
@@ -1,289 +0,0 @@
1
- #!/usr/bin/env python3
2
- # -*- coding: utf-8 -*-
3
- """
4
- Bash-Script-Maker - Vereinfachte Flatpak-Version
5
- Ein benutzerfreundliches GUI-Programm zur Erstellung von Bash-Scripts
6
- """
7
-
8
- import tkinter as tk
9
- from tkinter import ttk, messagebox, filedialog, scrolledtext
10
- import os
11
- import subprocess
12
- import sys
13
- import threading
14
-
15
- class BashScriptMaker:
16
- def __init__(self, root):
17
- self.root = root
18
- self.root.title("Bash Script Maker") # Korrigierter Titel
19
- self.root.geometry("1000x700")
20
-
21
- # Set window class for proper desktop integration
22
- self.root.wm_class("Bash-Script-Maker", "Bash-Script-Maker")
23
-
24
- # Variables
25
- self.current_file = None
26
-
27
- # Create GUI
28
- self.create_widgets()
29
-
30
- def create_widgets(self):
31
- # Menu
32
- menubar = tk.Menu(self.root)
33
- self.root.config(menu=menubar)
34
-
35
- file_menu = tk.Menu(menubar, tearoff=0)
36
- menubar.add_cascade(label="Datei", menu=file_menu)
37
- file_menu.add_command(label="Neu", command=self.new_file)
38
- file_menu.add_command(label="Öffnen", command=self.open_file)
39
- file_menu.add_command(label="Speichern", command=self.save_file)
40
- file_menu.add_command(label="Speichern unter...", command=self.save_as_file)
41
- file_menu.add_separator()
42
- file_menu.add_command(label="Beenden", command=self.root.quit)
43
-
44
- run_menu = tk.Menu(menubar, tearoff=0)
45
- menubar.add_cascade(label="Ausführen", menu=run_menu)
46
- run_menu.add_command(label="Script ausführen", command=self.run_script)
47
-
48
- # Main frame
49
- main_frame = ttk.Frame(self.root)
50
- main_frame.pack(fill=tk.BOTH, expand=True, padx=10, pady=10)
51
-
52
- # Left panel - Commands
53
- left_frame = ttk.LabelFrame(main_frame, text="Befehle")
54
- left_frame.pack(side=tk.LEFT, fill=tk.Y, padx=(0, 10))
55
-
56
- # Command buttons
57
- commands = [
58
- ("Shebang", self.insert_shebang),
59
- ("Echo", self.insert_echo),
60
- ("Variable", self.insert_variable),
61
- ("If-Statement", self.insert_if),
62
- ("For-Loop", self.insert_for),
63
- ("While-Loop", self.insert_while),
64
- ("Function", self.insert_function),
65
- ("Kommentar", self.insert_comment),
66
- ]
67
-
68
- for cmd_name, cmd_func in commands:
69
- btn = ttk.Button(left_frame, text=cmd_name, command=cmd_func, width=15)
70
- btn.pack(pady=2, padx=5, fill=tk.X)
71
-
72
- # Right panel - Editor
73
- right_frame = ttk.Frame(main_frame)
74
- right_frame.pack(side=tk.RIGHT, fill=tk.BOTH, expand=True)
75
-
76
- # Editor
77
- self.text_editor = scrolledtext.ScrolledText(
78
- right_frame,
79
- wrap=tk.NONE,
80
- font=("Monaco", 11) if sys.platform == "darwin" else ("Consolas", 11),
81
- bg="#1e1e1e",
82
- fg="#d4d4d4",
83
- insertbackground="#ffffff",
84
- selectbackground="#264f78",
85
- relief=tk.FLAT,
86
- borderwidth=1
87
- )
88
- self.text_editor.pack(fill=tk.BOTH, expand=True)
89
-
90
- # Add basic syntax highlighting
91
- self.setup_syntax_highlighting()
92
-
93
- # Status bar
94
- self.status_bar = ttk.Label(self.root, text="Bereit | Flatpak-Version", relief=tk.SUNKEN, anchor=tk.W)
95
- self.status_bar.pack(side=tk.BOTTOM, fill=tk.X, padx=10, pady=(0, 10))
96
-
97
- def setup_syntax_highlighting(self):
98
- """Setup basic syntax highlighting for bash scripts"""
99
- # Define colors for syntax highlighting
100
- self.text_editor.tag_config("comment", foreground="#6a9955", font=("Consolas", 11, "italic"))
101
- self.text_editor.tag_config("keyword", foreground="#569cd6", font=("Consolas", 11, "bold"))
102
- self.text_editor.tag_config("string", foreground="#ce9178")
103
- self.text_editor.tag_config("variable", foreground="#9cdcfe")
104
- self.text_editor.tag_config("operator", foreground="#d4d4d4")
105
-
106
- # Bind text change event for live highlighting
107
- self.text_editor.bind("<KeyRelease>", self.on_text_change)
108
-
109
- def on_text_change(self, event=None):
110
- """Apply basic syntax highlighting on text change"""
111
- import re
112
- content = self.text_editor.get("1.0", tk.END)
113
-
114
- # Clear existing tags
115
- for tag in ["comment", "keyword", "string", "variable"]:
116
- self.text_editor.tag_delete(tag)
117
-
118
- # Highlight comments
119
- for match in re.finditer(r'#.*', content):
120
- start_line = content[:match.start()].count('\n') + 1
121
- start_col = match.start() - content.rfind('\n', 0, match.start()) - 1
122
- end_line = content[:match.end()].count('\n') + 1
123
- end_col = match.end() - content.rfind('\n', 0, match.end()) - 1
124
- self.text_editor.tag_add("comment", f"{start_line}.{start_col}", f"{end_line}.{end_col}")
125
-
126
- # Highlight bash keywords
127
- keywords = r'\b(if|then|else|elif|fi|for|while|do|done|case|esac|function|return|exit|break|continue|echo|read|export|local)\b'
128
- for match in re.finditer(keywords, content):
129
- start_line = content[:match.start()].count('\n') + 1
130
- start_col = match.start() - content.rfind('\n', 0, match.start()) - 1
131
- end_line = content[:match.end()].count('\n') + 1
132
- end_col = match.end() - content.rfind('\n', 0, match.end()) - 1
133
- self.text_editor.tag_add("keyword", f"{start_line}.{start_col}", f"{end_line}.{end_col}")
134
-
135
- # Highlight strings
136
- for match in re.finditer(r'"[^"]*"', content):
137
- start_line = content[:match.start()].count('\n') + 1
138
- start_col = match.start() - content.rfind('\n', 0, match.start()) - 1
139
- end_line = content[:match.end()].count('\n') + 1
140
- end_col = match.end() - content.rfind('\n', 0, match.end()) - 1
141
- self.text_editor.tag_add("string", f"{start_line}.{start_col}", f"{end_line}.{end_col}")
142
-
143
- # Highlight variables
144
- for match in re.finditer(r'\$\w+|\$\{[^}]+\}', content):
145
- start_line = content[:match.start()].count('\n') + 1
146
- start_col = match.start() - content.rfind('\n', 0, match.start()) - 1
147
- end_line = content[:match.end()].count('\n') + 1
148
- end_col = match.end() - content.rfind('\n', 0, match.end()) - 1
149
- self.text_editor.tag_add("variable", f"{start_line}.{start_col}", f"{end_line}.{end_col}")
150
-
151
- def insert_shebang(self):
152
- self.text_editor.insert(tk.INSERT, "#!/bin/bash\n")
153
-
154
- def insert_echo(self):
155
- self.text_editor.insert(tk.INSERT, 'echo "Hello World"\n')
156
-
157
- def insert_variable(self):
158
- self.text_editor.insert(tk.INSERT, 'VARIABLE="value"\necho "$VARIABLE"\n')
159
-
160
- def insert_if(self):
161
- template = '''if [ condition ]; then
162
- # commands
163
- elif [ condition ]; then
164
- # commands
165
- else
166
- # commands
167
- fi
168
- '''
169
- self.text_editor.insert(tk.INSERT, template)
170
-
171
- def insert_for(self):
172
- template = '''for item in list; do
173
- echo "$item"
174
- done
175
- '''
176
- self.text_editor.insert(tk.INSERT, template)
177
-
178
- def insert_while(self):
179
- template = '''while [ condition ]; do
180
- # commands
181
- done
182
- '''
183
- self.text_editor.insert(tk.INSERT, template)
184
-
185
- def insert_function(self):
186
- template = '''function_name() {
187
- # commands
188
- return 0
189
- }
190
- '''
191
- self.text_editor.insert(tk.INSERT, template)
192
-
193
- def insert_comment(self):
194
- self.text_editor.insert(tk.INSERT, "# Kommentar\n")
195
-
196
- def new_file(self):
197
- if messagebox.askyesno("Neu", "Aktuelles Script verwerfen?"):
198
- self.text_editor.delete(1.0, tk.END)
199
- self.current_file = None
200
- self.update_title()
201
-
202
- def open_file(self):
203
- filename = filedialog.askopenfilename(
204
- title="Script öffnen",
205
- filetypes=[("Bash Scripts", "*.sh"), ("Alle Dateien", "*.*")]
206
- )
207
- if filename:
208
- try:
209
- with open(filename, 'r', encoding='utf-8') as f:
210
- content = f.read()
211
- self.text_editor.delete(1.0, tk.END)
212
- self.text_editor.insert(1.0, content)
213
- self.current_file = filename
214
- self.update_title()
215
- except Exception as e:
216
- messagebox.showerror("Fehler", f"Datei konnte nicht geöffnet werden: {e}")
217
-
218
- def save_file(self):
219
- if self.current_file:
220
- self.save_to_file(self.current_file)
221
- else:
222
- self.save_as_file()
223
-
224
- def save_as_file(self):
225
- filename = filedialog.asksaveasfilename(
226
- title="Script speichern",
227
- defaultextension=".sh",
228
- filetypes=[("Bash Scripts", "*.sh"), ("Alle Dateien", "*.*")]
229
- )
230
- if filename:
231
- self.save_to_file(filename)
232
- self.current_file = filename
233
- self.update_title()
234
-
235
- def save_to_file(self, filename):
236
- try:
237
- content = self.text_editor.get(1.0, tk.END)
238
- with open(filename, 'w', encoding='utf-8') as f:
239
- f.write(content)
240
- # Make executable
241
- os.chmod(filename, 0o755)
242
- self.status_bar.config(text=f"Gespeichert: {filename}")
243
- except Exception as e:
244
- messagebox.showerror("Fehler", f"Datei konnte nicht gespeichert werden: {e}")
245
-
246
- def run_script(self):
247
- if not self.current_file:
248
- if messagebox.askyesno("Speichern", "Script muss erst gespeichert werden. Jetzt speichern?"):
249
- self.save_as_file()
250
- if not self.current_file:
251
- return
252
- else:
253
- return
254
-
255
- def run_in_thread():
256
- try:
257
- result = subprocess.run(
258
- ["bash", self.current_file],
259
- capture_output=True,
260
- text=True,
261
- timeout=30
262
- )
263
-
264
- output = result.stdout + result.stderr
265
- if output:
266
- messagebox.showinfo("Script-Ausgabe", output)
267
- else:
268
- messagebox.showinfo("Script-Ausgabe", "Script erfolgreich ausgeführt (keine Ausgabe)")
269
-
270
- except subprocess.TimeoutExpired:
271
- messagebox.showerror("Fehler", "Script-Ausführung abgebrochen (Timeout)")
272
- except Exception as e:
273
- messagebox.showerror("Fehler", f"Script-Ausführung fehlgeschlagen: {e}")
274
-
275
- threading.Thread(target=run_in_thread, daemon=True).start()
276
-
277
- def update_title(self):
278
- title = "Bash-Script-Maker"
279
- if self.current_file:
280
- title += f" - {os.path.basename(self.current_file)}"
281
- self.root.title(title)
282
-
283
- def main():
284
- root = tk.Tk()
285
- app = BashScriptMaker(root)
286
- root.mainloop()
287
-
288
- if __name__ == "__main__":
289
- main()
@@ -1,169 +0,0 @@
1
- #!/bin/bash
2
- # Build-Script für Flatpak-Paket von Bash-Script-Maker
3
-
4
- echo "=== Bash-Script-Maker - Flatpak Build ==="
5
- echo "Dieses Script erstellt ein Flatpak-Paket für Bash-Script-Maker."
6
- echo ""
7
-
8
- # Farbcodes für bessere Lesbarkeit
9
- RED='\033[0;31m'
10
- GREEN='\033[0;32m'
11
- YELLOW='\033[1;33m'
12
- BLUE='\033[0;34m'
13
- NC='\033[0m' # No Color
14
-
15
- # Funktion für farbige Ausgabe
16
- print_status() {
17
- echo -e "${BLUE}[INFO]${NC} $1"
18
- }
19
-
20
- print_success() {
21
- echo -e "${GREEN}[SUCCESS]${NC} $1"
22
- }
23
-
24
- print_warning() {
25
- echo -e "${YELLOW}[WARNING]${NC} $1"
26
- }
27
-
28
- print_error() {
29
- echo -e "${RED}[ERROR]${NC} $1"
30
- }
31
-
32
- # Überprüfe, ob Flatpak installiert ist
33
- if ! command -v flatpak &> /dev/null; then
34
- print_error "Flatpak ist nicht installiert!"
35
- print_status "Installieren Sie Flatpak mit:"
36
- print_status " sudo dnf install flatpak # Fedora/RHEL"
37
- print_status " sudo apt install flatpak # Ubuntu/Debian"
38
- print_status " sudo pacman -S flatpak # Arch Linux"
39
- exit 1
40
- fi
41
-
42
- # Überprüfe, ob flatpak-builder installiert ist
43
- if ! command -v flatpak-builder &> /dev/null; then
44
- print_error "flatpak-builder ist nicht installiert!"
45
- print_status "Installieren Sie flatpak-builder mit:"
46
- print_status " sudo dnf install flatpak-builder # Fedora/RHEL"
47
- print_status " sudo apt install flatpak-builder # Ubuntu/Debian"
48
- print_status " sudo pacman -S flatpak-builder # Arch Linux"
49
- exit 1
50
- fi
51
-
52
- # Überprüfe, ob die Flatpak-Runtime installiert ist
53
- print_status "Überprüfe Flatpak-Runtime..."
54
- if ! flatpak list | grep -q "org.freedesktop.Platform.*23.08"; then
55
- print_status "Installiere Flatpak-Runtime..."
56
- flatpak install -y flathub org.freedesktop.Platform//23.08
57
- flatpak install -y flathub org.freedesktop.Sdk//23.08
58
- fi
59
-
60
- # Erstelle Build-Verzeichnis
61
- print_status "Erstelle Build-Verzeichnis..."
62
- mkdir -p build/flatpak
63
-
64
- # Kopiere Manifest und AppData
65
- print_status "Kopiere Flatpak-Dateien..."
66
- cp flatpak/org.securebits.bashscriptmaker.simple.yml build/flatpak/org.securebits.bashscriptmaker.yml
67
- cp flatpak/org.securebits.bashscriptmaker.appdata.xml build/flatpak/
68
-
69
- # Erstelle Desktop-Datei für Flatpak
70
- print_status "Erstelle Desktop-Datei für Flatpak..."
71
- cat > build/flatpak/org.securebits.bashscriptmaker.desktop << 'EOF'
72
- [Desktop Entry]
73
- Name=Bash-Script-Maker
74
- Comment=Ein GUI-Programm zur Erstellung von Bash-Scripts
75
- Exec=bash-script-maker
76
- Icon=org.securebits.bashscriptmaker
77
- Terminal=false
78
- Type=Application
79
- Categories=Development;Utility;
80
- Keywords=bash;script;editor;generator;
81
- StartupWMClass=bash-script-maker
82
- EOF
83
-
84
- # Kopiere Icon
85
- print_status "Kopiere Icon..."
86
- mkdir -p build/flatpak/icons/hicolor/scalable/apps
87
- cp assets/bash-script-maker.svg build/flatpak/icons/hicolor/scalable/apps/org.securebits.bashscriptmaker.svg
88
-
89
- # Erstelle requirements.txt für Flatpak
90
- print_status "Erstelle requirements.txt für Flatpak..."
91
- cat > build/flatpak/requirements.txt << 'EOF'
92
- ttkbootstrap>=1.10.1
93
- pygments>=2.15.1
94
- EOF
95
-
96
- # Erstelle setup.py für Flatpak
97
- print_status "Erstelle setup.py für Flatpak..."
98
- cat > build/flatpak/setup.py << 'EOF'
99
- #!/usr/bin/env python3
100
- from setuptools import setup
101
-
102
- setup(
103
- name="bash-script-maker",
104
- version="1.2.1",
105
- py_modules=["bash_script_maker", "syntax_highlighter", "localization", "custom_dialogs", "assets"],
106
- entry_points={
107
- "console_scripts": [
108
- "bash-script-maker=bash_script_maker:main",
109
- ],
110
- },
111
- install_requires=[
112
- "ttkbootstrap>=1.10.1",
113
- "pygments>=2.15.1",
114
- ],
115
- )
116
- EOF
117
-
118
- # Kopiere Python-Module
119
- print_status "Kopiere Python-Module..."
120
- cp bash_script_maker.py build/flatpak/
121
- cp syntax_highlighter.py build/flatpak/
122
- cp localization.py build/flatpak/
123
- cp custom_dialogs.py build/flatpak/
124
- cp assets.py build/flatpak/
125
-
126
- # Erstelle Flatpak-Paket
127
- print_status "Erstelle Flatpak-Paket..."
128
- cd build/flatpak
129
-
130
- # Verwende das einfache Manifest mit systemweiter Flatpak-Installation
131
- if sudo flatpak-builder --repo=repo --force-clean build org.securebits.bashscriptmaker.yml; then
132
- print_success "Flatpak-Paket erfolgreich erstellt!"
133
-
134
- # Erstelle Bundle
135
- print_status "Erstelle Flatpak-Bundle..."
136
- if flatpak build-bundle repo bash-script-maker.flatpak org.securebits.bashscriptmaker; then
137
- print_success "Flatpak-Bundle erstellt: bash-script-maker.flatpak"
138
- print_status "Installation mit: flatpak install bash-script-maker.flatpak"
139
- else
140
- print_error "Fehler beim Erstellen des Flatpak-Bundles"
141
- exit 1
142
- fi
143
- else
144
- print_error "Fehler beim Erstellen des Flatpak-Pakets"
145
- print_status "Versuche mit dem einfachen Manifest..."
146
-
147
- # Fallback auf das einfache Manifest
148
- if sudo flatpak-builder --repo=repo --force-clean build org.securebits.bashscriptmaker.yml; then
149
- print_success "Flatpak-Paket mit einfachem Manifest erfolgreich erstellt!"
150
-
151
- if flatpak build-bundle repo bash-script-maker.flatpak org.securebits.bashscriptmaker; then
152
- print_success "Flatpak-Bundle erstellt: bash-script-maker.flatpak"
153
- else
154
- print_error "Fehler beim Erstellen des Flatpak-Bundles"
155
- exit 1
156
- fi
157
- else
158
- print_error "Fehler beim Erstellen des Flatpak-Pakets mit beiden Manifesten"
159
- exit 1
160
- fi
161
- fi
162
-
163
- cd ../..
164
-
165
- echo ""
166
- print_success "=== FLATPAK-BUILD ABGESCHLOSSEN ==="
167
- print_status "Flatpak-Bundle: build/flatpak/bash-script-maker.flatpak"
168
- print_status "Installation: flatpak install build/flatpak/bash-script-maker.flatpak"
169
- print_status "Starten: flatpak run org.securebits.bashscriptmaker"
@@ -1,211 +0,0 @@
1
- #!/bin/bash
2
- # Flatpak-Installation für Bash-Script-Maker
3
-
4
- echo "=== Bash-Script-Maker - Flatpak Installation ==="
5
- echo "Dieses Script installiert Bash-Script-Maker als Flatpak-Paket."
6
- echo ""
7
-
8
- # Farbcodes für bessere Lesbarkeit
9
- RED='\033[0;31m'
10
- GREEN='\033[0;32m'
11
- YELLOW='\033[1;33m'
12
- BLUE='\033[0;34m'
13
- NC='\033[0m' # No Color
14
-
15
- # Funktion für farbige Ausgabe
16
- print_status() {
17
- echo -e "${BLUE}[INFO]${NC} $1"
18
- }
19
-
20
- print_success() {
21
- echo -e "${GREEN}[SUCCESS]${NC} $1"
22
- }
23
-
24
- print_warning() {
25
- echo -e "${YELLOW}[WARNING]${NC} $1"
26
- }
27
-
28
- print_error() {
29
- echo -e "${RED}[ERROR]${NC} $1"
30
- }
31
-
32
- # Überprüfe, ob Flatpak installiert ist
33
- if ! command -v flatpak &> /dev/null; then
34
- print_error "Flatpak ist nicht installiert!"
35
- print_status "Installieren Sie Flatpak mit:"
36
-
37
- if command -v dnf &> /dev/null; then
38
- print_status " sudo dnf install flatpak"
39
- elif command -v apt &> /dev/null; then
40
- print_status " sudo apt install flatpak"
41
- elif command -v pacman &> /dev/null; then
42
- print_status " sudo pacman -S flatpak"
43
- elif command -v zypper &> /dev/null; then
44
- print_status " sudo zypper install flatpak"
45
- else
46
- print_status " Installieren Sie Flatpak über Ihren Paketmanager"
47
- fi
48
-
49
- exit 1
50
- fi
51
-
52
- # Überprüfe, ob flatpak-builder installiert ist
53
- if ! command -v flatpak-builder &> /dev/null; then
54
- print_error "flatpak-builder ist nicht installiert!"
55
- print_status "Installieren Sie flatpak-builder mit:"
56
-
57
- if command -v dnf &> /dev/null; then
58
- print_status " sudo dnf install flatpak-builder"
59
- elif command -v apt &> /dev/null; then
60
- print_status " sudo apt install flatpak-builder"
61
- elif command -v pacman &> /dev/null; then
62
- print_status " sudo pacman -S flatpak-builder"
63
- elif command -v zypper &> /dev/null; then
64
- print_status " sudo zypper install flatpak-builder"
65
- else
66
- print_status " Installieren Sie flatpak-builder über Ihren Paketmanager"
67
- fi
68
-
69
- exit 1
70
- fi
71
-
72
- # Überprüfe, ob Flathub-Repository hinzugefügt ist
73
- if ! flatpak remote-list | grep -q flathub; then
74
- print_status "Füge Flathub-Repository hinzu..."
75
- if flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo; then
76
- print_success "Flathub-Repository hinzugefügt"
77
- else
78
- print_error "Fehler beim Hinzufügen des Flathub-Repositories"
79
- exit 1
80
- fi
81
- fi
82
-
83
- # Installiere Flatpak-Runtime
84
- print_status "Installiere Flatpak-Runtime..."
85
- if ! flatpak list | grep -q "org.freedesktop.Platform.*23.08"; then
86
- if flatpak install -y flathub org.freedesktop.Platform//23.08; then
87
- print_success "Flatpak-Runtime installiert"
88
- else
89
- print_error "Fehler beim Installieren der Flatpak-Runtime"
90
- exit 1
91
- fi
92
- else
93
- print_success "Flatpak-Runtime bereits installiert"
94
- fi
95
-
96
- if ! flatpak list | grep -q "org.freedesktop.Sdk.*23.08"; then
97
- if flatpak install -y flathub org.freedesktop.Sdk//23.08; then
98
- print_success "Flatpak-SDK installiert"
99
- else
100
- print_error "Fehler beim Installieren des Flatpak-SDK"
101
- exit 1
102
- fi
103
- else
104
- print_success "Flatpak-SDK bereits installiert"
105
- fi
106
-
107
- # Erstelle Build-Verzeichnis
108
- print_status "Erstelle Build-Verzeichnis..."
109
- mkdir -p build/flatpak
110
-
111
- # Kopiere Manifest und AppData
112
- print_status "Kopiere Flatpak-Dateien..."
113
- cp flatpak/org.securebits.bashscriptmaker.simple.yml build/flatpak/org.securebits.bashscriptmaker.yml
114
- cp flatpak/org.securebits.bashscriptmaker.appdata.xml build/flatpak/
115
-
116
- # Erstelle Desktop-Datei für Flatpak
117
- print_status "Erstelle Desktop-Datei für Flatpak..."
118
- cat > build/flatpak/org.securebits.bashscriptmaker.desktop << 'EOF'
119
- [Desktop Entry]
120
- Name=Bash-Script-Maker
121
- Comment=Ein GUI-Programm zur Erstellung von Bash-Scripts
122
- Exec=bash-script-maker
123
- Icon=org.securebits.bashscriptmaker
124
- Terminal=false
125
- Type=Application
126
- Categories=Development;Utility;
127
- Keywords=bash;script;editor;generator;
128
- StartupWMClass=bash-script-maker
129
- EOF
130
-
131
- # Kopiere Icon
132
- print_status "Kopiere Icon..."
133
- mkdir -p build/flatpak/icons/hicolor/scalable/apps
134
- cp assets/bash-script-maker.svg build/flatpak/icons/hicolor/scalable/apps/org.securebits.bashscriptmaker.svg
135
-
136
- # Erstelle requirements.txt für Flatpak
137
- print_status "Erstelle requirements.txt für Flatpak..."
138
- cat > build/flatpak/requirements.txt << 'EOF'
139
- ttkbootstrap>=1.10.1
140
- pygments>=2.15.1
141
- EOF
142
-
143
- # Erstelle setup.py für Flatpak
144
- print_status "Erstelle setup.py für Flatpak..."
145
- cat > build/flatpak/setup.py << 'EOF'
146
- #!/usr/bin/env python3
147
- from setuptools import setup
148
-
149
- setup(
150
- name="bash-script-maker",
151
- version="1.2.1",
152
- py_modules=["bash_script_maker", "syntax_highlighter", "localization", "custom_dialogs", "assets"],
153
- entry_points={
154
- "console_scripts": [
155
- "bash-script-maker=bash_script_maker:main",
156
- ],
157
- },
158
- install_requires=[
159
- "ttkbootstrap>=1.10.1",
160
- "pygments>=2.15.1",
161
- ],
162
- )
163
- EOF
164
-
165
- # Kopiere Python-Module
166
- print_status "Kopiere Python-Module..."
167
- cp bash_script_maker.py build/flatpak/
168
- cp syntax_highlighter.py build/flatpak/
169
- cp localization.py build/flatpak/
170
- cp custom_dialogs.py build/flatpak/
171
- cp assets.py build/flatpak/
172
-
173
- # Erstelle Flatpak-Paket
174
- print_status "Erstelle Flatpak-Paket..."
175
- cd build/flatpak
176
-
177
- if flatpak-builder --repo=repo --force-clean build org.securebits.bashscriptmaker.yml; then
178
- print_success "Flatpak-Paket erfolgreich erstellt!"
179
-
180
- # Erstelle Bundle
181
- print_status "Erstelle Flatpak-Bundle..."
182
- if flatpak build-bundle repo bash-script-maker.flatpak org.securebits.bashscriptmaker; then
183
- print_success "Flatpak-Bundle erstellt: bash-script-maker.flatpak"
184
-
185
- # Installiere das Paket
186
- print_status "Installiere Flatpak-Paket..."
187
- if flatpak install --user bash-script-maker.flatpak; then
188
- print_success "Flatpak-Paket erfolgreich installiert!"
189
- print_status "Sie können die App jetzt starten mit:"
190
- print_status " flatpak run org.securebits.bashscriptmaker"
191
- print_status "Oder über das Anwendungsmenü suchen Sie nach 'Bash-Script-Maker'"
192
- else
193
- print_error "Fehler beim Installieren des Flatpak-Pakets"
194
- exit 1
195
- fi
196
- else
197
- print_error "Fehler beim Erstellen des Flatpak-Bundles"
198
- exit 1
199
- fi
200
- else
201
- print_error "Fehler beim Erstellen des Flatpak-Pakets"
202
- exit 1
203
- fi
204
-
205
- cd ../..
206
-
207
- echo ""
208
- print_success "=== FLATPAK-INSTALLATION ABGESCHLOSSEN ==="
209
- print_status "Die App ist jetzt als Flatpak-Paket installiert!"
210
- print_status "Starten: flatpak run org.securebits.bashscriptmaker"
211
- print_status "Deinstallieren: flatpak uninstall org.securebits.bashscriptmaker"