コード管理
CLIコマンド
bm pull

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.tstype.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で作成したアクションをコード管理に取り込む

  1. Web UIでアクションに識別子を設定する
  2. ローカルでbm pullを実行する
  3. 生成されたファイルと設定ファイルへの追記内容を確認する
  4. 必要に応じてリファクタリングや型チェックを実施する
  5. 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"],
    },
  },
});