Skip to content

Commit 563256f

Browse files
committed
DeviceConnectCodegen v1.8.3 のソースコードをコミット。
1 parent 7a9e3ec commit 563256f

File tree

179 files changed

+21658
-1
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

179 files changed

+21658
-1
lines changed

LICENSE.TXT

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
The MIT License (MIT)
2+
3+
Copyright (c) 2017 NTT DOCOMO, INC.
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in
13+
all copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21+
THE SOFTWARE.

README.md

Lines changed: 297 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,297 @@
1-
# DeviceConnect-Codegen
1+
# DeviceConnect Codegen
2+
3+
## はじめに
4+
DeviceConnect Codegenは、DeviceConnectシステム上で動作するプラグインおよびアプリケーションのスケルトンコードを生成するためのコマンドラインツールです。(以下、本ツールと呼びます)
5+
6+
本ツールへの入力として、DeviceConnectプロファイルの定義ファイルを自前で用意しておく必要があります。標準プロファイルについては全API仕様を定義したファイルを提供しますので、適宜編集してください。
7+
8+
### 前提知識
9+
- OpenAPI Specification 2.0
10+
11+
### サポート範囲
12+
本ツールで生成可能なスケルトンコードのタイプは下記のとおりです。
13+
14+
- Androidプラグイン
15+
- iOSプラグイン
16+
- [node-gotapi](https://github.com/futomi/node-gotapi)プラグイン
17+
- HTMLアプリケーション
18+
- DeviceConnectエミュレータ
19+
- DeviceConnectAPIリファレンス
20+
- HTML
21+
- Markdown
22+
23+
## ファイル構成
24+
本ツールはzipで配布されます。圧縮されているファイルの構成は下記のとおりです。
25+
26+
|ファイル名|説明|
27+
|:--|:--|
28+
|bin/deviceconnect-codegen.jar|本ツールのバイナリ。|
29+
|src/deviceconnect-codegen|本ツールのソースコード。|
30+
|standard-profile-specs/*.json|DeviceConnect標準のプロファイル定義ファイル群。|
31+
|samples/android-plugin.sh|Androidプラグインのスケルトンコードを生成するシェルスクリプトのサンプル。|
32+
|samples/ios-plugin.sh|iOSプラグインのスケルトンコードを生成するシェルスクリプトのサンプル。|
33+
|samples/profiles-specs|シェルスクリプトのサンプルに入力するプロファイル定義ファイル群。|
34+
35+
## Get Started
36+
[deviceconnect-codegen-project-1.8.3-dist.zip](https://github.com/TakayukiHoshi1984/DeviceConnect-Experiments/releases/tag/codegen-v1.8.3) をPC上の任意の場所にダウンロードし、解凍してください。
37+
38+
解凍後、ターミナルを起動し、以下のコマンドによりをサンプルのスケルトンコードを生成してください。
39+
40+
生成後の手順については、各出力先のREADME.mdを参照してください。
41+
42+
### Androidプラグインの場合
43+
```
44+
$ cd deviceconnect-codegen-project-X.Y.Z-dist/samples
45+
$ ./android-plugin.sh
46+
```
47+
48+
出力先: samples/output/Android/MyPlugin
49+
50+
### iOSプラグインの場合
51+
```
52+
$ cd deviceconnect-codegen-project-X.Y.Z-dist/samples
53+
$ ./ios-plugin.sh
54+
```
55+
56+
出力先: samples/output/iOS/MyPlugin
57+
58+
### node-gotapiプラグインの場合
59+
```
60+
$ cd deviceconnect-codegen-project-X.Y.Z-dist/samples
61+
$ ./node-plugin.sh
62+
```
63+
64+
出力先: samples/output/NodeJS/node-gotapi-plugin-sample
65+
66+
### HTMLアプリケーションの場合
67+
```
68+
$ cd deviceconnect-codegen-project-X.Y.Z-dist/samples
69+
$ ./html-app.sh
70+
```
71+
72+
出力先: samples/output/html/MyApp
73+
74+
### DeviceConnectエミュレータの場合
75+
```
76+
$ cd deviceconnect-codegen-project-X.Y.Z-dist/samples
77+
$ ./emulator.sh
78+
```
79+
80+
出力先: samples/output/NodeJS/Emulator
81+
82+
### DeviceConnectAPIリファレンス (HTML) の場合
83+
```
84+
$ cd deviceconnect-codegen-project-X.Y.Z-dist/samples
85+
$ ./html-docs.sh
86+
```
87+
88+
出力先: samples/output/html/Device_Connect_RESTful_API_Specification
89+
90+
### DeviceConnectAPIリファレンス (Markdown) の場合
91+
```
92+
$ cd deviceconnect-codegen-project-X.Y.Z-dist/samples
93+
$ ./md-docs.sh
94+
```
95+
96+
出力先: samples/output/html/Device_Connect_RESTful_API_Specification
97+
98+
## リファレンス
99+
100+
### 実行方法
101+
下記のようなJavaコマンドで実行してください。指定可能なオプションは次節参照。
102+
103+
```
104+
java -jar bin/deviceconnect-codegen.jar [オプション]
105+
```
106+
107+
### オプション一覧
108+
109+
<table>
110+
<thead><tr><th>オプション</th><th>説明</th><th>省略</th></tr></thead>
111+
<tbody>
112+
113+
<tr>
114+
<td valign="top"><pre>--lang</pre></td>
115+
<td valign="top">
116+
スケルトン生成対象の指定。下記のいずれかの値を引数とする。
117+
<ul>
118+
<li>Androidプラグイン: deviceConnectAndroidPlugin</li>
119+
<li>iOSプラグイン: deviceConnectIosPlugin</li>
120+
<li>node-gotapiプラグイン: gotapiNodePlugin</li>
121+
<li>HTMLアプリケーション: deviceConnectHtmlApp</li>
122+
<li>DeviceConnectエミュレータ: deviceConnectEmulator</li>
123+
<li>DeviceConnectAPIリファレンス (HTML): deviceConnectHtmlDocs</li>
124+
<li>DeviceConnectAPIリファレンス (Markdown): deviceConnectMarkdownDocs</li>
125+
</ul>
126+
</td>
127+
<td valign="top">-</td>
128+
</tr>
129+
130+
<tr>
131+
<td valign="top"><pre>--input-spec</pre></td>
132+
<td valign="top">
133+
スケルトンコードでサポートするプロファイル仕様の指定。プロファイル仕様定義ファイルへの絶対パスまたは相対パスを引数とする。ファイルの形式はJSON・YAMLのいずれかとする。指定したファイル内にサポートするすべてのAPIを定義すること。
134+
</td>
135+
<td valign="top">*1</td>
136+
</tr>
137+
138+
<tr>
139+
<td valign="top"><pre>--input-spec-dir</pre></td>
140+
<td valign="top">
141+
スケルトンコードでサポートするプロファイル仕様の指定。プロファイル仕様定義ファイルを格納したディレクトリへの絶対パスまたは相対パスを引数とする。各ファイルの形式はそれぞれJSON・YAMLのいずれかとする。ファイル名は <プロファイル名>.<拡張子>であること。
142+
</td>
143+
<td valign="top">*1</td>
144+
</tr>
145+
146+
<tr>
147+
<td valign="top"><pre>--output</pre></td>
148+
<td valign="top">
149+
スケルトンコードの出力先の指定。PC上の任意のディレクトリへの絶対パスまたは相対パスを引数とする。<br>
150+
<br>
151+
存在しないディレクトリが指定された場合は、そのディレクトリを新規で作成する。存在していた場合は、出力内容を強制的に上書きする。
152+
</td>
153+
<td valign="top">-</td>
154+
</tr>
155+
156+
<tr>
157+
<td valign="top"><pre>--display-name</pre></td>
158+
<td valign="top">
159+
<b>[プラグインまたはアプリケーションのみ有効]</b><br>
160+
スケルトンコードの名前の指定。<br>
161+
<br>
162+
プラグインの場合、System APIによって取得できるデバイスプラグインの名前として使用される。アプリケーションの場合、主にアプリケーションのタイトルとして表示する名前として使用される。<br>
163+
<br>
164+
デフォルト値は、プラグインの場合は "MyPlugin"、アプリケーションの場合は "MyApp"。
165+
</td>
166+
<td valign="top">o</td>
167+
</tr>
168+
169+
<tr>
170+
<td valign="top"><pre>--connection-type</pre></td>
171+
<td valign="top">
172+
<b>[Androidプラグインのみ有効]</b><br>
173+
Device Connect Managerとの連携タイプの指定。下記のいずれかの値を引数とする。デフォルト値は、"binder"。
174+
<ul>
175+
<li>broadcast: IntentのブロードキャストによってDevice Connect Managerと通信する。</li>
176+
<li>binder: Device Connect Managerとバインドし、AIDLで定義されたインターフェース経由でIntent形式のメッセージを送受信する。</li>
177+
</ul>
178+
</td>
179+
<td valign="top">o</td>
180+
</tr>
181+
182+
<tr>
183+
<td valign="top"><pre>--package-name</pre></td>
184+
<td valign="top">
185+
<b>[Androidプラグインのみ有効]</b><br>
186+
スケルトンコードのパッケージ名の指定。デフォルト値は、"com.mydomain.myplugin"。
187+
</td>
188+
<td valign="top">o</td>
189+
</tr>
190+
191+
<tr>
192+
<td valign="top"><pre>--template-dir</pre></td>
193+
<td valign="top">
194+
<b>[Androidプラグインのみ有効]</b><br>
195+
Androidプラグインのテンプレートを独自テンプレートに差し替えたい場合に、テンプレートをまとめたディレクトリへのパスを指定する。<br>
196+
<br>
197+
本オプションが省略された場合、本ツールにデフォルトのテンプレートが使⽤される。本オプションによって指定したテンプレートとデフォルトのテンプレートの間でファイル名の衝突が発⽣した場合は、本オプションで指定した⽅が優先される。
198+
</td>
199+
<td valign="top">o</td>
200+
</tr>
201+
202+
<tr>
203+
<td valign="top"><pre>--sdk</pre></td>
204+
<td valign="top">
205+
<b>[Androidプラグインのみ有効]</b><br>
206+
独自テンプレート向けのオプション。<br>
207+
<br>
208+
ソースコードで提供されたDeviceConnect SDKを使用する場合に、そのフォルダへの絶対パスまたは相対パスを指定する。
209+
<br>
210+
<br>
211+
指定した⽂字列は、テンプレート側から {{{sdkLocation}}} という名前で参照可能。デフォルトのテンプレートでは参照されない。
212+
</td>
213+
<td valign="top">o</td>
214+
</tr>
215+
216+
<tr>
217+
<td valign="top"><pre>--signing-configs</pre></td>
218+
<td valign="top">
219+
<b>[Androidプラグインのみ有効]</b><br>
220+
独自テンプレート向けのオプション。<br>
221+
<br>
222+
Androidプラグインのビルド時に使用される署名情報の保存されているフォルダへの絶対パスまたは相対パスを指定する。<br>
223+
<br>
224+
指定した⽂字列は、テンプレート側から {{{signingConfigsLocation}}} という名前で参照可能。デフォルトのテンプレートでは参照されない。
225+
</td>
226+
<td valign="top">o</td>
227+
</tr>
228+
229+
<tr>
230+
<td valign="top"><pre>--gradle-plugin-version</pre></td>
231+
<td valign="top">
232+
<b>[Androidプラグインのみ有効]</b><br>
233+
プラグインのビルドツールとして使⽤するAndroidPlugin for Gradle のバージョン名を指定する。省略された場合は 3.0.0 とする。<br>
234+
<br>
235+
指定した⽂字列は、テンプレート側から {{{gradlePluginVersion}}} という名前で参照可能。デフォルトのテンプレートからも参照される。
236+
</td>
237+
<td valign="top">o</td>
238+
</tr>
239+
240+
<tr>
241+
<td valign="top"><pre>--class-prefix</pre></td>
242+
<td valign="top">
243+
<b>[Androidプラグイン・iOSプラグインの場合のみ有効]</b><br>
244+
出力されるクラス名のプレフィクスの指定。<br>
245+
<br>
246+
標準プロファイルを実装する場合に、SDK側から提供される既定クラスと名前を区別するために使用される。独自プロファイルの場合は適用されない。<br>
247+
<br>
248+
デフォルト値は、 "My"。
249+
</td>
250+
<td valign="top">o</td>
251+
</tr>
252+
253+
</tbody>
254+
</table>
255+
256+
*1: `--input-spec` または `--input-spec-dir` のいずれかを必ず指定すること。両方指定された場合は `--input-spec` が優先される。
257+
258+
## 開発環境
259+
### 開発ツール
260+
- Apache Maven 3.3.9+
261+
- Python 2.x
262+
263+
### ビルド方法
264+
DeviceConnectCodegenのルートディレクトリで下記のコマンドを実行すると、本ツールをビルドできます。
265+
266+
```
267+
$ mvn package
268+
```
269+
270+
ビルドを実行すると、本ツールのバイナリと[配布用zip](#ファイル構成)がそれぞれ下記の場所に出力されます。
271+
272+
|項目|出力先|
273+
|:--|:--|
274+
|バイナリ|DeviceConnectCodegen/bin/deviceconnect-codegen.jar|
275+
|配布用zip|DeviceConnectCodegen/target/deviceconnect-codegen-project-1.8.3-dist.zip|
276+
277+
### バージョン更新
278+
新しいバージョンを開発する場合は、以下のPython 2.x スクリプトで全体的にバージョン設定を書き換えること。
279+
280+
例: バージョン a.b.c に変更する場合
281+
282+
```
283+
$ cd DeviceConnect-Experiments/DeviceConnectCodegen
284+
$ python tools/version.py a.b.c
285+
```
286+
287+
正常に変更された場合は、以下のログが標準出力される。
288+
289+
```
290+
Changed: /(略)/DeviceConnect-Experiments/DeviceConnectCodegen/pom.xml
291+
Changed: /(略)/DeviceConnect-Experiments/DeviceConnectCodegen/modules/deviceconnect-codegen/pom.xml
292+
Changed: /(略)/DeviceConnect-Experiments/DeviceConnectCodegen/README.md
293+
Completed
294+
```
295+
296+
## 参考リンク
297+
- [Swagger](http://swagger.io/)

RELEASENOTE.TXT

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# 変更履歴
2+
2018/12/10: v1.8.2 [共通] swagger-codegen v2.2.3 を使用するように変更。v2.2.1 に関する脆弱性への対処のため。
3+
[Markdown] 不具合修正: GitHub Wikiにアップロードすると各API仕様へのタグジャンプが行えない。
4+
5+
2018/09/27: v1.8.1 [NodeJS] メンテナンス: NodeJS向けに出力するデバイスプラグインのREADMEにServiceInformationを追加
6+
7+
2018/09/12: v1.8.0 [NodeJS] NodeJS向けに出力するデバイスプラグインのソースコードを改善
8+
9+
2018/03/01: v1.6.0 [Android] オプション追加: --gradle-plugin-version, --sdk, --signing-config, --template-dir
10+
[共通] 不具合修正: basePathプロパティでプロファイル名が定義されている場合に異常終了
11+
12+
2017/12/20: v1.5.1 [Markdown][HTML] 不具合修正: APIリファレンスの「概要」が空の状態で出力される
13+
[共通] 不具合修正: input-specオプションにYAML形式のファイルを指定すると異常終了
14+
15+
2017/11/30: v1.5.0 [Android] DeviceConnectManagerへの複数プラグイン同梱仕様対応
16+
[共通] エラーメッセージの詳細化
17+
[共通] 不具合修正: basePathの長さが1のプロファイルを定義した場合に異常終了
18+
[共通] 生成したスケルトンコードにLICENSEファイルを出力しないように修正
19+
20+
2017/08/22: v1.4.0 [Android] 連携タイプを指定するオプション connection-type を追加
21+
[Android] Device Connect SDK v2.3.0 を使用するように変更
22+
23+
2017/06/23: v1.3.0 [Markdown] DeviceConnectAPIリファレンス生成機能を追加
24+
[HTML] レスポンス・イベントのパラメータの説明に「Logical Name」を追加
25+
26+
2017/04/03: v1.2.0 [HTML] DeviceConnectAPIリファレンス生成機能を追加
27+
28+
2017/03/24: v1.1.0 [NodeJS] DeviceConnectエミュレータのスケルトン生成機能を追加
29+
30+
2017/03/13: v1.0.0 [iOS] iOSプラグインのスケルトン生成機能を追加
31+
[HTML] HTMLアプリのスケルトン生成機能を追加
32+
33+
2017/03/09: v0.6.0 [Android] Device Connect SDK v2.0.0 を使用するように変更
34+
[NodeJS] node-gotapiプラグインのスケルトン生成機能を追加
35+
36+
2017/02/21: v0.5.0 YAML形式に対応
37+
input-specパラメータによる1ファイル入力に対応
38+
39+
2017/02/08: v0.4.0 初回リリース (β版)

0 commit comments

Comments
 (0)