flutter-dev 0.1.2__tar.gz → 0.1.5__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 (41) hide show
  1. flutter_dev-0.1.5/CHANGELOG.md +68 -0
  2. {flutter_dev-0.1.2 → flutter_dev-0.1.5}/PKG-INFO +27 -3
  3. {flutter_dev-0.1.2 → flutter_dev-0.1.5}/README.md +25 -2
  4. {flutter_dev-0.1.2 → flutter_dev-0.1.5}/fdev.py +26 -5
  5. {flutter_dev-0.1.2 → flutter_dev-0.1.5}/flutter_dev.egg-info/SOURCES.txt +6 -1
  6. {flutter_dev-0.1.2 → flutter_dev-0.1.5}/managers/build.py +1 -1
  7. flutter_dev-0.1.5/managers/gui.py +531 -0
  8. flutter_dev-0.1.5/managers/localization.py +293 -0
  9. {flutter_dev-0.1.2 → flutter_dev-0.1.5}/pyproject.toml +3 -2
  10. flutter_dev-0.1.5/tests/test_fdev_cli.py +43 -0
  11. flutter_dev-0.1.5/tests/test_gui.py +145 -0
  12. flutter_dev-0.1.5/tests/test_localization.py +93 -0
  13. flutter_dev-0.1.2/CHANGELOG.md +0 -36
  14. {flutter_dev-0.1.2 → flutter_dev-0.1.5}/.env.example +0 -0
  15. {flutter_dev-0.1.2 → flutter_dev-0.1.5}/LICENSE +0 -0
  16. {flutter_dev-0.1.2 → flutter_dev-0.1.5}/MANIFEST.in +0 -0
  17. {flutter_dev-0.1.2 → flutter_dev-0.1.5}/common_utils.py +0 -0
  18. {flutter_dev-0.1.2 → flutter_dev-0.1.5}/core/__init__.py +0 -0
  19. {flutter_dev-0.1.2 → flutter_dev-0.1.5}/core/constants.py +0 -0
  20. {flutter_dev-0.1.2 → flutter_dev-0.1.5}/core/state.py +0 -0
  21. {flutter_dev-0.1.2 → flutter_dev-0.1.5}/create_page.py +0 -0
  22. {flutter_dev-0.1.2 → flutter_dev-0.1.5}/gemini_api.py +0 -0
  23. {flutter_dev-0.1.2 → flutter_dev-0.1.5}/git_diff_output_editor.py +0 -0
  24. {flutter_dev-0.1.2 → flutter_dev-0.1.5}/install_legacy.py +0 -0
  25. {flutter_dev-0.1.2 → flutter_dev-0.1.5}/managers/__init__.py +0 -0
  26. {flutter_dev-0.1.2 → flutter_dev-0.1.5}/managers/ai.py +0 -0
  27. {flutter_dev-0.1.2 → flutter_dev-0.1.5}/managers/app.py +0 -0
  28. {flutter_dev-0.1.2 → flutter_dev-0.1.5}/managers/brew.py +0 -0
  29. {flutter_dev-0.1.2 → flutter_dev-0.1.5}/managers/datetime.py +0 -0
  30. {flutter_dev-0.1.2 → flutter_dev-0.1.5}/managers/device.py +0 -0
  31. {flutter_dev-0.1.2 → flutter_dev-0.1.5}/managers/doctor.py +0 -0
  32. {flutter_dev-0.1.2 → flutter_dev-0.1.5}/managers/git.py +0 -0
  33. {flutter_dev-0.1.2 → flutter_dev-0.1.5}/managers/git_account.py +0 -0
  34. {flutter_dev-0.1.2 → flutter_dev-0.1.5}/managers/merge.py +0 -0
  35. {flutter_dev-0.1.2 → flutter_dev-0.1.5}/managers/mirror.py +0 -0
  36. {flutter_dev-0.1.2 → flutter_dev-0.1.5}/managers/project.py +0 -0
  37. {flutter_dev-0.1.2 → flutter_dev-0.1.5}/managers/web_deploy.py +0 -0
  38. {flutter_dev-0.1.2 → flutter_dev-0.1.5}/requirements.txt +0 -0
  39. {flutter_dev-0.1.2 → flutter_dev-0.1.5}/setup.cfg +0 -0
  40. {flutter_dev-0.1.2 → flutter_dev-0.1.5}/setup.py +0 -0
  41. {flutter_dev-0.1.2 → flutter_dev-0.1.5}/switch_ai.py +0 -0
