AYastrebov / Generamba-Templates

VIPER templates for generamba with Swift

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Generamba Template with Dependency inversion (EasyDi or Swinject), Storyboards (Reusable), Routing (LightRoute) and Tests (Quick + Nible)

HOWTO:

  1. Install Generamba

  2. Initialize Generamba in your project's folder and install templates from this repo

  3. open terminal and execute this in the same project's folder:

To use with Swinject

$ generamba gen Module swift_viper_swinject

To use with EasyDi

$ generamba gen Module swift_viper_easydi

The new VIPER Module/Submodule(whatever) will be generated in your project's folder with structure:

Module
  ├── View
  │    ├── ModuleViewInput.swift
  │    ├── ModuleViewOutput.swift
  │    └── ModuleViewController.swift
  ├── Storyboard
  │    └── ModuleModuleStoryboard.storyboard
  ├── Presenter
  │    ├── ModuleModuleInput.swift
  │    └── ModulePresenter.swift
  ├── Interactor
  │    ├── ModuleInteractorInput.swift
  │    ├── ModuleInteractorOutput.swift
  │    └── ModuleInteractor.swift
  ├── Router
  │    ├── ModuleRouterInput.swift
  │    └── ModuleRouter.swift
  └── Assembly
       ├── ModuleAssembly.swift 
       └── ModuleInitializer.swift (EasyDi only)

If you use Swinject, add ApplicationAssembly file:

import Swinject
import SwinjectStoryboard

final class ApplicationAssembly {
    
    //Use default dependency
    class var assembler: Assembler {
        return Assembler([ApplicationModuleAssembly()])
    }
    
    var assembler: Assembler
    
    //If you want use custom Assembler
    init(with assemblies: [Assembly]) {
        assembler = Assembler(assemblies)
    }
}

//Inject dependency in Main Storyboard
extension SwinjectStoryboard {
    
    @objc class func setup() {
        defaultContainer = ApplicationAssembly.assembler.resolver as! Container
    }
}

Russian Federation, Saint-Petersburg, 2019 Yastrebov A.A.

About

VIPER templates for generamba with Swift

License:MIT License


Languages

Language:Liquid 100.0%