drush
(サイトを管理するためのコマンドラインツールdrupal
)をMAMPおよびMAMP Proと統合し、テスト用の仮想ホストの作成を自動化できるようにしたかったので、私は同様の考えを持っていました。
MAMP Proに手動で追加した情報はファイルに保存され、テンプレートファイルに基づいてファイルを~/Library/Preferences/de.appsolute.mamppro.plist
変更/作成するために使用されます。実際には、テンプレートファイルはに保存され、生成されたファイルはに保存されます(このフォルダと同様にチェックしてください)。/etc/hosts
httpd.conf
~/Library/Application Support/appsolute/MAMP PRO/templates
Library/Application Support/appsolute/MAMP PRO/
httpd.conf
hosts
手動で変更を保存して再起動するたびにMAMPによって生成されるため、これらのファイルを編集しても意味がありません(詳細は調べていませんが、手動で編集しようとしたときに希望がなかったことを覚えています) 。
あなたがする必要があるのは、plist
ファイルde.appsolute.mamppro.plist
を直接編集することです。ファイルの読み取りと書き込みは、をplist
使用して実行できますPlistBuddy
(/usr/libexec/PlistBuddy
を参照man PlistBuddy
)。
plist
次のコマンドを使用して、ファイル内の情報を抽出できます。
/usr/libexec/PlistBuddy -c Print ~/Library/Preferences/de.appsolute.mamppro.plist
このコマンドを使用した仮想ホストの一般的な(単一の)レコードは、次のようになります。
Dict {
MultiViews = false
documentRoot = /home/test/openpublish-2.3
Order = 0
ExecCGI = false
serverAliases = Array {
}
dyndns = Dict {
displayName = -
}
serverName = openpublish-2.3
FollowSymLinks = true
AllowOverride = 0
local = true
Allow = 0
Includes = true
Indexes = false
SymLinksifOwnerMatch = false
}
ここでdocumentRoot
、およびserverName
は各仮想ホストに必要な主な値です。出力をxmlplistの形式にする場合は、次の-x
オプションを追加します。
/usr/libexec/PlistBuddy -x -c Print ~/Library/Preferences/de.appsolute.mamppro.plist
上記の単一のレコードは、次の構造を持つ配列内の多くのレコードの1つです。
virtualHosts = Array {Dict {... VirtualHost1の値...}Dict{... VirtualHost2の値...}Dict{... etc ...}}
上記のコマンドはファイル全体を吐き出しplist
ます。マニュアルページだけを使用して、配列に焦点を当てる方法や、配列の2番目(レコード)をvirtualHosts
言う方法を見つけるのは長い苦痛でした。Plistの操作に関するこのページのおかげで、私はそれを正しく理解しました(次のコマンドではその部分をスキップします)。配列全体にアクセスするには、次のコマンドを使用します。Dict
virtualHosts
/usr/libexec/
virtualHosts
PlistBuddy -c "Print :virtualHosts" ~/Library/Preferences/de.appsolute.mamppro.plist
2番目のレコードを印刷するには:
PlistBuddy -c "Print :virtualHosts:2" ~/Library/Preferences/de.appsolute.mamppro.plist
documentRoot
5番目のvirtualHosts
レコードのを印刷するには:
PlistBuddy -c "Print :virtualHosts:5:documentRoot" ~/Library/Preferences/de.appsolute.mamppro.plist
man
ページによると、PlistBuddy -c Add entry type [value]
あなたのためにトリックを行う(つまり、必要なレコードを追加/書き込む)ので、上記の情報をマニュアルページおよびリンクと組み合わせることで問題を解決できます(リンクは、スクリプトを作成する場合に役立ちます) )。
自動スクリプトはまだ完成していませんが(drush
コードインphp
またはbash
スクリプトが私の好みです)、次の点が役立つと思います。
何よりもまず、テストを行う場合は、最初にバックアップを作成するか、de.appsolute.mamppro.plist
このファイルをコピーして、コピーに対してすべてのテストを実行するようにしてください。したがって、以下では、端末を使用していて、コマンドのエイリアスを作成し、plist
次のようにファイルをコピーしていると仮定します。
$ alias PlistBuddy="/usr/libexec/PlistBuddy"
$ cp ~/Library/Preferences/de.appsolute.mamppro.plist safe_to_play.plist
アレイに新しいDict
ものを追加するには:virtualHosts
PlistBuddy -c "Add :virtualHosts: dict" safe_to_play.plist
新しい仮想ホストエントリのインデックスを見つけるには、次のようにします(bash
スクリプトを想定)。
PlistBuddy -c "Print :virtualHosts: dict" safe_to_play.plist | grep documentRoot | wc -l
documentRoot
この新しいレコードのエントリを追加するには、次のようにします。
PlistBuddy -c "Add :virtualHosts:XXX:documentRoot string /home/path" safe_to_play.plist
ここXXX
で、はプレビューコマンドから出力される行番号です(配列のインデックスは0で始まるため)。
もちろん、構造とタイプを尊重していることを確認して、すべてのエントリ(など)に対してこれを繰り返す必要があります(FollowSymLinks
単一serverName
のエントリに配列と整数と文字列がありますDict
)。最後になりましたが、変更を有効にするには、MAMP Pro(または少なくともサーバー)を再起動する必要があります~/Library/Preferences/de.appsolute.mamppro.plist
。もう一度plist
ファイルをバックアップしてください!!!
これが、必要なスクリプトの作成に役立つことを願っています。