@@ -0,0 +1,68 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project are documented in this file.
4
+
5
+ ## 0.1.5 - 2026-06-24
6
+
7
+ ### Added
8
+
9
+ - Added a Tkinter desktop dashboard that opens by running `fdev` with no command.
10
+ - Added GUI live log output with ANSI terminal color rendering.
11
+ - Added GUI buttons for all documented command groups, including mirror variants, AI provider shortcuts, and GitHub account subcommands.
12
+ - Added Python coverage for GUI command catalog, ANSI color parsing, and no-command CLI dispatch.
13
+
14
+ ### Changed
15
+
16
+ - Kept command help available through `fdev help`, `fdev --help`, and `fdev -h`.
17
+ - Documented Tkinter requirements for the desktop dashboard.
18
+
19
+ ## 0.1.4 - 2026-06-15
20
+
21
+ ### Added
22
+
23
+ - Added `fdev arb-to-csv` to export Flutter ARB localization files from `lib/l10n` into `translations.csv` by default.
24
+ - Added `fdev csv-to-arb` to generate `app_<locale>.arb` files into `lib/l10n` from `translations.csv` by default.
25
+ - Added Python regression coverage for ARB/CSV conversion, locale parsing, default paths, and ARB metadata preservation.
26
+
27
+ ### Changed
28
+
29
+ - Documented the ARB/CSV localization workflow in the README command reference and quick-start examples.
30
+
31
+ ## 0.1.3 - 2026-06-08
32
+
33
+ ### Fixed
34
+
35
+ - Fixed CocoaPods command execution for `fdev pod` and `fdev ipa` so pod subcommands keep their arguments on macOS and Linux.
36
+
37
+ ## 0.1.2 - 2026-06-07
38
+
39
+ ### Changed
40
+
41
+ - Bumped package version to 0.1.2.
42
+
43
+ ## 0.1.1 - 2026-05-19
44
+
45
+ ### Added
46
+
47
+ - Added `fdev install-scrcpy` for platform-specific scrcpy installation.
48
+ - Added prompt-based scrcpy installation when `fdev mirror` cannot find `scrcpy`.
49
+ - Added PyPI Trusted Publishing workflow and package metadata.
50
+ - Added `CHANGELOG.md` release history.
51
+
52
+ ### Changed
53
+
54
+ - Updated `fdev doctor` to suggest `fdev install-scrcpy` when scrcpy is missing.
55
+ - Updated package author and license branding to Royal Court BD.
56
+ - Updated package repository URLs to `royalcourtbd/flutter-development-tools`.
57
+
58
+ ### Fixed
59
+
60
+ - Prevented private `.env` files from being included in package artifacts.
61
+ - Made PyPI console scripts safer by removing import-time side effects.
62
+
63
+ ## 0.1.0 - 2026-05-18
64
+
65
+ ### Added
66
+
67
+ - Initial public PyPI package setup for Flutter Development Tools.
68
+ - Added console scripts for `fdev`, `create-page`, `gemini-api`, and `git-diff-editor`.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flutter-dev
3
- Version: 0.1.2
3
+ Version: 0.1.5
4
4
  Summary: A cross-platform CLI toolkit for Flutter development workflows.
5
5
  Author: Royal Court BD
6
6
  License-Expression: MIT
@@ -22,6 +22,7 @@ Classifier: Programming Language :: Python :: 3.10
22
22
  Classifier: Programming Language :: Python :: 3.11
