All Projects → Applaudo → MaGus

Applaudo / MaGus

Licence: MIT License
iOS Project Generation Tool ✨

Programming Languages

swift
15916 projects

Projects that are alternatives of or similar to MaGus

LongWeekend-iOS
🏖📱 LongWeekend is iOS Application that supports checking long weekends when taking a vacation in Japan
Stars: ✭ 19 (-26.92%)
Mutual labels:  fastlane, xcodegen
Swiftmazing
A iOS application with layout based on App Store that can check the most starred and last updated Swift repository
Stars: ✭ 73 (+180.77%)
Mutual labels:  fastlane, xcodegen
upload dsym to bugly
fastlane plugin upload dSYM/ipa to bugly
Stars: ✭ 26 (+0%)
Mutual labels:  fastlane
Stevenson
Stevenson is a Vapor framework designed to build integrations between Slack apps, GitHub, JIRA and CI services (CircleCI).
Stars: ✭ 57 (+119.23%)
Mutual labels:  fastlane
fastlane-plugin-cosigner
A fastlane plugin to help you sign your iOS builds
Stars: ✭ 25 (-3.85%)
Mutual labels:  fastlane
kmp mobile template
Template for the development of native iOS and Android apps with shared business-logic using KMP, Redux architecture and XcodeGen.
Stars: ✭ 21 (-19.23%)
Mutual labels:  xcodegen
fastlane-plugin-jira release notes
Fastlane Plugin for Jira Release Notes
Stars: ✭ 14 (-46.15%)
Mutual labels:  fastlane
icon-banner
🚩 IconBanner adds custom nice-looking banners over your mobile app icons 📱
Stars: ✭ 18 (-30.77%)
Mutual labels:  fastlane
fastlane-Android-CI
This project demonstrate how we can use fastlane along with CI and automate versioning of Version code and Version name.
Stars: ✭ 22 (-15.38%)
Mutual labels:  fastlane
gitlab-ci-android-fastlane
Docker image for building android apps on Gitlab CI
Stars: ✭ 25 (-3.85%)
Mutual labels:  fastlane
AndroidFastlaneCICD
📱A sample repository to demonstrate the Automate publishing🚀 app to the Google Play Store with GitHub Actions⚡+ Fastlane🏃.
Stars: ✭ 82 (+215.38%)
Mutual labels:  fastlane
TiFastlane
With TiFastlane you'll be able to fully optimize the way you submit your app updates and maintain your certificates and provisioning profiles of all your Titanium Apps.
Stars: ✭ 83 (+219.23%)
Mutual labels:  fastlane
firim
Upload ipa binary to fir.im in fastlane chain
Stars: ✭ 51 (+96.15%)
Mutual labels:  fastlane
my fastlane lanes
No description or website provided.
Stars: ✭ 24 (-7.69%)
Mutual labels:  fastlane
fastlane-plugin-create xcframework
Fastlane plugin that creates xcframework for given list of destinations 🚀
Stars: ✭ 58 (+123.08%)
Mutual labels:  fastlane
fastlane-plugin-versioning android
Android Versioning Plugin for Fastlane
Stars: ✭ 113 (+334.62%)
Mutual labels:  fastlane
fastlane-plugin-google-chat
Send messages to Google Chat
Stars: ✭ 14 (-46.15%)
Mutual labels:  fastlane
fastlane-plugin-xchtmlreport
fastlane plugin for XCTestHTMLReport
Stars: ✭ 17 (-34.62%)
Mutual labels:  fastlane
fastlane-plugins
自创造超实用性 Fastlane 插件和自定义 actions 的聚合仓库
Stars: ✭ 19 (-26.92%)
Mutual labels:  fastlane
fastlane-framer-plugin
A plugin for fastlane that frames your raw screenshots into the beautiful templates you made!
Stars: ✭ 31 (+19.23%)
Mutual labels:  fastlane

MaGus

iOS project generation tool

Summary

MaGus is a command line tool, written in Swift, that generates base files for an iOS project. It creates all base files needed to generate an Xcode project and build tools that will make your development process more efficient.

