Skip to content

A simple CLI program to convert your android project's structure.

Notifications You must be signed in to change notification settings

ashishkharcheiuforks/jaba

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IMAGE

Jaba

A simple cli tool to convert your stock android project structure to MVVM architectural pattern. It also includes templates for splash and login screen. Basically, jaba is a time saver. :)

Install

wget "https://raw.githubusercontent.com/theapache64/jaba/master/install.sh" -q --show-progress -O install.sh && sh install.sh && source ~/.bash_aliases

Usage

Simply run jaba in an android studio project, and you'll be prompted with an interactive shell.


Project : MyAwesomeProject
Package : com.theapache64.myawesomeproject

Choose architecture
1) MVVM
2) MVP
Response :1
Do you need google fonts? (y/N): y
Response : yes
Do you need network module ? (y/N): y
Response : yes
Enter base url : (empty to use default jaba api): http://myapi.com/api/v1/
Do you need splash screen? (y/N): y
Response : yes
Do you need login screen? (y/N): y
Response : yes
⏳ Creating dirs...
✔️ Done
⏳ Modifying app.gradle
✔️ Done
⏳ Fixing XML style issue...
✔️ Done
⏳ Creating App.kt ...
✔️ Done
Modifying manifest file...
✔️ Done
⏳ Creating MainViewModel.kt ...
✔️ Done
⏳ Modifying MainActivity.kt ...
✔️ Done
⏳ Adding data binding to main layout file...
✔️ Done
⏳ Updating content_main.xml to support data binding
✔️ Done
⏳ Creating dagger activity builder...
✔️ Done
⏳ Creating dagger AppComponent.kt ...
✔️ Done
⏳ Creating network module...
✔️ Done
⏳ Creating ApiInterface.kt ...
✔️ Done
⏳ Creating LogInRequest.kt ...
✔️ Done
⏳ Creating LogInResponse.kt ...
✔️ Done
⏳ Creating UserPrefRepository.kt ...
✔️ Done
⏳ Creating LogInActivity.kt ...
✔️ Done
⏳ Creating LogInViewModel.kt ...
✔️ Done
⏳ Creating LogInHandler.kt ...
✔️ Done
⏳ Creating AuthRepository.kt ...
✔️ Done
⏳ Creating login layout...
✔️ Done
⏳ Creating login related icons
✔️ Done
⏳ Adding login strings to strings.xml
✔️ Done
⏳ Modifying menu_main.xml file
✔️ Done
⏳ Creating dagger AppModule.kt ...
✔️ Done
⏳ Creating dagger ViewModelModule.kt ...
✔️ Done
⏳ Creating SplashViewModel.kt
✔️ Done
⏳ Creating SplashActivity.kt ...
✔️ Done
⏳ Modifying styles.xml to support splash theme
✔️ Done
⏳ Creating splash_bg.xml ...
✔️ Done
⏳ Creating logo icon...
✔️ Done
⏳ Adding color constants to colors.xml
✔️ Done
⏳ Finishing project setup...
✔️ Done

Activity Support

Once you created a new activity, you'll want to create ViewModel, Handler and integrate them with the DataBinding, Activity and with Dagger. To solve this mundane task, you may use the pas flag to Provide Activity Support

Syntax

jaba -pas COMPONENT_NAME

For example,If you want activity support for SomeActivity, you may use below code

jaba -pas SomeActivity

Then it'll do the following

Creation

  • Create ViewModel named SomeViewModel with dagger injection
  • Create Handler named SomeHandler

Integration

  • Integrate SomeViewModel with SomeActivity with dagger-viewmodel-factory
  • Implement SomeHandler in SomeActivity
  • Integrate SomeViewModel and SomeHandler with activity_some.xml (using data binding)

Finalization

  • Add SomeActivity builder in ActivityBuilderModule

  • Add SomeViewModel in ViewModelModule

Known Issues

Code Alignment

Once the code generation has been done, some files will have some alignment issues. To fix this, you may do Code Refactor

  • Click on the Project panel
  • Click on app
  • Press Control + Alt + L (linux)
  • Check Optimize Imports, Rearrange entries and Cleanup code
  • Click 'Run'

This will solve all alignment issues as well as optimization of imports.

Project Structure

Before

.
├── MainActivity.kt

After

.
├── App.kt
├── data
│   ├── local
│   ├── remote
│   │   ├── ApiInterface.kt
│   │   └── login
│   │       ├── LogInRequest.kt
│   │       └── LogInResponse.kt
│   └── repositories
│       ├── AuthRepository.kt
│       └── UserPrefRepository.kt
├── di
│   ├── components
│   │   └── AppComponent.kt
│   └── modules
│       ├── ActivitiesBuilderModule.kt
│       ├── AppModule.kt
│       ├── NetworkModule.kt
│       └── ViewModelModule.kt
├── models
├── ui
│   └── activities
│       ├── login
│       │   ├── LogInActivity.kt
│       │   ├── LogInHandler.kt
│       │   └── LogInViewModel.kt
│       ├── main
│       │   ├── MainActivity.kt
│       │   └── MainViewModel.kt
│       └── splash
│           ├── SplashActivity.kt
│           └── SplashViewModel.kt
└── utils

About

A simple CLI program to convert your android project's structure.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Kotlin 99.6%
  • Shell 0.4%