Avila Tek Mobile Open Source (ATMOS) CLI
Fork from very_good_cli
with extra features for Avila Tek ⛰️ Mobile projects.
Special features in atmos_cli
To this date, atmos_cli
is almost identical to very_good_cli
, but with the following extra features:
The only command that is modified from the original CLI tool is atmos create flutter_app
.
First, it uses atmos_core template, a slightly different template from very_good_core.
Second, it has an extended setup process that does the following things:
- Sets up FVM with the newest stable Flutter version.
- Runs
mason get
and generates the base bricks used in our projects:avilatek_readme
,avila_codemagic
,bootstrap_go_routes
andavila_themes
. - Prompts the user to setup Firebase in the project. This is the neatest feature in
atmos
!. It will setup Firebase for all flavors (development, staging and production) for iOS and Android platforms. It also sets up the firebase config files in Dart, Android and iOS. In iOS, a config folder is created with everyGoogleService-Info.plist
file and adds a Build Phase script to use the correct file for each flavor. In Dart, it creates afirebase_config.dart
file with the correct configuration for each flavor. This is a huge time saver for developers! - Finally, adds needed dependencies and fixes dart analysis issues.
Documentation 📝
For official documentation, please visit https://cli.vgv.dev.
Quick Start 🚀
Installing 🧑💻
dart pub global activate atmos_cli
Or install a specific version using:
dart pub global activate atmos_cli <version>
If you haven't already, you might need to set up your path.
When that is not possible (eg: CI environments), run atmos
commands via:
dart pub global run atmos_cli:atmos <command> <args>
Commands ✨
atmos create
Create a very good project in seconds based on the provided template. Each template has a corresponding sub-command (e.g.,atmos create flutter_app
will generate a Flutter starter app).
Creates a new very good project in the specified directory.
Usage: atmos create <subcommand> <project-name> [arguments]
-h, --help Print this usage information.
Available subcommands:
dart_cli Generate a Very Good Dart CLI application.
dart_package Generate a Very Good Dart package.
docs_site Generate a Very Good documentation site.
flame_game Generate a Very Good Flame game.
flutter_app Generate an Avila Tek ⛰️ Flutter application.
flutter_package Generate a Very Good Flutter package.
flutter_plugin Generate a Very Good Flutter plugin.
Run "atmos help" to see global options.
Usage
# Create a new Flutter app named my_app
atmos create flutter_app my_app
# Create a new Flutter app named my_app with a custom org
atmos create flutter_app my_app --desc "My new Flutter app" --org "com.custom.org"
# Create a new Flutter app named my_app with a custom application id
atmos create flutter_app my_app --desc "My new Flutter app" --application-id "com.custom.app.id"
# Create a new Flame game named my_game
atmos create flame_game my_game --desc "My new Flame game"
# Create a new Wear OS app named my_wear_app
atmos create flutter_app my_wear_app --desc "My new Wear OS app" --template wear
# Create a new Flutter package named my_flutter_package
atmos create flutter_package my_flutter_package --desc "My new Flutter package"
# Create a new Dart package named my_dart_package
atmos create dart_package my_dart_package --desc "My new Dart package"
# Create a new Dart package named my_dart_package that is publishable
atmos create dart_package my_dart_package --desc "My new Dart package" --publishable
# Create a new Dart CLI application named my_dart_cli
atmos create dart_cli my_dart_cli --desc "My new Dart CLI package"
# Create a new Dart CLI application named my_dart_cli with a custom executable name
atmos create dart_cli my_dart_cli --desc "My new Dart CLI package" --executable-name my_executable_name
# Create a new Flutter plugin named my_flutter_plugin (all platforms enabled)
atmos create flutter_plugin my_flutter_plugin --desc "My new Flutter plugin"
# Create a new Flutter plugin named my_flutter_plugin (some platforms only)
atmos create flutter_plugin my_flutter_plugin --desc "My new Flutter plugin" --platforms android,ios,macos
# Create a new docs site named my_docs_site
atmos create docs_site my_docs_site
atmos test
Run tests in a Dart or Flutter project.
# Run all tests
atmos test
# Run all tests and collect coverage
atmos test --coverage
# Run all tests and enforce 100% coverage
atmos test --coverage --min-coverage 100
# Run only tests in ./some/other/directory
atmos test ./some/other/directory
# Run tests recursively
atmos test --recursive
# Run tests recursively (shorthand)
atmos test -r
atmos packages get
Get packages in a Dart or Flutter project.
# Install packages in the current directory
atmos packages get
# Install packages in ./some/other/directory
atmos packages get ./some/other/directory
# Install packages recursively
atmos packages get --recursive
# Install packages recursively (shorthand)
atmos packages get -r
atmos packages check licenses
Check packages' licenses in a Dart or Flutter project.
# Check licenses in the current directory
atmos packages check licenses
# Only allow the use of certain licenses
atmos packages check licenses --allowed="MIT,BSD-3-Clause,BSD-2-Clause,Apache-2.0"
# Deny the use of certain licenses
atmos packages check licenses --forbidden="unknown"
# Check licenses for certain dependencies types
atmos packages check licenses --dependency-type="direct-main,transitive"
atmos --help
See the complete list of commands and usage information.
🦄 A Very Good Command-Line Interface
Usage: atmos <command> [arguments]
Global options:
-h, --help Print this usage information.
--version Print the current version.
--[no-]verbose Noisy logging, including all shell commands executed.
Available commands:
create atmos create <subcommand> <project-name> [arguments]
Creates a new very good project in the specified directory.
packages Command for managing packages.
test Run tests in a Dart or Flutter project.
update Update Very Good CLI.
Run "atmos help <command>" for more information about a command.
Libraries
- atmos_cli
- CLI tool fitted to Avila Tek ⛰️ projects.