Files Generated

  • project.json: This is a json file ready to be used along with XcodeGen to generate an XcodeProject.
  • Fastfile: a Ruby file that is used for Fastlane in order to build your app easily from a CI or Command Line..
  • MatchFile: Fastlane's companion tool that helps manage certificates easily and securely..
  • GemFile: a Ruby file that defines the list of dependencies that you will need in order to build the project using Fastlane.
  • AppDelegate, TestFiles and InfoPlist: These files are generated in order to provide the initial files required for a project.

More info about generated files Here

Installation

We currently support the use of Mint as the distribution system.

$ mint install applaudo/MaGus

Usage

MaGus offers the following options from CLI:

USAGE: magus [--name <name>] [--platform <platform>] [--bundle-id <bundle-id>] [--deployment-target <deployment-target>] [--output-path <output-path>] [--team-id <team-id>] [--username <username>] [--spec <spec>] [--interactive]

OPTIONS:
  --name <name>           Specify name of the project
  --platform <platform>   Specify platform of the project (default: iOS)
  --bundle-id <bundle-id> Specify Bundle ID for the project
  --deployment-target <deployment-target>
                          Specify desired deployment target for the project
                          (default: 13.0)
  --output-path <output-path>
                          Specify path where you want to store generated
                          project (default: output)
  --team-id <team-id>     Team Id you will use to sign in your app
  --username <username>   username you will use to sign in certificates and get
                          from developer center
  --spec <spec>           Path to the Spec that you want use to generate
                          project with custom templates
  -i, --interactive       Send flag if you want to use as interactive mode
  -h, --help              Show help information.

If you want to generate a project, run the following command:

magus --name SuperApp --bundle-id com.test.app --deployment-target 13.0 --team-id test --username [email protected]

This will generate all files and a folder named output in the current directory where the command was issued. output.

Then if you want to generate an xcode project use XcodeGen and run:

xcodegen --spec project.json

Extending Usage.

Add to your Package.swift

.package(url: "https://github.com/Applaudo/MaGus.git", .branch("master"))

Then in your Target reference MaGus Like:

.target(name: "MyAwesomeTool", dependencies: ["MaGusKit"]),

MaGus offers you a basic project generation, ready to be used; but sometimes you might want to extend its functionality and add custom templates, or use it inside another tool. Fortunately, MaGus offers you a set of API that will help you to extend it..

First import MaGus

import MaGusKit

Define a template representation using TemplateInformation protocol.

struct MyAwesomeTemplateInformation: TemplateInfomation {
    
    var context: TemplateContext {
        [
        "MyVariable": "Example" 
        ]
    }
       
    var templateName: String { 
         "awesomeTemplate"
    }
      
    var outputFilePath: Path { 
         "MyAwesomePath"
    }
    
    var fileName: String { 
        "AwesomeConfiguration"
    }   
}

Define your template in a multiline string. We don't use files due to lack of resources in Swift Package Manager (Hopefully we could change this when Swift 5.3 lands)

let myAwesomeTemplate =
"""
Awesome_configuration("{{ configuration }}")
"""

Under the hood, MaGus uses Stencil to define and create templates

Then, register your template

Templates.set(key: "MyAwesomeTemplate", template: myAwesomeTemplate)

Now, generate an instance of Project Information and Generator:

let information = ProjectInformation(name: name,
                                     platform: platform,
                                     bundleId: bundleId,
                                     deploymentTarget: deploymentTarget,
                                     username: username,
                                     teamId: teamId,
                                     matchRepo: matchRepo)

let projectGenerator = try ProjectGenerator(outputPath: outputPath,
                                            projectInformation: information)
                                            

With ProjectGenerator instance you are able to do the following in order to generate project files:

    let awesomeTemplateInformation = MyAwesomeTemplateInformation()
    
    /// Generate all of the base templates with your custom ones
    try projectGenerator.generate(for: .allWith(customs: [awesomeTemplateInformation]))
    
    /// Just Generate your custom templates
    try projectGenerator.generate(for: .custom(templates: []))

Contributions

Pull requests and issues are always welcome. Please open any issues and PRs for bugs, features, or documentation.

Credits

Made with ❤️ by Applaudo Studios

Maintainers

Manuel Sanchez - Github - Twitter

Gustavo Campos - Github - Twitter

License

MaGus is licensed under the MIT license. See LICENSE for more info.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].