23
23
  Classifier: Programming Language :: Python :: 3.12
24
24
  Classifier: Programming Language :: Python :: 3.13
25
+ Classifier: Programming Language :: Python :: 3.14
25
26
  Classifier: Topic :: Software Development :: Build Tools
26
27
  Classifier: Topic :: Utilities
27
28
  Requires-Python: >=3.8
@@ -41,16 +42,18 @@ The package is published on PyPI as `flutter-dev` and installs console commands
41
42
  pip install flutter-dev
42
43
  ```
43
44
 
44
- Current package metadata declares version `0.1.1`, Python `>=3.8`, MIT license, and support for macOS, Linux, and Windows.
45
+ Current package metadata declares version `0.1.5`, Python `>=3.8`, MIT license, and support for macOS, Linux, and Windows.
45
46
 
46
47
  ## Key Features
47
48
 
48
49
  - Flutter build automation for APK, split APK, AAB, IPA, release install, and Firebase web deploy.
49
50
  - Project maintenance helpers for `flutter clean`, dependency refresh, `build_runner`, localization generation, analysis, formatting, cache repair, and CocoaPods.
51
+ - Localization CSV helpers for exporting ARB files to translator-friendly CSV files and generating ARB files back from CSV.
50
52
  - Android device helpers for APK install, app uninstall, foreground app data clearing, screen mirroring with `scrcpy`, wireless ADB setup, and Date & Time settings.
51
53
  - AI-assisted Git commits using Groq, Mistral, SambaNova, or OpenRouter-compatible chat completion APIs.
52
54
  - Git workflow helpers for version tags, branch sync, deployment branch merge, discard, and GitHub account management through `gh`.
53
55
  - Feature/page generator that creates a `lib/features/<name>` structure using the project's presenter/base-state pattern.
56
+ - Small Tkinter desktop dashboard opened by running `fdev` with no command, with live colored command logs.
54
57
  - Environment diagnostics through `fdev doctor`.
55
58
  - Small utilities for Homebrew cleanup, file merging from `paths.txt`, AI provider switching, and git diff prompt export.
56
59
 
@@ -70,6 +73,8 @@ fdev doctor
70
73
 
71
74
  `pip install flutter-dev` installs the Python package, Python dependencies, and console scripts. It does not install Flutter, Dart, Git, Android SDK tools, CocoaPods, Firebase CLI, GitHub CLI, `scrcpy`, Java/JDK, or VS Code CLI.
72
75
 
76
+ The desktop dashboard uses Python Tkinter. Some Python distributions install this separately; for Homebrew Python, install the matching package such as `brew install python-tk@3.14`.
77
+
73
78
  ### Install From Source
74
79
 
75
80
  ```bash
@@ -117,18 +122,31 @@ Feature-specific external tools:
117
122
  | GitHub CLI / `gh` | `fdev git ...` |
118
123
  | VS Code CLI / `code` | Conflict helper in branch sync |
119
124
  | Homebrew | `brew`, macOS `install-scrcpy` flow |
125
+ | Python Tkinter | Desktop dashboard opened by `fdev` |
120
126
 
121
127
  ## Quick Start
122
128
 
123
129
  Run commands from the root of a Flutter project when they need `pubspec.yaml`, Android Gradle files, iOS files, or build outputs.
124
130
 
