Skip to content
This repository has been archived by the owner on Apr 12, 2023. It is now read-only.

ライセンス通知を追加するツールを作成 #236

Open
wants to merge 11 commits into
base: feature/license_tools
Choose a base branch
from

Conversation

Takym
Copy link
Contributor

@Takym Takym commented Jun 13, 2021

Issue 番号

目的

  • ライセンス通知をファイルの先頭に追加してくれるツールを作成しました。
  • 現段階では C# ソースファイルにのみ対応しています。 → リポジトリ内の多くのファイルに対応しています。

破壊的変更をもたらしますか

[ ] Yes
[x] No

Pull Request の種類

[ ] Bugfix
[x] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[x] Documentation content changes
[ ] Other... Please describe:

検証方法

コードの入手

git clone https://github.com/Takym/cocoa.git
cd cocoa
git checkout tools/header
dotnet restore

コードの検証

cd Tools
AddLicenseHeader

確認事項

  • 予めC#インタラクティブ(csi.exe)へパスを通しておく必要があります。
  • Linux で実行する場合は dotnet-script をインストールする必要があります。
  • 現在は Windows でのみ実行できます。 → Linux にも対応しました。

Internal IDs:

  • NFR 2704

@Takym
Copy link
Contributor Author

Takym commented Jun 13, 2021

C# インタラクティブではなく dotnet-script を使う形に変更します。

@Takym
Copy link
Contributor Author

Takym commented Jun 13, 2021

Linux 向けに dotnet-script を利用したシェルスクリプトを作成しました。
dotnet-script は事前にインストールしておく必要があります。

@Takym
Copy link
Contributor Author

Takym commented Jun 14, 2021

実際に AddLicenseHeader を適用したものはこちらになります。(一部のファイルは手動で修正しています。)

https://github.com/Takym/cocoa/tree/tools/header_applied
#245

@Takym
Copy link
Contributor Author

Takym commented Jun 21, 2021

非 Windows 環境では #237 を使用する事にして、こちらのPRでは Windows 限定で対応する事とします。

Copy link
Contributor Author

@Takym Takym left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

コードの説明を書きました。ご確認宜しくお願いします。

Tools/AddLicenseHeader.csx Outdated Show resolved Hide resolved
Comment on lines 38 to 41
var result = AddHeader(data, ext switch {
// 拡張子毎にライセンス通知の書式を設定する。
".cs" => CreateCStyleHeader,
".csx" => CreateCStyleHeader,
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ここでファイル毎の書式を設定しています。

Tools/AddLicenseHeader.csx Outdated Show resolved Hide resolved
Comment on lines 84 to 86
public const string XML_HEADER_1 = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>";
public const string XML_HEADER_2 = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
public const string SH_HEADER = "#!/bin/bash";
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ライセンス通知より前に記述する必要のあるヘッダーの定義です。

Comment on lines 88 to 90
const string HEADER_LINE_1 = "This Source Code Form is subject to the terms of the Mozilla Public";
const string HEADER_LINE_2 = "License, v. 2.0. If a copy of the MPL was not distributed with this";
const string HEADER_LINE_3 = "file, You can obtain one at https://mozilla.org/MPL/2.0/.";
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ライセンス通知の定義です。

Comment on lines 126 to 162
/// <summary>C言語のブロックコメントと同じ書式で記述できる言語用のライセンス通知を作成する</summary>
public static string CreateCStyleHeader(string line1, string line2, string line3)
{
return "/* " + line1 + "\n * " + line2 + "\n * " + line3 + " */\n";
}

/// <summary>XMLのコメントと同じ書式で記述できる言語用のライセンス通知を作成する</summary>
public static string CreateXMLStyleHeader(string line1, string line2, string line3)
{
return XML_HEADER_1 + "\n<!-- " + line1 + "\n - " + line2 + "\n - " + line3 + " -->\n";
}

/// <summary>XMLのコメントと同じ書式で記述できる言語用のライセンス通知を作成する</summary>
/// <remarks>XML宣言とライセンス通知の間に空行を挿入する</remarks>
public static string CreateXMLStyleHeaderWithAlign(string line1, string line2, string line3)
{
return XML_HEADER_2 + "\n\n\n<!-- " + line1 + "\n - " + line2 + "\n - " + line3 + " -->\n";
}

/// <summary>バッチファイル用のライセンス通知を作成する</summary>
public static string CreateBatchFileStyleHeader(string line1, string line2, string line3)
{
return "@REM " + line1 + "\n@REM " + line2 + "\n@REM " + line3 + "\n";
}

/// <summary>シェルスクリプト用のライセンス通知を作成する</summary>
/// <remarks><c>Shebang</c> を挿入する</remarks>
public static string CreateShellScriptStyleHeaderWithShebang(string line1, string line2, string line3)
{
return SH_HEADER + "\n" + CreateShellScriptStyleHeader(line1, line2, line3);
}

/// <summary>シェルスクリプトのコメントと同じ書式で記述できる言語用のライセンス通知を作成する</summary>
public static string CreateShellScriptStyleHeader(string line1, string line2, string line3)
{
return "# " + line1 + "\n# " + line2 + "\n# " + line3 + "\n";
}
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ファイル毎に合わせたライセンス通知を生成しています。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

40〜53行目から参照されています。

Comment on lines 164 to 176
/// <summary>除外設定</summary>
public static bool Ignore(string file)
{
return file.EndsWith(".designer.cs")
|| file.EndsWith(".Designer.cs")
|| file.EndsWith(".feature.cs")
|| file.Contains("Xamarin.ExposureNotification")
|| file.Contains("bin")
|| file.Contains("Bin")
|| file.Contains("obj")
|| file.Contains("Obj")
|| file.Contains(".github");
}
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

除外するファイルを指定しています。

@cocoa-dev cocoa-dev added the confirmed 開発内部管理用 label Jun 28, 2021
@keiji keiji changed the base branch from develop to feature/license_tools July 6, 2021 07:45
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
confirmed 開発内部管理用
Projects
None yet
Development

Successfully merging this pull request may close these issues.

ライセンス通知の自動付与ツールを作成する
2 participants