Xcodeのヘッダーに挿入されるテンプレートからCopyrightの'年'表示を消す

Xcodeはスバラしい開発環境ですが、ヘッダーに自動で挿入されるCopryrightの年部分が以下のようにYYYY'年'となぜか年のところだけ漢字表記で、とても格好悪いのが気になります。

ES001_01

このCopyright'年'問題を解決する方法の一つとして、

XcodeのCreated byとCopyrightの日付を英語表記にする

のように、Locale設定を米国英語(en_US)にするという手段がありますが、そうすると今度は、Createdの部分がMM/DD/YYと年がフタ桁になり、しかも年が月日の後ろになってしまいます。これもちょっといただけません。

なので、いっそのことテンプレートを書き換えてしまいましょう!ということで、こちらの記事を参考に、

(追記有り)XCodeのファイルに挿入されるコメントが邪魔。変えたい。

Xcodeのテンプレートを書き換えてみました。Xcodeのバージョンは5.0.2を使用しています。

上記記事では、コメント部のテンプレートは、

/Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates

以下のファイルを書き換えていますが、iOS向けには、それだけでは足りなくて、下記のディレクトリ

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates

以下のテンプレートも書き換える必要があるようです。

まずは記事の通り、念のためそれぞれのディレクトリーで、gitを使ってファイル管理しておきます。手動では以下のようにgitでレポジトリを作成してファイルをコミットします。

$ sudo git init
$ sudo git add .
$ sudo git commit -m 'Initial commit'

せっかくなので、今後のXcodeのバージョンアップや、ベータ版がリリースされた場合でも手間がかからないように、簡単なShell scriptを用意しておきます。

#! /bin/sh

XCODE="Xcode"  
BASE="/Applications/${XCODE}.app/Contents/Developer"

for i in ${BASE}/Library/Xcode/Templates ${BASE}/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates  
do  
echo "git init ${i}..."  
cd ${i}  
if [ ! -d ./.git ];then  
  sudo git init
  sudo git add .
  sudo git commit -m 'Initial commmit'
fi  
done

このファイルをxcode-copyright-git-init.shなどとして保管しておくことで、簡単にgitの初期化ができるようになります。

さて、テンプレートの内容の置換ですが、Cのヘッダーファイルのテンプレートはこのようになっています。

//
//  ___FILENAME___
//  ___PROJECTNAME___
//
//  Created by ___FULLUSERNAME___ on ___DATE___.
//___COPYRIGHT___
//

今回は___COPYRIGHT___の部分を置き換えますので、perlのone linerとfindを組み合わせて、

sudo find * -type f -exec perl -pi -e "s/___COPYRIGHT___/  Copyright(c) 2014 Enamel Systems. All rights reserved./" {} \;  

などとします。この作業も今後のことを考えてShell script化しておきましょう。

#! /bin/sh

## Xcode
XCODE=Xcode

## Copyright string.
COPYRIGHT="Copyright (c) 2014 Enamel Systems. All rights reserved."

## Base directory which has Xcode header template.
BASE="/Applications/${XCODE}.app/Contents/Developer"

for i in ${BASE}/Library/Xcode/Templates ${BASE}/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates  
do  
echo "Replacing copyright ${i}..."  
cd ${i}  
sudo find * -type f -exec perl -pi -e "s/___COPYRIGHT___/  ${COPYRIGHT}/" {} \;  
done  

この作業をした後に、Xcodeで新しいファイルを追加すると、めでたくヘッダーのCOPYRIGHT部分が置き換わっていることが分かります。

//
//  ESBeaconReceiveController.m
//  ESBeacon
//
//  Created by Enamel Systems on 2013/12/28.
//  Copyright (c) 2014 Enamel Systems. All rights reserved.
//

もし作業に失敗したり、もとの環境に戻したい時は、gitで最初の状態をcheckoutします。

$ sudo git checkout .

これまでと同様のこの作業もShell script化しておきましょう。

#! /bin/sh

## Xcode
XCODE=Xcode  
BASE="/Applications/${XCODE}.app/Contents/Developer"

for i in ${BASE}/Library/Xcode/Templates ${BASE}/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates  
do  
echo "Checking out ${i}..."  
cd ${i}  
sudo git checkout .  
done

こうしてめでたく、gitによるファイル管理、COPYRIGHT部分の置き換え、オリジナルファイルのcheckoutがShell scriptで自動化できました。今回用意したShell scriptを以下のgithubに公開しました。

github: EnamelSytems/Xcode-scripts

スクリプトですが、全部で3種類あり、




xcode-copyright-git-init.shgitレポジトリ初期化
xcode-copyright-original-checkout.shオリジナルファイルの復元
xcode-copyright-replace.sh___COPYRIGHT___の置換

となっていますので、もし興味をもたれた方は是非ご活用ください。