125
131
  ```bash
132
+ # Open the desktop dashboard
133
+ fdev
134
+
135
+ # Show command help
136
+ fdev help
137
+
126
138
  # Check environment and optional tools
127
139
  fdev doctor
128
140
 
129
141
  # Generate localization files
130
142
  fdev lang
131
143
 
144
+ # Export ARB translations from lib/l10n to translations.csv
145
+ fdev arb-to-csv
146
+
147
+ # Generate ARB files in lib/l10n from translations.csv
148
+ fdev csv-to-arb
149
+
132
150
  # Run build_runner
133
151
  fdev db
134
152
 
@@ -167,6 +185,8 @@ Android APK/AAB build commands rename output files using the Android app label a
167
185
  | `fdev setup` | Runs clean, dependency upgrade, `build_runner`, localization generation, another dependency upgrade, `flutter analyze`, and `dart format .`. |
168
186
  | `fdev cleanup` | Runs clean, pub get, `dart fix --apply`, `dart format .`, and `flutter pub upgrade --major-versions`. |
169
187
  | `fdev lang` | Runs `flutter gen-l10n`. |
188
+ | `fdev arb-to-csv` | Exports `lib/l10n/*.arb` into `translations.csv` by default. Use `-d/--directory` and `-o/--output` to override paths. |
189
+ | `fdev csv-to-arb` | Generates `app_<locale>.arb` files into `lib/l10n` from `translations.csv` by default. Use `-i/--input` and `-o/--output-dir` to override paths. |
170
190
  | `fdev db` | Runs `dart run build_runner build --delete-conflicting-outputs`. |
171
191
  | `fdev cache-repair` | Runs `flutter pub cache repair`. |
172
192
  | `fdev pod` | Updates CocoaPods from the `ios/` directory after removing `Podfile.lock` when present. |
@@ -216,6 +236,8 @@ Switching GitHub accounts runs `gh auth switch` and `gh auth setup-git`, but it
216
236
 
217
237
  | Command | Description |
218
238
  | --- | --- |
239
+ | `fdev` | Opens a small Tkinter desktop dashboard for running `fdev` commands with live colored logs and command input. The terminal process stays running while the window is open. |
240
+ | `fdev help` | Shows command help without opening the dashboard. |
219
241
  | `fdev doctor` | Checks platform, Python, Flutter/Dart/Git, Python packages, Android/iOS tools, optional CLIs, `.env`, Flutter project detection, and global `fdev` availability. |
220
242
  | `fdev ai` | Shows the current AI provider and opens an interactive provider switch prompt. |
221
243
  | `fdev ai <provider>` | Switches `DEFAULT_AI_SERVICE` to `groq`, `mistral`, `sambanova`, or `openrouter`. |
@@ -364,7 +386,8 @@ The installed Python layout is top-level modules plus the `core` and `managers`
364
386
  - `fdev cleanup` applies `dart fix`, formats the project, and runs a major-version dependency upgrade.
365
387
  - `fdev clear-data` clears app data on Android after confirmation.
366
388
  - `fdev uninstall` may fall back to foreground app detection outside a Flutter project root.
367
- - `fdev` creates build output directories at startup in the current working directory.
389
+ - `fdev` with no command opens the desktop dashboard. Use `fdev help` to print command usage.
390
+ - Most command subcommands create build output directories at startup in the current working directory.
368
391
  - Some subcommands return failure internally without always mapping that failure to a non-zero process exit code, so automation should inspect command output carefully.
369
392
 
370
393
  ## Troubleshooting
@@ -450,6 +473,7 @@ For local packaging checks:
450
473
 
451
474
  ```bash
452
475
  python -m pip install --upgrade build twine
476
+ rm -rf dist build flutter_dev.egg-info
453
477
  python -m build
454
478
  python -m twine check dist/*
455
479
  ```
@@ -8,16 +8,18 @@ The package is published on PyPI as `flutter-dev` and installs console commands
8
8
  pip install flutter-dev
9
9
  ```
10
10
 
11
- Current package metadata declares version `0.1.1`, Python `>=3.8`, MIT license, and support for macOS, Linux, and Windows.
11
+ Current package metadata declares version `0.1.5`, Python `>=3.8`, MIT license, and support for macOS, Linux, and Windows.
12
12
 
13
13
  ## Key Features
14
14
 
15
15
  - Flutter build automation for APK, split APK, AAB, IPA, release install, and Firebase web deploy.
16
16
  - Project maintenance helpers for `flutter clean`, dependency refresh, `build_runner`, localization generation, analysis, formatting, cache repair, and CocoaPods.
17
+ - Localization CSV helpers for exporting ARB files to translator-friendly CSV files and generating ARB files back from CSV.
17
18
  - Android device helpers for APK install, app uninstall, foreground app data clearing, screen mirroring with `scrcpy`, wireless ADB setup, and Date & Time settings.
18
19
  - AI-assisted Git commits using Groq, Mistral, SambaNova, or OpenRouter-compatible chat completion APIs.
19
20
  - Git workflow helpers for version tags, branch sync, deployment branch merge, discard, and GitHub account management through `gh`.
20
21
  - Feature/page generator that creates a `lib/features/<name>` structure using the project's presenter/base-state pattern.
22
+ - Small Tkinter desktop dashboard opened by running `fdev` with no command, with live colored command logs.
21
23
  - Environment diagnostics through `fdev doctor`.
22
24
  - Small utilities for Homebrew cleanup, file merging from `paths.txt`, AI provider switching, and git diff prompt export.
23
25
 
@@ -37,6 +39,8 @@ fdev doctor
37
39
 
38
40
  `pip install flutter-dev` installs the Python package, Python dependencies, and console scripts. It does not install Flutter, Dart, Git, Android SDK tools, CocoaPods, Firebase CLI, GitHub CLI, `scrcpy`, Java/JDK, or VS Code CLI.
39
41
 
42
+ The desktop dashboard uses Python Tkinter. Some Python distributions install this separately; for Homebrew Python, install the matching package such as `brew install python-tk@3.14`.
43
+
40
44
  ### Install From Source
41
45
 
42
46
  ```bash
@@ -84,18 +88,31 @@ Feature-specific external tools:
84
88
  | GitHub CLI / `gh` | `fdev git ...` |
85
89
  | VS Code CLI / `code` | Conflict helper in branch sync |
86
90
  | Homebrew | `brew`, macOS `install-scrcpy` flow |
91
+ | Python Tkinter | Desktop dashboard opened by `fdev` |
87
92
 
88
93
  ## Quick Start
89
94
 
90
95
  Run commands from the root of a Flutter project when they need `pubspec.yaml`, Android Gradle files, iOS files, or build outputs.
91
96
 
92
97
  ```bash
98
+ # Open the desktop dashboard
99
+ fdev
100
+
101
+ # Show command help
102
+ fdev help
103
+
93
104
  # Check environment and optional tools
94
105
  fdev doctor
95
106
 
96
107
  # Generate localization files
97
108
  fdev lang
98
109
 
110
+ # Export ARB translations from lib/l10n to translations.csv
111
+ fdev arb-to-csv
112
+
113
+ # Generate ARB files in lib/l10n from translations.csv
114
+ fdev csv-to-arb
115
+
99
116
  # Run build_runner
100
117
  fdev db
101
118
 
@@ -134,6 +151,8 @@ Android APK/AAB build commands rename output files using the Android app label a
134
151
  | `fdev setup` | Runs clean, dependency upgrade, `build_runner`, localization generation, another dependency upgrade, `flutter analyze`, and `dart format .`. |
135
152
  | `fdev cleanup` | Runs clean, pub get, `dart fix --apply`, `dart format .`, and `flutter pub upgrade --major-versions`. |
136
153
  | `fdev lang` | Runs `flutter gen-l10n`. |
154
+ | `fdev arb-to-csv` | Exports `lib/l10n/*.arb` into `translations.csv` by default. Use `-d/--directory` and `-o/--output` to override paths. |
155
+ | `fdev csv-to-arb` | Generates `app_<locale>.arb` files into `lib/l10n` from `translations.csv` by default. Use `-i/--input` and `-o/--output-dir` to override paths. |
137
156
  | `fdev db` | Runs `dart run build_runner build --delete-conflicting-outputs`. |
138
157
  | `fdev cache-repair` | Runs `flutter pub cache repair`. |
139
158
  | `fdev pod` | Updates CocoaPods from the `ios/` directory after removing `Podfile.lock` when present. |
@@ -183,6 +202,8 @@ Switching GitHub accounts runs `gh auth switch` and `gh auth setup-git`, but it
183
202
 
184
203
  | Command | Description |
185
204
  | --- | --- |
205
+ | `fdev` | Opens a small Tkinter desktop dashboard for running `fdev` commands with live colored logs and command input. The terminal process stays running while the window is open. |
206
+ | `fdev help` | Shows command help without opening the dashboard. |
186
207
  | `fdev doctor` | Checks platform, Python, Flutter/Dart/Git, Python packages, Android/iOS tools, optional CLIs, `.env`, Flutter project detection, and global `fdev` availability. |
187
208
  | `fdev ai` | Shows the current AI provider and opens an interactive provider switch prompt. |
188
209
  | `fdev ai <provider>` | Switches `DEFAULT_AI_SERVICE` to `groq`, `mistral`, `sambanova`, or `openrouter`. |
@@ -331,7 +352,8 @@ The installed Python layout is top-level modules plus the `core` and `managers`
331
352
  - `fdev cleanup` applies `dart fix`, formats the project, and runs a major-version dependency upgrade.
332
353
  - `fdev clear-data` clears app data on Android after confirmation.
333
354
  - `fdev uninstall` may fall back to foreground app detection outside a Flutter project root.
334
- - `fdev` creates build output directories at startup in the current working directory.
355
+ - `fdev` with no command opens the desktop dashboard. Use `fdev help` to print command usage.
356
+ - Most command subcommands create build output directories at startup in the current working directory.
335
357
  - Some subcommands return failure internally without always mapping that failure to a non-zero process exit code, so automation should inspect command output carefully.
336
358
 
337
359
  ## Troubleshooting
@@ -417,6 +439,7 @@ For local packaging checks:
417
439
 
418
440
  ```bash
419
441
  python -m pip install --upgrade build twine
442
+ rm -rf dist build flutter_dev.egg-info
420
443
  python -m build
421
444
  python -m twine check dist/*
422
445
  ```
@@ -47,6 +47,10 @@ from managers.mirror import (
47
47
  from managers.merge import (
48
48
  merge_files,
49
49
  )
50
+ from managers.localization import (
51
+ arb_to_csv_command,
52
+ csv_to_arb_command,
53
+ )
50
54
  from managers.ai import (
51
55
  show_ai_status,
52
56
  switch_ai_service,
@@ -66,11 +70,15 @@ from managers.brew import (
66
70
  from managers.git_account import (
67
71
  git_account_manager,
68
72
  )
73
+ from managers.gui import (
74
+ launch_gui,
75
+ )
69
76
 
70
77
 
71
- def show_usage():
78
+ def show_usage(exit_code=1):
72
79
  """Show usage information"""
73
80
  print(f"{YELLOW}Usage: {sys.argv[0]} [command] [options]{NC}")
81
+ print(f"{BLUE}Run {GREEN}fdev{NC}{BLUE} without a command to open the desktop dashboard.{NC}")
74
82
  print(f"\n{BLUE}Build Commands:{NC}")
75
83
  print(" apk Build release APK (Full Process)")
76
84
  print(" apk-split Build APK with --split-per-abi")
@@ -86,6 +94,8 @@ def show_usage():
86
94
  print(" cleanup Clean project and get dependencies")
87
95
  print(" cache-repair Repair pub cache")
88
96
  print(" page Create page structure (usage: fdev page <page_name>)")
97
+ print(" arb-to-csv Export ARB localization files to CSV")
98
+ print(" csv-to-arb Generate ARB localization files from CSV")
89
99
 
90
100
  print(f"\n{BLUE}Device Commands:{NC}")
91
101
  print(" install Install built APK on connected device")
@@ -108,6 +118,7 @@ def show_usage():
108
118
  print(f"\n{BLUE}Utility Commands:{NC}")
109
119
  print(" doctor Check environment health (tools, deps, config)")
110
120
  print(" brew Interactive Homebrew package manager")
121
+ print(" help Show this help")
111
122
  print(" merge Merge files from paths.txt into single output file")
112
123
  print(" ai Show current AI service or switch to another")
113
124
  print(" Usage: fdev ai [groq|mistral|sambanova|openrouter]")
@@ -129,10 +140,13 @@ def show_usage():
129
140
  print(f" {GREEN}fdev git{NC} # Interactive GitHub account manager")
130
141
  print(f" {GREEN}fdev git switch royalcourtbd{NC} # Switch to a specific GH account")
131
142
  print(f" {GREEN}fdev git config{NC} # Update git user.name / user.email")
143
+ print(f" {GREEN}fdev arb-to-csv{NC} # Export lib/l10n ARB files to translations.csv")
144
+ print(f" {GREEN}fdev csv-to-arb{NC} # Generate lib/l10n ARB files from translations.csv")
145
+ print(f" {GREEN}fdev{NC} # Open small desktop dashboard")
132
146
 
133
147
  print(f"\n{BLUE}Note:{NC}")
134
148
  print(f" {YELLOW}Multiple devices detected?{NC} Tool will prompt you to select one.")
135
- sys.exit(1)
149
+ return exit_code
136
150
 
137
151
 
138
152
  def main():
@@ -143,10 +157,13 @@ def main():
143
157
  os.makedirs("build/ios/ipa", exist_ok=True)
144
158
 
145
159
  if len(sys.argv) < 2:
146
- show_usage()
160
+ return launch_gui()
147
161
 
148
162
  command = sys.argv[1].lower()
149
163
 
164
+ if command in ("help", "--help", "-h"):
165
+ return show_usage(exit_code=0)
166
+
150
167
  # Build commands
151
168
  if command == "apk":
152
169
  build_apk()
@@ -172,6 +189,10 @@ def main():
172
189
  repair_cache()
173
190
  elif command == "cleanup":
174
191
  cleanup_project()
192
+ elif command == "arb-to-csv":
193
+ sys.exit(arb_to_csv_command(sys.argv[2:]))
194
+ elif command == "csv-to-arb":
195
+ sys.exit(csv_to_arb_command(sys.argv[2:]))
175
196
 
176
197
  # Device commands
177
198
  elif command == "install":
@@ -250,7 +271,7 @@ def main():
250
271
  git_account_manager(sys.argv[2:])
251
272
 
252
273
  else:
253
- show_usage()
274
+ sys.exit(show_usage())
254
275
 
255
276
 
256
277
  if __name__ == "__main__":
@@ -260,4 +281,4 @@ if __name__ == "__main__":
260
281
  sys.exit(0)
261
282
 
262
283
  signal.signal(signal.SIGINT, signal_handler)
263
- main()
284
+ sys.exit(main())
@@ -26,7 +26,12 @@ managers/device.py
26
26
  managers/doctor.py
27
27
  managers/git.py
28
28
  managers/git_account.py
29
+ managers/gui.py
30
+ managers/localization.py
29
31
  managers/merge.py
30
32
  managers/mirror.py
31
33
  managers/project.py
32
- managers/web_deploy.py
34
+ managers/web_deploy.py
35
+ tests/test_fdev_cli.py
36
+ tests/test_gui.py
37
+ tests/test_localization.py
@@ -56,7 +56,7 @@ def run_flutter_command(cmd_list, description, env=None):
56
56
  env: Optional environment variables dict (default: inherits current env)
57
57
  """
58
58
  # Windows compatibility for shell commands
59
- shell_needed = (is_windows() and cmd_list[0] in ['timeout', 'start', 'flutter', 'dart']) or cmd_list[0] == 'pod'
59
+ shell_needed = is_windows() and cmd_list[0] in ['timeout', 'start', 'flutter', 'dart']
60
60
 
61
61
  process = subprocess.Popen(
62
62
  cmd_list,