bm pull
Web管理のアクション・ビューと自動生成ファイルを、現在のリポジトリへ取り込むコマンドです。
bm pullは、ベースマキナ上に存在するアクション・ビューのうち、設定ファイルにまだ含まれていないWeb管理のものを対象にします。取り込んだ内容はローカルファイルとして生成されるだけで、ベースマキナの環境には反映されません。内容を確認してPRに含め、必要に応じてbm syncで反映してください。
ローカル端末で実行する場合は、事前にbm loginでログインしてください。bm pullは書き込み前に対話確認を実施するため、通常はローカル端末で実行します。
# Web管理の未取り込みアクションを取り込む
bm pull
# 設定ファイルのパスを指定する
bm pull --config apps/admin/basemachina.config.tsオプション
| オプション | デフォルト値 | 説明 |
|---|---|---|
--config <path> | basemachina.config.ts | 設定ファイルのパス |
取り込まれる内容
bm pullは、対象プロジェクトの現在の状態を読み取り、以下のファイルを生成または更新します。
| 対象 | 書き込み方法 | 説明 |
|---|---|---|
src/actions/<id>.ts | 新規作成のみ | Web管理アクションの定義ファイル。すでに同じパスが存在する場合は中断する |
| JavaScriptアクションコード | 新規作成のみ | JavaScriptアクションの場合、src/actions/js-action-codes/<id>.jsにコード本体を生成する |
src/views/<id>.ts | 新規作成のみ | Web管理ビューの定義ファイル。すでに同じパスが存在する場合は中断する |
| コードエディターのビューコード | 新規作成のみ | コードエディターのビューの場合、src/views/view-codes/<id>.jsxにコード本体を生成する |
src/bm-refs.ts | 自動更新 | レビュー設定、データソース、グループ、通知方法などを型安全に参照するための定数 |
type.d.ts | 自動更新 | @basemachina/actionの型登録ファイル |
| 設定ファイル | 追記 | 取り込んだアクションのimportとactions配列、ビューのimportとviews配列への追加 |
自動更新対象のsrc/bm-refs.tsとtype.d.tsは、内容に差分がある場合のみ書き換えられます。アクション・ビューの定義ファイルとコード本体は新規作成のみで、既存ファイルは上書きされません。
対象になるアクション
bm pullの対象になるのは、次の条件を満たすアクションです。
- Web管理のアクションである
- 識別子が設定されている
- 設定ファイルの
actions配列に同じ識別子のアクションがまだ含まれていない - コード管理で生成できるアクション種別である
すでに設定ファイルに含まれているアクションは、Web UIで変更されていてもbm pullの取り込み対象にはなりません。設定ファイルの内容で戻したい場合はbm syncを実行し、Web UIでの変更を反映したい場合は設定ファイルを手動で更新してください。
識別子が未設定のアクションはスキップされます。取り込み後、識別子未設定のWeb管理アクションが残っている場合は、識別子の一括設定画面を開くかどうか確認されます。
対象になるビュー
ビューの対象条件はアクションとほぼ同じです。
- Web管理のビューである
- 設定ファイルの
views配列に同じ識別子のビューがまだ含まれていない - コード取得設定が有効なコードエディターのビューではない
コード取得設定が有効なビューは、ダウンロードの時点で除外されるため取り込み対象にはならず、実行結果にも表示されません。コード管理では扱えないため、引き続きWeb UIとコード取得設定で管理してください。
参照しているアクションが削除されている、または参照先のアクションに識別子が設定されていないビジュアルエディターのビューもスキップされますが、こちらは実行結果にスキップ理由として表示されます。
設定ファイルのviews配列が1つも存在せず、かつ取り込めるWeb管理のビューが存在する場合、bm pullは実行前にWeb 管理のビュー N 件も取り込みますか?と確認します。nを選ぶとビューは一切取り込まれず、アクションのみが取り込み対象になります。設定ファイルのviews配列にすでに1件でもビューが存在する場合は、この確認は実施されずビューも通常どおり取り込まれます。
実行結果の出力
実行すると、取り込み予定の内容がサマリーとして表示されます。
## bm pull で以下の変更を取り込みます
### 取り込み内容
- Web 管理で識別子が設定されているアクション: 1 件
- Web 管理で識別子が設定されているビュー: 1 件
- 書き込み予定ファイル: 4 件
<details><summary>Web 管理で識別子が設定されているアクション (1 件)</summary>
- ユーザー一覧 (list-users)
</details>
<details><summary>Web 管理で識別子が設定されているビュー (1 件)</summary>
- ユーザー一覧 (user-list)
</details>
<details><summary>書き込み予定ファイル (4 件)</summary>
- src/actions/list-users.ts
- src/views/user-list.ts
- src/views/view-codes/user-list.jsx
- src/bm-refs.ts
</details>対象が0件の場合は、該当する<details>ブロックの代わりにWeb 管理で識別子が設定されているアクションはありません。のような文が表示されます。ダウンロードをスキップしたアクション・ビューがある場合は、それぞれ理由付きで別の<details>ブロックに表示されます。
内容を確認したあと、bm pull の変更を適用しますか?にyまたはyesで回答するとファイルが書き込まれます。nを選ぶか、対話入力できない環境で実行した場合は、変更は適用されません。
よくある使い方
Web UIで作成したアクションをコード管理に取り込む
- Web UIでアクションに識別子を設定する
- ローカルで
bm pullを実行する - 生成されたファイルと設定ファイルへの追記内容を確認する
- 必要に応じてリファクタリングや型チェックを実施する
- PRを作成し、レビュー後に
bm syncでコード管理へ移行する
参照IDの定数を更新する
レビュー設定、データソース、グループ、通知方法、マスターデータ取得設定、プロジェクトユーザーなどをWeb UIで追加・変更した場合は、bm pullを実行するとsrc/bm-refs.tsが再生成されます。
import { defineAction } from "@basemachina/sdk/oac";
import { dataSources, notificationMethods } from "../bm-refs";
export const action = defineAction({
id: "notify-users",
name: "ユーザー通知",
type: "grpc",
dataSource: dataSources["orders-service"],
fullMethodName: "orders.OrderService/NotifyUsers",
notificationSettings: {
onSuccess: {
notificationMethodId: notificationMethods["Slack"],
},
},
});