Force.com CLIをインストールして試してみた

開発者の方は、Force.comのデータベースをいちいちブラウザを開いたりせずにコマンドラインから確認・操作したいと思う事があるかもしれません。

試してみました。

Go

go言語環境

Force.com CLIはGOで動作しているので、go言語が動くようにする。

Homebrewによるインストール

homebrew自体をアップデートしてインストールする。

$ brew update
$ brew install go

確認

$ go version
go version go1.4.2 darwin/amd64

$GOPATH

パッケージ管理のためのパスを通すよう。
$HOME/.go/${GO_VERSION}のパスにするのがいいようなんで、それにならう。

$ mkdir -p ~/.go/1.4/

zsh使ってるので、.zshrcにパスを追加。

export GOPATH=$HOME/.go/1.4
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

再読み込みしておく。

$ source ~/.zshrc

Mercurial

Mercurial(マーキュリアル)は、クロスプラットフォームの分散型バージョン管理システム。 Pythonで実装されている(ただし、バイナリdiffに関してはC言語で実装されている)。 Mercurialはコマンドラインプログラムである。 全てのコマンドは hgで始まる。
http://ja.wikipedia.org/wiki/Mercurial

Python

Pythonで動作するとのことなので、Pythonが必要。
自分の環境には入っていた。

$ python -V
Python 2.7.9

必要な場合は、homebrewでインストール出来るよう。

$ brew install python

pip

あと、パッケージ管理のためにpipが必要。
これも入っていた。

$ pip -V
pip 6.1.0 from /usr/local/lib/python2.7/site-packages/pip-6.1.0-py2.7.egg (python 2.7)

インストールする場合は以下。

$ brew install pip

ただ、最新版ではなさそうだったので、アップデート。

$ pip install --upgrade pip

アップデート出来た。

$ pip -V
pip 7.0.1 from /usr/local/lib/python2.7/site-packages (python 2.7)

Mercurialのインストール

で、ようやく、Mercurialのインストール。

$ pip install --upgrade pip
...
Successfully installed mercurial-3.4

これでようやく整った。

Force.com CLI

インストール

$ go get -u github.com/heroku/force

エラーが出た。

1
2
.go/1.4/src/github.com/ddollar/config/windows.go:8: (*Config).homeDirectory redeclared in this block
  previous declaration at .go/1.4/src/github.com/ddollar/config/posix.go:9

エラー回避

どうやら関連プラグイン?のとあるファイルが悪さをしているとかなんとか。
以下にあるファイルをリネームして退避させておく。

$ cd /Users/YOUR_NAME/.go/1.4/src/github.com/ddollar/config
$ mv windows.go _windows.go
$ go get .

これでエラーが回避された状態でプラグイン?のインストールが完了したので、
あらためてインストール。

$ go get -n github.com/heroku/force

入った。

Compiling from source not working · Issue #138 · heroku/force

ログイン

$ force login

以下のように認証を求められるので、許可。

許可すると以下の画面になって接続完了。

$ force login
Logged in as 'YOUR-EMAIL'

SELECT

とりあえず、select文でデータ取得

1
2
3
4
5
6
$ force query 'SELECT ID, NAME FROM Lead'
 Id                 | Name
--------------------+---------------------
 00Q1000000DnnMvEAJ | Boxer Bertha
 00Q1000000DnnMwEAJ | Cotton Phyllis
 ...

カスタム項目の追加

コマンドからカスタム項目の追加も可能。
だけど、エラーが。

$ force field create User__c Due:DateTime
Attrs:  <invalid Value>
panic: reflect: call of reflect.Value.Type on zero Value
...

どうやら、型名を小文字で入れる必要があるよう。
Error when calling force field create · Issue #52 · heroku/force

1
2
3
4
5
6
7
8
9
10
11
$ force field create User__c Due:datetime
Attrs:  <main.DatetimeFieldRequired Value>

      <metadata xsi:type="CustomField" xmlns:cmd="http://soap.sforce.com/2006/04/metadata">
          <fullName>User__c.Due__c</fullName>
          <label>Due</label>
          <type>DateTime</type>
      </metadata>

Not done yet.  Will check again in five seconds.
Custom field created

この指定方法だと、フィールド名とAPI参照名を別々に出来ない、、かも。

利用方法

$ force

でヘルプを表示。
さらに、コマンドをそのまま打つと使いと例も表示してくれる。
先ほどの、fieldだとこんな感じ。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ force field
Usage: force field

Manage sobject fields

Usage:

  force field list <object>
  force field create <object> <field>:<type> [<option>:<value>]
  force field delete <object> <field>
  force field type
  force field type <fieldtype>

Examples:

  force field list Todo__c
  force field create Inspection__c "Final Outcome":picklist picklist:"Pass, Fail, Redo"
  force field create Todo__c Due:DateTime required:true
  force field delete Todo__c Due
  force field type     #displays all the supported field types
  force field type email   #displays the required and optional attributes

参考

Force.com CLI
Force.com CLI – コマンドラインインタフェース | Salesforce Developers Japan Blog
Salesforce – ターミナルからApexを実行できるforce.com CLIの使い方 – Qiita
golang の環境作った – ちなみに
Macでgo言語開発環境を作る – Qiita
homebrewを使ってMercurialをインストールする | Ken's blog @teaplanet
Python – Macでpipのアップデートでエラー – Qiita

   このエントリーをはてなブックマークに追加