経緯
アーキテクチャはVIPER。
手作業でフォルダやそれぞれのファイルを作成していた。(プロジェクトでは1つのモジュールに6ファイル)
Generambaの導入をそれとなく伝えてみたが、通らず…
仕方がないので、それっぽくファイルと定型文の作成をライブラリに頼らず行う。
やり方
Makefileで指定のパスにファイルの生成。さらに生成したファイルにコメントなどを追加する
Makefile
# Makefileのターゲット内に複数行の文字列を持つことが出来ないので、defineを使う
define text
//
// $(FILE_NAME)
// プロジェクト名
//
// Created by 名前 on $(DATE).
//
import Foundation
class $(CLASS_NAME) {}
endef
export text
DATE:=$(shell date "+%Y/%m/%d")
.PHONY: create-module
create-module:
touch $(PATH)/$(MODULE_NAME)View.swift
make add-template-text PATH=$(PATH) FILE_NAME=$(MODULE_NAME)View.swift CLASS_NAME=$(MODULE_NAME)View DATE=$(DATE)
touch $(PATH)/$(MODULE_NAME)Interactor.swift
make add-template-text PATH=$(PATH) FILE_NAME=$(MODULE_NAME)Interactor.swift CLASS_NAME=$(MODULE_NAME)Interactor DATE=$(DATE)
touch $(PATH)/$(MODULE_NAME)Presenter.swift
make add-template-text PATH=$(PATH) FILE_NAME=$(MODULE_NAME)Presenter.swift CLASS_NAME=$(MODULE_NAME)Presenter DATE=$(DATE)
touch $(PATH)/$(MODULE_NAME)Entity.swift
make add-template-text PATH=$(PATH) FILE_NAME=$(MODULE_NAME)Entity.swift CLASS_NAME=$(MODULE_NAME)Entity DATE=$(DATE)
touch $(PATH)/$(MODULE_NAME)Router.swift
make add-template-text PATH=$(PATH) FILE_NAME=$(MODULE_NAME)Router.swift CLASS_NAME=$(MODULE_NAME)Router DATE=$(DATE)
.PHONY: add-template-text
add-template-text:
echo "$$(text)" >> $(PATH)/$(FILE_NAME)
作成したMakefileを適当な場所(自分ははホームディレクトリ)に置いておく。
Makefileが置いてあるパスで以下のコマンドを実行すれば、ファイルの作成とコメントなどは入っている状態になる
make create-module PATH=モジュールを作成したいディレクトリ MODULE_NAME=モジュール名
例: make create-module PATH=/Users/ユーザ名/Desktop/Hoge MODULE_NAME=hogeFuga
PATHに渡す部分は~を使うとエラーになるのでフルパスで指定する必要がある。
なおかつ、ファイルの生成を行うディレクトリが存在しないとエラーになるため、あらかじめフォルダを作成しておく必要がある。
その他、protocolの宣言など、defineを使えばもっと正確にGenerambaに近づけられることは可能。
1つ1つファイルを生成して、クラス名書いてーみたいなことをしていたのが、多少は楽になったのでヨシッ!とする。
参考文献