flutter-setup 2.1.0__py3-none-any.whl

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.
@@ -0,0 +1,365 @@
1
+ Metadata-Version: 2.4
2
+ Name: flutter-setup
3
+ Version: 2.1.0
4
+ Summary: Flutter development environment setup CLI tool for macOS and Linux
5
+ Author-email: Mark C Allen <mark@markcallen.com>
6
+ License: MIT License
7
+
8
+ Copyright (c) 2026 Mark Callen
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in all
18
+ copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
+ SOFTWARE.
27
+
28
+ Requires-Python: >=3.12
29
+ Description-Content-Type: text/markdown
30
+ License-File: LICENSE
31
+ Requires-Dist: click>=8.3.2
32
+ Requires-Dist: pyyaml>=6.0.3
33
+ Requires-Dist: rich>=15.0.0
34
+ Requires-Dist: requests>=2.33.1
35
+ Provides-Extra: dev
36
+ Requires-Dist: black>=26.3.1; extra == "dev"
37
+ Requires-Dist: mypy>=1.20.1; extra == "dev"
38
+ Requires-Dist: pre-commit>=4.0.0; extra == "dev"
39
+ Requires-Dist: ruff>=0.15.10; extra == "dev"
40
+ Requires-Dist: pytest>=9.0.3; extra == "dev"
41
+ Requires-Dist: pytest-cov>=7.1.0; extra == "dev"
42
+ Requires-Dist: pytest-mock>=3.15.1; extra == "dev"
43
+ Requires-Dist: types-pyyaml>=6.0.12.20250915; extra == "dev"
44
+ Dynamic: license-file
45
+
46
+ # Flutter Setup CLI
47
+
48
+ A modern Python CLI tool for setting up complete Flutter development environments on macOS and Linux. This tool automates Flutter SDK setup, prerequisite checks, and project bootstrapping with practical defaults.
49
+
50
+ ## Features
51
+
52
+ - ๐Ÿš€ **Automated Setup**: Complete Flutter development environment setup in minutes
53
+ - ๐Ÿฆ‹ **Flutter SDK Management**: Install, update, and manage Flutter SDK with multiple channels
54
+ - ๐Ÿ› ๏ธ **Prerequisites Installation**: Platform-aware prerequisite checks and installation flows for macOS and Linux
55
+ - ๐Ÿ“ฑ **Multi-Platform Support**: Create projects for iOS, Android, macOS, Linux, Windows, and Web
56
+ - ๐Ÿ”ง **Development Environment**: Pre-configured VS Code/Cursor settings, testing framework, and CI/CD
57
+ - ๐ŸŽฏ **Best Practices**: Industry-standard project structure with linting, testing, and analysis tools
58
+ - ๐Ÿงช **Testing Ready**: Built-in test structure for unit, widget, and integration tests
59
+ - ๐Ÿ“ฆ **Easy Deployment**: Simple Python package that can be easily installed on any developer machine
60
+
61
+ ## Quick Start
62
+
63
+ ### Installation
64
+
65
+ ```bash
66
+ # Clone the repository
67
+ git clone <your-repo-url>
68
+ cd flutter-setup
69
+
70
+ # Install the package
71
+ uv pip install -e .
72
+
73
+ # Or install directly from GitHub (when published)
74
+ uv pip install git+https://github.com/markcallen/flutter-setup.git
75
+ ```
76
+
77
+ ### Linux Prerequisites (Ubuntu/Debian)
78
+
79
+ For Linux hosts, ensure APT is available and `sudo` is configured:
80
+
81
+ ```bash
82
+ sudo apt-get update
83
+ sudo apt-get install -y git curl unzip xz-utils zip libglu1-mesa clang cmake ninja-build pkg-config libgtk-3-dev libayatana-appindicator3-dev liblzma-dev openjdk-17-jdk
84
+ ```
85
+
86
+ ### Configuration Setup
87
+
88
+ Before your first use, initialize your configuration:
89
+
90
+ ```bash
91
+ # Interactive configuration setup
92
+ flutter-setup init
93
+ ```
94
+
95
+ This will:
96
+ - Detect Flutter location from environment variables or PATH
97
+ - Prompt for Flutter channel (stable/beta)
98
+ - Prompt for organization ID
99
+ - Create config file at `~/.config/flutter-setup/config.yaml`
100
+
101
+ You can run `flutter-setup init` again anytime to update your configuration.
102
+
103
+ ### Basic Usage
104
+
105
+ ```bash
106
+ # Create a new Flutter app with iOS, Android, and Web support
107
+ flutter-setup setup MyAwesomeApp ios android web
108
+
109
+ # Create a plugin with specific language preferences
110
+ flutter-setup setup MyPlugin --template plugin --ios-language objc --android-language java ios android
111
+
112
+ # Use beta channel and custom organization
113
+ flutter-setup setup MyApp --channel beta --org com.mycompany ios android macos
114
+
115
+ # Preview what would happen (dry run)
116
+ flutter-setup setup MyApp --dry-run ios android
117
+ ```
118
+
119
+ ## Commands
120
+
121
+ ### `init` - Configuration Setup
122
+ Initialize or update your configuration file:
123
+
124
+ ```bash
125
+ flutter-setup init # Create or update config interactively
126
+ flutter-setup init --force # Overwrite existing config
127
+ ```
128
+
129
+ The config file is stored at `~/.config/flutter-setup/config.yaml` (or `$XDG_CONFIG_HOME/flutter-setup/config.yaml`).
130
+
131
+ ### `setup` - Project Setup
132
+ Set up a new Flutter project:
133
+
134
+ ```bash
135
+ flutter-setup setup MyApp ios android web
136
+ ```
137
+
138
+ ## Command Line Options
139
+
140
+ | Option | Description | Default | Config File |
141
+ |--------|-------------|---------|-------------|
142
+ | `--org` | Organization identifier | `com.example` | โœ… |
143
+ | `--channel` | Flutter channel (stable/beta) | `stable` | โœ… |
144
+ | `--dir` | Output directory | Current directory | โŒ |
145
+ | `--template` | Project template (app/plugin) | `app` | โœ… |
146
+ | `--architecture` | Application architecture scaffold (basic/clean) | `basic` | โœ… |
147
+ | `--database` | Local persistence scaffold (none/sqlite) | `none` | โœ… |
148
+ | `--testing` | Testing starter scaffold (standard/mocktail) | `standard` | โœ… |
149
+ | `--auth-provider` | Auth integration scaffold (none/firebase) | `none` | โœ… |
150
+ | `--cloud-database` | Cloud database scaffold (none/firestore) | `none` | โœ… |
151
+ | `--notifications-provider` | Push notifications scaffold (none/firebase) | `none` | โœ… |
152
+ | `--ios-language` | iOS language for plugins (swift/objc) | `swift` | โœ… |
153
+ | `--android-language` | Android language for plugins (kotlin/java) | `kotlin` | โœ… |
154
+ | `--flutter-update` | Flutter update mode (reset/reclone/skip) | `reset` | โœ… |
155
+ | `--dry-run` | Preview actions without executing | `false` | โŒ |
156
+ | `--verbose` | Enable verbose output | `false` | โŒ |
157
+
158
+ **Note:** Options marked with โœ… can be set in the config file via `flutter-setup init`. Command-line arguments override config file values.
159
+
160
+ ## What Gets Set Up
161
+
162
+ ### 1. System Prerequisites
163
+ - โœ… macOS: Xcode Command Line Tools + Homebrew + CocoaPods
164
+ - โœ… Linux (Ubuntu/Debian): APT-managed packages (`git`, `curl`, `unzip`, `xz-utils`, `zip`, `libglu1-mesa`, `clang`, `cmake`, `ninja-build`, `pkg-config`, `libgtk-3-dev`, `libayatana-appindicator3-dev`, `liblzma-dev`, `openjdk-17-jdk`)
165
+ - โœ… Android development tools when Android platform is selected
166
+ - โœ… iOS development tools only on macOS when iOS platform is selected
167
+
168
+ ### 2. Flutter SDK
169
+ - โœ… Flutter SDK installation/update
170
+ - โœ… Channel management (stable/beta)
171
+ - โœ… PATH configuration
172
+ - โœ… Flutter doctor validation
173
+
174
+ ### 3. Project Structure
175
+ - โœ… Flutter project creation with specified platforms
176
+ - โœ… Package name sanitization
177
+ - โœ… Template-specific configuration
178
+ - โœ… Optional Clean Architecture scaffold
179
+ - โœ… Optional SQLite/Drift local persistence scaffold
180
+ - โœ… Optional Firebase Auth, Firestore, and Firebase Messaging scaffolds
181
+ - โœ… Optional Mocktail testing starter
182
+
183
+ ### 4. Development Environment
184
+ - โœ… VS Code/Cursor configuration
185
+ - โœ… Makefile with common commands
186
+ - โœ… Testing framework structure
187
+ - โœ… Code analysis and linting setup
188
+ - โœ… GitHub Actions CI pipeline
189
+ - โœ… Environment variable support
190
+ - โœ… Comprehensive README
191
+
192
+ ## Project Structure
193
+
194
+ ```
195
+ MyAwesomeApp/
196
+ โ”œโ”€โ”€ .vscode/ # VS Code/Cursor configuration
197
+ โ”œโ”€โ”€ .github/workflows/ # CI/CD pipeline
198
+ โ”œโ”€โ”€ lib/ # Flutter source code
199
+ โ”œโ”€โ”€ test/ # Test files
200
+ โ”‚ โ”œโ”€โ”€ unit/ # Unit tests
201
+ โ”‚ โ””โ”€โ”€ widget/ # Widget tests
202
+ โ”œโ”€โ”€ integration_test/ # Integration tests
203
+ โ”œโ”€โ”€ Makefile # Common development commands
204
+ โ”œโ”€โ”€ analysis_options.yaml # Linting and analysis rules
205
+ โ”œโ”€โ”€ .env # Environment variables
206
+ โ””โ”€โ”€ README.md # Project documentation
207
+ ```
208
+
209
+ ## Development Commands
210
+
211
+ After setup, use these commands in your project:
212
+
213
+ ```bash
214
+ # Run the app
215
+ make run # Chrome (default)
216
+ make run_ios # iOS simulator
217
+ make run_android # Android emulator
218
+
219
+ # Testing
220
+ make test # Unit + widget tests
221
+ make integration # Integration tests
222
+
223
+ # Code quality
224
+ make analyze # Flutter analyze
225
+ ```
226
+
227
+ ## Configuration
228
+
229
+ The tool uses a YAML-based configuration file that stores your preferences:
230
+
231
+ **Location:** `~/.config/flutter-setup/config.yaml` (or `$XDG_CONFIG_HOME/flutter-setup/config.yaml`)
232
+
233
+ **Example config:**
234
+ ```yaml
235
+ flutter:
236
+ location: ~/development/flutter
237
+ channel: stable
238
+ update_mode: reset
239
+
240
+ project:
241
+ org: com.mycompany
242
+ template: app
243
+ architecture: basic
244
+ database: none
245
+ testing: standard
246
+ auth_provider: none
247
+ cloud_database: none
248
+ notifications_provider: none
249
+ ios_language: swift
250
+ android_language: kotlin
251
+ ```
252
+
253
+ **Configuration Features:**
254
+ - โœ… XDG Base Directory Specification compliant
255
+ - โœ… Automatic Flutter location detection from environment
256
+ - โœ… Interactive setup via `flutter-setup init`
257
+ - โœ… Command-line arguments override config values
258
+ - โœ… Persistent settings across sessions
259
+
260
+ ## Architecture
261
+
262
+ The package is built with modern Python best practices:
263
+
264
+ - **Modular Design**: Separate modules for different concerns
265
+ - **Type Safety**: Full type hints with mypy support
266
+ - **Error Handling**: Comprehensive exception handling
267
+ - **Rich CLI**: Beautiful terminal output with progress indicators
268
+ - **Configuration**: Flexible configuration system with XDG support
269
+ - **Testing**: Built-in test structure and CI/CD
270
+
271
+ ## Development
272
+
273
+ ### Prerequisites
274
+
275
+ - Python 3.12+
276
+ - uv package manager
277
+
278
+ ### Supported Hosts
279
+
280
+ - macOS (Darwin)
281
+ - Linux (Ubuntu/Debian via APT)
282
+
283
+ ### Known Limitations
284
+
285
+ - Fedora/DNF support is planned but not yet implemented.
286
+ - iOS setup is not available on Linux hosts.
287
+
288
+ ### Setup Development Environment
289
+
290
+ ```bash
291
+ # Clone and install
292
+ git clone <repo-url>
293
+ cd flutter-setup
294
+ uv pip install -e ".[dev]"
295
+
296
+ # Run tests
297
+ uv run pytest
298
+
299
+ # Format code
300
+ uv run black .
301
+
302
+ # Lint code
303
+ uv run ruff check .
304
+
305
+ # Type checking
306
+ uv run mypy .
307
+ ```
308
+
309
+ ### Project Structure
310
+
311
+ ```
312
+ flutter-setup/
313
+ โ”œโ”€โ”€ flutter_setup/ # Main package
314
+ โ”‚ โ”œโ”€โ”€ __init__.py
315
+ โ”‚ โ”œโ”€โ”€ cli.py # CLI entry point
316
+ โ”‚ โ”œโ”€โ”€ config.py # Configuration management
317
+ โ”‚ โ”œโ”€โ”€ core.py # Main orchestration
318
+ โ”‚ โ”œโ”€โ”€ exceptions.py # Custom exceptions
319
+ โ”‚ โ”œโ”€โ”€ prerequisites.py # System prerequisites
320
+ โ”‚ โ”œโ”€โ”€ flutter_manager.py # Flutter SDK management
321
+ โ”‚ โ”œโ”€โ”€ project_creator.py # Project creation
322
+ โ”‚ โ””โ”€โ”€ bootstrap.py # Development environment setup
323
+ โ”œโ”€โ”€ pyproject.toml # Package configuration
324
+ โ”œโ”€โ”€ README.md # This file
325
+ โ””โ”€โ”€ test_cli.py # Simple test script
326
+ ```
327
+
328
+ ## Comparison with Bash Script
329
+
330
+ This Python CLI package provides several advantages over the original bash script:
331
+
332
+ | Feature | Bash Script | Python CLI |
333
+ |---------|-------------|------------|
334
+ | **Installation** | Manual download | `pip install` |
335
+ | **Dependencies** | Manual management | Automatic with uv |
336
+ | **Error Handling** | Basic | Comprehensive |
337
+ | **Testing** | None | Full test suite |
338
+ | **Type Safety** | None | Full mypy support |
339
+ | **Packaging** | Manual | Standard Python package |
340
+ | **Distribution** | Manual | PyPI ready |
341
+ | **Maintenance** | Harder | Easier with Python tools |
342
+
343
+ ## Contributing
344
+
345
+ 1. Fork the repository
346
+ 2. Create a feature branch
347
+ 3. Make your changes
348
+ 4. Add tests for new functionality
349
+ 5. Ensure all tests pass
350
+ 6. Submit a pull request
351
+
352
+ ## License
353
+
354
+ MIT License - see [LICENSE](LICENSE) file for details.
355
+
356
+ ## Support
357
+
358
+ For issues and questions:
359
+ - Create an issue on GitHub
360
+ - Check the documentation
361
+ - Review the PRD.md for detailed requirements
362
+
363
+ ---
364
+
365
+ **Built with โค๏ธ for the Flutter community**
@@ -0,0 +1,20 @@
1
+ flutter_setup/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ flutter_setup/bootstrap.py,sha256=DwGDlxH3Rq0YJ2N75z2eQA3WXyMoQ7FAyQA0pxHhNHU,29950
3
+ flutter_setup/cicd_generator.py,sha256=hoqHrtcECrYcH-Gyrok_az-PbsHj9s7LcffKEqEgves,25924
4
+ flutter_setup/cli.py,sha256=X6fbCci96tvQGHOADwP5wKZRJUblxIz8gqKPzyn0ezo,21792
5
+ flutter_setup/config.py,sha256=aXIdCiXTr-u5H7ihE_m0DT-2Fe2jYkqkKcwdR1YzIeU,4729
6
+ flutter_setup/config_manager.py,sha256=bAnuWdunLpnITDytdOrKaMAn92SfXDlKKjADO-E5YuY,5642
7
+ flutter_setup/core.py,sha256=XrtBZZCsbOY5ONZkT8HT1k-SHDre089t1S5qjKtYh4w,7719
8
+ flutter_setup/exceptions.py,sha256=6ZpFrshGLNjMQPqUcj_hPtyBAob0qf8_eN9LDKc0vvM,673
9
+ flutter_setup/flutter_manager.py,sha256=LDxsQxx6MPDK9Cexv23MgTteDlAt8FI6sbmXosDALAc,21958
10
+ flutter_setup/platform.py,sha256=Q3irgLn6dCBBSCFDo2wHqPlGdua7ha-Qda7ycBJkaPQ,394
11
+ flutter_setup/prerequisites.py,sha256=Otr79zlZa3DXcs3c31F1liKLhecN_A_bW0Fgs958lrQ,1352
12
+ flutter_setup/prerequisites_linux.py,sha256=XEn3WI6UrR8E4-LEKzsa3DzmidN5ST7dIkn-HCs0HrQ,4676
13
+ flutter_setup/prerequisites_macos.py,sha256=REZaz8NAACJcKyY60CwnHDFsJe9h6R1xIS6HFdBbaw4,8561
14
+ flutter_setup/project_creator.py,sha256=PBW1DjRelpmEpzogvoZLCd5XVPYYTDCHPNCLaZkIQ3M,2451
15
+ flutter_setup-2.1.0.dist-info/licenses/LICENSE,sha256=dwcdo6BcRlgLd_6ejgcIIp3IUFMrCkT7fiRBMBPeulw,1068
16
+ flutter_setup-2.1.0.dist-info/METADATA,sha256=L672avGXXOS0mzAWB6fkJgZuxUmF4PDXCHMvZPel_GU,12390
17
+ flutter_setup-2.1.0.dist-info/WHEEL,sha256=K260EYznzXsJYBQGqmI8VTxEdiZYNvDZwW9cBh9-_MA,91
18
+ flutter_setup-2.1.0.dist-info/entry_points.txt,sha256=Ff6oSyH2_elJEzbt2Es1Ftlpkqk1ogB9cX_h4NLXXrQ,57
19
+ flutter_setup-2.1.0.dist-info/top_level.txt,sha256=BjDhT4IHIUpiQNvx9wT1LxUraEqJNpp1OlJ7F_LVI9o,14
20
+ flutter_setup-2.1.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (83.0.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ flutter-setup = flutter_setup.cli:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Mark Callen
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1 @@
1
+ flutter_setup