Code Monkey home page Code Monkey logo

force's Introduction

force CLI v1.0.3

A command-line interface to force.com

Installation

Precompiled Binaries

Can be downloaded from the Current Release Page or by visiting the CLI Home Page.

Compile from Source
$ go get -u github.com/ForceCLI/force

Usage

See docs/force.md for all supported commands.

Tab completion simplifies use of the force CLI. Enable bash completion or see force completion --help for other options.

$ source <(force completion bash)
Usage:
  force [command]

Available Commands:
  active       Show or set the active force.com account
  apex         Execute anonymous Apex code
  apiversion   Display/Set current API version
  bigobject    Manage big objects
  bulk         Load csv file or query data using Bulk API
  completion   Generate the autocompletion script for the specified shell
  create       Creates a new, empty Apex Class, Trigger, Visualforce page, or Component.
  datapipe     Manage DataPipes
  describe     Describe the object or list of available objects
  eventlogfile List and fetch event log file
  export       Export metadata to a local directory
  fetch        Export specified artifact(s) to a local directory
  field        Manage SObject fields
  help         Help about any command
  import       Import metadata from a local directory
  limits       Display current limits
  log          Fetch debug logs
  login        force login [-i=<instance>] [<-u=username> <-p=password>] [-scratch] [-s]
  logins       List force.com logins used
  logout       Log out from Force.com
  notify       Should notifications be used
  oauth        Manage ConnectedApp credentials
  open         Open a browser window, logged into an authenticated Salesforce org
  package      Manage installed packages
  password     See password status or reset password
  push         Deploy metadata from a local directory
  query        Execute a SOQL statement
  quickdeploy  Quick deploy validation id
  record       Create, modify, or view records
  rest         Execute a REST request
  security     Displays the OLS and FLS for a given SObject
  sobject      Manage standard & custom objects
  test         Run apex tests
  trace        Manage trace flags
  usedxauth    Authenticate with SFDX Scratch Org User
  version      Display current version
  whoami       Show information about the active account

Flags:
  -a, --account username   account username to use
  -h, --help               help for force

Use "force [command] --help" for more information about a command.

login

When you login using the CLI a record of the login is saved. Eventually your token will expire requiring re-authentication. The default login is for all production instances of salesforce.com. Two predefined non-production instances are available using the test and pre aliases. You can set an arbitrary instance to log in to by specifying the instance url in the form of subdomain.domain. For example login-blitz.soma.salesforce.com.

  force login                           # log in to last environment
  force login -i=login                  # log in to production or developer org
  force login -i=test                   # log in to sandbox org
  force login -i=pre                    # log in to prerelease org
  force login -u=un [-p=pw]             # log in using SOAP. Password is optional
  force login -i=test -u=un -p=pw       # log in using SOAP to sandbox org. Password is optional
  force login -i=<instance> -u=un -p=pw # internal only

logout

Logout will delete your authentication token and remove the saved record of that login.

  force logout [email protected]

logins

Logins will list all the user names that you have used to authenticate with the instance URL associated with each one. The active login will be indicated behind the login name in red.

  force logins

active

Active without any arguments will display the currently acctive login that you are using. You can also supply a username argument that will set the active login to the one corresponding to the username argument. Note, just because you set a login as active, does not mean that the token is necessarily valid.

  force active
  force active -a [email protected]

whoami

Whoami will display detailed user information about the currently active logged in user. This is Force.com specific information.

  force whoami

sobject

Sobject command gives you access to creating and deleting schema objects. The list argument will list ALL of the objects, both standard and custom, in your org.

  force sobject list
  force sobject create <object> [<field>:<type>]...
  force sobject delete <object>

field

Field gives you the ability to create, list and delete the fields on an object. Fields need to be created one at a time. You can also set required and optional attributes for the type of field. All defaultable field attributes will be defaulted based on the defaults in the web UI.

  force field list Todo__c
  force field create Todo__c Due:DateTime required:true
  force field delete Todo__c Due

push

Push gives you the ability to push specified resources to force.com. The resource will be pulled from ./metatdata/{type}/

  force push -t(ype) StaticResource -n(ame) MyResource.resource
  force -type ApexClass -name MyClass.cls
  force -t ApexPage -n MyPage.page

You can also push all of a specific type of resource from a given folder.

  force push -t StaticResource -f metadata/staticresources/
  force push -t ApexClass -f metadata/classes/
  force push -t ApexPage -f metadata/pages/

import

Import allows you to import code from local directory. This makes a lot of senses when you want to import code from local directory to a brand new org. This import method import codes from metadata folder not from your src folder

Make sure you have the metadata folder, in case you only have src folder, simply replicate it

force import

Sample folder structure


|-metadata
|  |-aura
|  |-corsWhitelistOrigins
|  |-remoteSiteSettings
|  |-staticresources
|  |package.xml

export

Export allows you to fetch all codes from your org to local machine. This command will export all the codes to a local folder called src

force export

|-src
|  |-aura
|  |-corsWhitelistOrigins
|  |-remoteSiteSettings
|  |-staticresources
|  |package.xml

notify

Includes notification library, gotifier, that will display notifications for using either Using terminal-notifier on OSX or notify-send on Ubuntu. Currently, only the push and test methods are displaying notifications.

limits

Limits will display limits information for your organization.

  • Max is the limit total for the organization
  • Remaining is the total number of calls or events left for the organization

The list is limited to those exposed by the REST API.

  force limits      

apiversion

Set the API version to be used when interacting with the Salesforce org.

  force apiversion nn.0

Hacking

# set these environment variables in your startup scripts
export GOPATH=~/go
export PATH="$GOPATH/bin:$PATH"

# download the source and all dependencies
$ go get -u github.com/ForceCLI/force
$ cd $GOPATH/src/github.com/ForceCLI/force

# to compile and test modifications
$ go get .
$ force

Windows Subsystem Linux (aka Bash on Windows)

Starting from Windows 10 Creator Update (version 1703), you now can use force cli within Windows Bash. To access force cli from WSL, you can call force.exe

For ease of use you can add the following simple alias

  alias force=force.exe

force's People

Contributors

amtrack avatar barrythepenguin avatar catsby avatar cwarden avatar dcarroll avatar ddollar avatar devangel avatar easafe avatar haagen avatar jpmonette avatar jrdoane avatar kazuya-s avatar kcshafer avatar kr avatar kthompso avatar mattgoldspink avatar mickle00 avatar mrdos avatar nemonocerater avatar noeticpenguin avatar omarkj avatar palgenadich avatar practicalli-johnny avatar rgalanakis avatar ryanbrainard avatar sangitamohan avatar sfllaw avatar slancio avatar vividboarder avatar yurybond avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

force's Issues

-bash: go: command not found

Cannot seem to figure out what I am doing wrong. I apologize as I am aware this a completely Newb question. Just dying to use this and can't even get it to login.

Using the the code from the hack section and just keep getting the following error

$ export GOPATH=/go
$ export PATH="$GOPATH/bin:$PATH"
$ export GOPATH=
/go
$ go get -u github.com/heroku/force
-bash: go: command not found

Export custom fields

When I do force export, it doesn't include custom fields I might have defined on standard objects. Need to add them!

import -v bug

If you use -v you need to provide only a folder where the metadata is stored.

Login doesn't work when Firefox is the default browser

I tried to grant access to my devorg with force. The tool opened up my default browser (Firefox) where I logged into Salesforce and granted access. I then got redirected to /auth/callback but the grant never made it.

When I copied the callback url and pasted it into Chrome I got the "Granted" message from force-cli.herokuapp.com and was able to use the tool.

Error logging in with specified credentials

While logging in using the latest build and using -u -p from the command line (Windows 7/64-bit), I get the following stack. When I do a "force login" and follow the oauth flow, all is good.

[signal 0xc0000005 code=0x1 addr=0x0 pc=0x420790]

goroutine 16 [running]:
runtime.panic(0x7ee0e0, 0xa96f22)
/tmp/build_f8ba0f4168b936fea1eb59aef85c032b/go/src/pkg/runtime/panic.c:279 +0x11f
main.(*Force).httpGet(0x0, 0xc08205d0e0, 0x119, 0x0, 0x0, 0x0, 0x0, 0x0)
/app/vendor/lib/go/src/src/github.com/heroku/force/force.go:779 +0x1c0
main.ForceSoapLogin(0x0, 0xc0820065c3, 0x18, 0xc082005e33, 0x23, 0xc082067a40, 0x70, 0xc0820ddd80, 0x40, 0xc0820e2400, ..
/app/vendor/lib/go/src/src/github.com/heroku/force/force.go:364 +0x83d
main.ForceLoginAndSaveSoap(0x0, 0xc0820065c3, 0x18, 0xc082005e33, 0x23, 0x0, 0x0, 0x0, 0x0)
/app/vendor/lib/go/src/src/github.com/heroku/force/login.go:129 +0xa5
main.runLogin(0xa958a0, 0xc082008240, 0x0, 0x0)
/app/vendor/lib/go/src/src/github.com/heroku/force/login.go:75 +0x19c
main.main()
/app/vendor/lib/go/src/src/github.com/heroku/force/main.go:50 +0x2b1

goroutine 19 [finalizer wait]:
runtime.park(0x468d70, 0xa9bef8, 0xa99fc9)
/tmp/build_f8ba0f4168b936fea1eb59aef85c032b/go/src/pkg/runtime/proc.c:1369 +0xac
runtime.parkunlock(0xa9bef8, 0xa99fc9)
/tmp/build_f8ba0f4168b936fea1eb59aef85c032b/go/src/pkg/runtime/proc.c:1385 +0x42
runfinq()
/tmp/build_f8ba0f4168b936fea1eb59aef85c032b/go/src/pkg/runtime/mgc0.c:2644 +0xdd
runtime.goexit()
/tmp/build_f8ba0f4168b936fea1eb59aef85c032b/go/src/pkg/runtime/proc.c:1445

goroutine 23 [IO wait]:
net.runtime_pollWait(0x381d30, 0x72, 0x0)
/tmp/build_f8ba0f4168b936fea1eb59aef85c032b/go/src/pkg/runtime/netpoll.goc:146 +0x6d
net.(_pollDesc).Wait(0xc082080170, 0x72, 0x0, 0x0)
/tmp/build_f8ba0f4168b936fea1eb59aef85c032b/go/src/pkg/net/fd_poll_runtime.go:84 +0x4d
net.(_ioSrv).ExecIO(0xc082036040, 0xc082080060, 0x8439b0, 0x7, 0x925848, 0x0, 0x0, 0x0)
/tmp/build_f8ba0f4168b936fea1eb59aef85c032b/go/src/pkg/net/fd_windows.go:188 +0x242
net.(_netFD).Read(0xc082080000, 0xc082074000, 0x2000, 0x2000, 0x0, 0x0, 0x0)
/tmp/build_f8ba0f4168b936fea1eb59aef85c032b/go/src/pkg/net/fd_windows.go:458 +0x156
net.(_conn).Read(0xc082036050, 0xc082074000, 0x2000, 0x2000, 0x0, 0x0, 0x0)
/tmp/build_f8ba0f4168b936fea1eb59aef85c032b/go/src/pkg/net/net.go:122 +0xee
crypto/tls.(_block).readFromUntil(0xc082054d50, 0x381de0, 0xc082036050, 0x5, 0x0, 0x0)
/tmp/build_f8ba0f4168b936fea1eb59aef85c032b/go/src/pkg/crypto/tls/conn.go:451 +0xe0
crypto/tls.(_Conn).readRecord(0xc08206e000, 0x17, 0x0, 0x0)
/tmp/build_f8ba0f4168b936fea1eb59aef85c032b/go/src/pkg/crypto/tls/conn.go:536 +0x206
crypto/tls.(_Conn).Read(0xc08206e000, 0xc08209f000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/tmp/build_f8ba0f4168b936fea1eb59aef85c032b/go/src/pkg/crypto/tls/conn.go:901 +0x171
net/http.noteEOFReader.Read(0x382248, 0xc08206e000, 0xc08203e318, 0xc08209f000, 0x1000, 0x1000, 0xaaece0, 0x0, 0x0)
/tmp/build_f8ba0f4168b936fea1eb59aef85c032b/go/src/pkg/net/http/transport.go:1203 +0x79
net/http.(_noteEOFReader).Read(0xc0820c64e0, 0xc08209f000, 0x1000, 0x1000, 0xc082068050, 0x0, 0x0)
:124 +0xd1
bufio.(_Reader).fill(0xc082015260)
/tmp/build_f8ba0f4168b936fea1eb59aef85c032b/go/src/pkg/bufio/bufio.go:97 +0x1ba
bufio.(_Reader).Peek(0xc082015260, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0)
/tmp/build_f8ba0f4168b936fea1eb59aef85c032b/go/src/pkg/bufio/bufio.go:132 +0x108
net/http.(_persistConn).readLoop(0xc08203e2c0)
/tmp/build_f8ba0f4168b936fea1eb59aef85c032b/go/src/pkg/net/http/transport.go:782 +0x9c
created by net/http.(_Transport).dialConn
/tmp/build_f8ba0f4168b936fea1eb59aef85c032b/go/src/pkg/net/http/transport.go:600 +0x946

goroutine 24 [select]:
net/http.(_persistConn).writeLoop(0xc08203e2c0)
/tmp/build_f8ba0f4168b936fea1eb59aef85c032b/go/src/pkg/net/http/transport.go:885 +0x396
created by net/http.(_Transport).dialConn
/tmp/build_f8ba0f4168b936fea1eb59aef85c032b/go/src/pkg/net/http/transport.go:601 +0x95e

Setup

I am having a difficulties with the setup. I downloaded the OS X binaries, opened a terminal window and CD into a folder called force. I'm not sure what the next step is? I tried running the force help command but none of the available commands are found.

"force login test" opens login.salesforce.com instead of test.salesforce.com

Just downloaded the latest today to test the "oauth create" (I want to login without a browser).

Anyway, when I tried "force login test" my browser opened-up login.salesforce.com instead of test.salesforce.com.

Modifying the URL inside Safari did allow me to authenticate.

DrozBook:~ tgagne$ force version
dev

Use refresh tokens

Store refresh tokens in ~/.force/accounts/<account>, and automatically refresh the access token when the http methods get a 401 response instead of requiring the user to re-authenticate using force login.

In order to get a refresh token, we need to either:

  1. switch to web server flow and store the client secret locally. Each user should then create their own Connected App.
  2. use a fixed port in startLocalHttpServer, instead of passing the port in state, and configure the callback URL to redirect directly back to localhost. We'll need to move the javascript running on https://force-cli.herokuapp.com, which extracts the parameters in the fragment and redirects with them in the query string, to the local webserver.

Add ability to set FLS when adding a field

A common use case is adding field(s) to sandbox, setting the FLS by profile with the UI, then writing code that use those fields. Then you need to re-add the fields to prod before deploying code. Can be done with change sets or other methods. Would be awesome if force CLI gave you a quick way to say, add a custom field and set the FLS to be read/write on these XX profiles, read on these XX profiles, and no access on these XX profiles by a list of some sort.

Thanks!

Repeated Login Requests

I downloaded force while at #df13 and it worked find there. This morning I ran force update (to see if they really added the 'whoami really' function) and it says it was updated to: 0.19.4

I then ran:
force login (proceeded to login)
force whoami (got requested to login again)

So, I tried to login again:
force login (proceeded to login)
but this time when it came back from OAuth, I got a stacktrace/error:

panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x10 pc=0x9bb9]
goroutine 1 [running]:
main.(*Force).Whoami(0x0, 0x210665b70, 0x0, 0x0)
/tmp/gopath_I9aaC/src/github.com/heroku/force/force.go:218 +0x39
main.runWhoami(0x4cd560, 0x210600020, 0x0, 0x0)
/tmp/gopath_I9aaC/src/github.com/heroku/force/whoami.go:20 +0x29
main.main()
/tmp/gopath_I9aaC/src/github.com/heroku/force/main.go:40 +0x22d

goroutine 5 [IO wait]:
net.runtime_pollWait(0x22106c4e60, 0x72, 0x0)
/tmp/compile_ywQ9N/go/src/pkg/runtime/znetpoll_darwin_amd64.c:118 +0x82
net.(_pollDesc).WaitRead(0x21062f500, 0x23, 0x210665b10)
/app/go/linux-amd64/src/pkg/net/fd_poll_runtime.go:75 +0x31
net.(_netFD).Read(0x21062f480, 0x210689000, 0x1000, 0x1000, 0x0, ...)
/app/go/linux-amd64/src/pkg/net/fd_unix.go:195 +0x2b3
net.(_conn).Read(0x210563b18, 0x210689000, 0x1000, 0x1000, 0x21061da18, ...)
/app/go/linux-amd64/src/pkg/net/net.go:123 +0xc3
net/http.(_liveSwitchReader).Read(0x21062f538, 0x210689000, 0x1000, 0x1000, 0x1, ...)
/app/go/linux-amd64/src/pkg/net/http/server.go:205 +0x91
io.(_LimitedReader).Read(0x210600b60, 0x210689000, 0x1000, 0x1000, 0x2fdd40, ...)
/app/go/linux-amd64/src/pkg/io/io.go:394 +0xc0
net/http.(_switchReader).Read(0x210629ba0, 0x210689000, 0x1000, 0x1000, 0x0, ...)
/app/go/linux-amd64/src/pkg/net/http/chunked.go:0 +0x62
bufio.(_Reader).fill(0x210686180)
/app/go/linux-amd64/src/pkg/bufio/bufio.go:79 +0x10c
bufio.(_Reader).ReadSlice(0x210686180, 0xa, 0x0, 0x0, 0x0, ...)
/app/go/linux-amd64/src/pkg/bufio/bufio.go:262 +0x202
bufio.(_Reader).ReadLine(0x210686180, 0x0, 0x0, 0x0, 0x22105c0c00, ...)
/app/go/linux-amd64/src/pkg/bufio/bufio.go:293 +0x61
net/textproto.(_Reader).readLineSlice(0x21068a060, 0xe000ceddb, 0x33c9f, 0x21061dc30, 0x2e8a80, ...)
/app/go/linux-amd64/src/pkg/net/textproto/reader.go:55 +0x51
net/textproto.(_Reader).ReadLine(0x21068a060, 0x21061dc30, 0x22105c0d6f, 0x10, 0x2106294f0, ...)
/app/go/linux-amd64/src/pkg/net/textproto/reader.go:36 +0x25
net/http.ReadRequest(0x210686180, 0x21061dc30, 0x0, 0x0)
/app/go/linux-amd64/src/pkg/net/http/request.go:510 +0x86
net/http.(_conn).readRequest(0x21062f510, 0x0, 0x0, 0x0)
/app/go/linux-amd64/src/pkg/net/http/server.go:547 +0x1bc
net/http.(_conn).serve(0x21062f510)
/app/go/linux-amd64/src/pkg/net/http/server.go:1052 +0x398
created by net/http.(_Server).Serve
/app/go/linux-amd64/src/pkg/net/http/server.go:1564 +0x266

goroutine 12 [runnable]:
net/http.(_persistConn).readLoop(0x2106e0180)
/app/go/linux-amd64/src/pkg/net/http/transport.go:761 +0x64b
created by net/http.(_Transport).dialConn
/app/go/linux-amd64/src/pkg/net/http/transport.go:511 +0x574

goroutine 11 [finalizer wait]:

goroutine 13 [select]:
net/http.(_persistConn).writeLoop(0x2106e0180)
/app/go/linux-amd64/src/pkg/net/http/transport.go:774 +0x26f
created by net/http.(_Transport).dialConn
/app/go/linux-amd64/src/pkg/net/http/transport.go:512 +0x58b

This is repeatable as I haven't gotten it to work yet...I should also point out that any force command that would require one to be authenticated is popping up the OAuth flow...

Can't login with username and password command line parameters

When I attempt to login specifying the username and password arguments, I'm redirected to a browser password prompt.

I believe the issue may be this commit:

c2a4b50

The runLogin function calls CurrentEndpoint which calls ActiveCredentials which calls ActiveLogin which calls ForceLoginAndSave (used for OAuth authentication) when there are no logins. I don't quite follow the use case that caused the CurrentEndpoint call to be introduced in runLogin.

show errors on import

Tried to import some metadata containing errors. force import reported:

$ force import
ERROR: Push failed, there were 15 components with errors
ID: 09Si0000002XdlBEAS

I had to zip the metadata and use workbench to get a usable error report. Please show full error report.

Download Blank Page

Try to download binary for CLI and link takes me to a blank page.

I'm on OS X 10.9.4. Using Chrome 36. Tried Safari as well. Tried other binary links as well. All links take me to a blank page where nothing happens.

No Binaries, Build Broken

The build process for OSX fails with the following...

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

I did find a working link for the precompiled binary, but the build seems to be broken.

Page (Sub-)Query Results with nextRecordsUrl

If a query result is large (> 200-2000 reccords), it is split into batches with the remaining records at the nextRecordsUrl. force only displays the first batch and ignores the remaining records. This should be fixed at for standard queries, but also applies to child relationship queries, which have their own nextRecordsUrls.

Parsing the .profile metadata

Has anybody managed to parse the .profile metadata? I've tried the following code using the XML package (and various combinations). The top object gets parsed but not the FLS nor OLS structures.

type OLS struct {
    allowCreate string
    allowDelete string
    allowEdit string
    allowRead string
    modifyAllRecords string
    viewAllRecords string
}

type FLS struct {
    field string `xml:"field"`
    editable string `xml:"editable"`
    readable string `xml:"readable"`
}

type Profile struct {
    XMLName xml.Name `xml:"Profile"`
    Name string
    fieldPermissions []FLS `"xml:fieldPermissions"`
    objectPermissions []OLS
}

pr := Profile{Name: name}
err := xml.Unmarshal(data, &pr)

force.com export gets LIMIT_EXCEEDED exception

Running force.com export gives the following error:

ERROR: LIMIT_EXCEEDED: Too many files in retrieve call, limit is: 5000

I guess my org is too large, but I'm not sure how to export just the metadata for a single SObject.

Issue with export/import on PC

I'm struggling to determine if this is a bug or if I'm doing something incorrectly.

I've defined a number of objects in my DE org. I want to make it easier to reproduce in other orgs, so I thought I'd use the CLI to export the metadata so that, when using a different org, I could import it and get all my custom objects.

Simple tests won't work.

  1. I've tried to run force export metadata_orig then, in the same org, run force import metadata_orig. I figured there'd be conflicts but all I get is:

    Failures - 1
    Successes - 0

  2. I've then logged into a different org and tried it again. Same error.

  3. I've deleted everything but the objects folder and updated the package.xml file so that only the CustomObject type is listed. Same error.

Not sure what else to do. Am I approaching this wrong?

This is the first I've tried it on a PC. I'm pretty sure I've done this on a Mac with no issues.

License missing from gemspec

RubyGems.org doesn't report a license for your gem. This is because it is not specified in the gemspec of your last release.

via e.g.

spec.license = 'MIT'
# or
spec.licenses = ['MIT', 'GPL-2']

Including a license in your gemspec is an easy way for rubygems.org and other tools to check how your gem is licensed. As you can imagine, scanning your repository for a LICENSE file or parsing the README, and then attempting to identify the license or licenses is much more difficult and more error prone. So, even for projects that already specify a license, including a license in your gemspec is a good practice. See, for example, how rubygems.org uses the gemspec to display the rails gem license.

There is even a License Finder gem to help companies/individuals ensure all gems they use meet their licensing needs. This tool depends on license information being available in the gemspec. This is an important enough issue that even Bundler now generates gems with a default 'MIT' license.

I hope you'll consider specifying a license in your gemspec. If not, please just close the issue with a nice message. In either case, I'll follow up. Thanks for your time!

Appendix:

If you need help choosing a license (sorry, I haven't checked your readme or looked for a license file), GitHub has created a license picker tool. Code without a license specified defaults to 'All rights reserved'-- denying others all rights to use of the code.
Here's a list of the license names I've found and their frequencies

p.s. In case you're wondering how I found you and why I made this issue, it's because I'm collecting stats on gems (I was originally looking for download data) and decided to collect license metadata,too, and make issues for gemspecs not specifying a license as a public service :). See the previous link or my blog post about this project for more information.

ConnectEx tcp: The semaphore timeout period has expired - does CLI work over proxy?

I'm using the Windows EXE from https://force-cli.heroku.com.

I login to either dev or live, copy the link to Chrome (because it doesn't seem to work in firefox) - page on chrome tells me auth worked ok then after 30 seconds or so the cmd line updates with an error:

ERROR: Get https://login.salesforce.com/id/[...id removed...]/[...id removed...]
: dial tcp 204.14.233.101:443: ConnectEx tcp: The semaphore timeout period has expired.

We have an internet proxy here - is there any way of telling CLI about this proxy or is this a different issue?

Thanks.

Do not store binaries in Git

Since binaries cannot be diffed by git, a full copy is stored forever in the Git history and it now makes the repo rather large, since each binary is almost 6Mb multiplied by the number of platforms that have binaries, multiplied by the number of versions stored.

Just did a fresh clone of the repo and it was 120Mb.

It would be far better to use Github Releases instead.

Floats not rendered in SOQL results

This happened after the refactor:

$ force query "SELECT Name, Total_Price__c, CreatedById from Invoice__c WHERE Status__c = 'Opened'"
 Name     | Total_Price__c | CreatedById
----------+----------------+--------------------
 INV-0002 | %!s(float64=173) | 005i0000001HxW6AAK

Rename "accounts" to "users" or "logins"

The name of the accounts command is confusing because in Force.com an "Account" is a object representing a customer, but the command is modeling the "User" object. I think it would be clearer if the command was named users or perhaps logins.

Simple count() query doesn't seem to work

(venv)spersinger-ltm:Downloads spersinger$ ./force query "select count() from Lead"

Query returns the count in the totalSize attribute of the result. Would be nice to show this from the cli.

How do I list all the fields of an Object

When I do

./force sobject list

I get all the object.

Now I would like to see all the fields of an object. How do I do that?

./force sobject account show fields

??

login with username and password no longer working

Hi,

This is a great tool, I really like it.

I had been successfully using the login in the following format:

force login <username> <password>

but I have just downloaded the latest version and this no longer works as I get an error like the following:

ERROR: no such endpoint: <username>

The documentations seem to indicate this is a valid set for params for the login, has this changed?

Many Thanks
Stefan

Unable to login on Windows 8.1 when IE11 is default browser and on Chrome on Mac

ERROR: INVALID_OPERATION: rollbackOnError option must be true on a production org

I am trying to import a custom object from my sandbox to production using force cli. I am using the latest executable after building it locally.

  1. Fetched custom object from sandbox
    • force fetch CustomObject Book__c
  2. Trying to import Custom Object into Production org
    • logged into production using force cli
    • force import

I end up with the message "ERROR: INVALID_OPERATION: rollbackOnError option must be true on a production org"

Is there an option that I am supposed to set for this to work. force help import does not suggest any.

`force query` should accept stdin

I'd like to do:

$ force query
SELECT ...<enter>
FROM ...<enter>
^D
-> results

and:

$ pbpaste | force query

Right now I have to worry about bash quoting and editing previous queries can be a PITA.

Git history rewritten

Every so often I go to pull from this repo's master branch and it creates a merge on my local copy. It seems like there are forced pushes being made to master and that is rewriting the history on this repo. Since it's the canonical repo, all 68 forks are affected.

Add a dev install MD file

For someone who doesn't know anything about Go (but is willing to learn) and interested in contributing to the project, trying to rebuild the .go files is challenging. Trying to just run main.go doesn't find the other files, trying to build the project fails because of missing packages (inflect, config and dist)

A MD file explaining how to setup a force.com local to would be useful.

Governor limit

Just want to confirm.
Are there any governor limits for using this tool ?

Unable to run on Red Hat 6.4

Having an issue trying to launch the Force.com CLI on RH 6.4.

I can run force help and force help on any command
but running the force login command just hangs.

I have tried using the standard way

force login -i=test
force login -u -p

I used strace and it stops with the following:

clock_gettime(CLOCK_REALTIME, {1410287483, 270182187}) = 0
close(5) = 0
close(6) = 0
close(7) = 0
accept4(3, 0x185a94d0, [112], SOCK_CLOEXEC|SOCK_NONBLOCK) = -1 EAGAIN (Resource temporarily unavailable)
epoll_wait(4, {}, 128, 0) = 0
epoll_wait(4, ff807c78, 128, 4294967295) = -1 EINTR (Interrupted system call)
--- SIGCHLD (Child exited) @ 0 (0) ---
rt_sigreturn(0x84899c0) = -1 EINTR (Interrupted system call)
epoll_wait(4,

Has anyone gotten this tool to run on RH? It runs fine on Ubuntu.

Regards,
Mark

External Id Support

Force.com records can have external ids, which are essentially alternate (usually) unique keys for getting, inserting, updating, and upserting records. For example:

In addition to the upserts, explicit inserts and updates also support external ids, but doesn't look like its documented. This would allow users to do things like this instead of using Salesforce IDs:

$ force record get User username:[email protected]
$ force record update User username:[email protected] LastName:Smith
etc

Error when calling force field create

Getting a panic error when calling force field create :. Pulled down the newest code and compiled, still getting the same error.

Thoughts?

panic: reflect: call of reflect.Value.Type on zero Value

goroutine 1 [running]:
runtime.panic(0x24e1a0, 0x1123d570)
/usr/local/go/src/pkg/runtime/panic.c:266 +0x9a
reflect.Value.Type(0x0, 0x0, 0x0, 0x11262e00, 0x1)
/usr/local/go/src/pkg/reflect/value.go:1698 +0x6f
main.ValidateOptionsAndDefaults(0xbffffce5, 0x6, 0x0, 0x0, 0x0, ...)
go/src/github.com/heroku/force/metadata.go:242 +0x26c
main.(*ForceMetadata).ValidateFieldOptions(0x1123d550, 0xbffffce5, 0x6, 0x11262da0, 0x1123d560, ...)
/Users/gqehavr/go/src/github.com/heroku/force/metadata.go:315 +0x1c5
main.runFieldCreate(0x1120a018, 0x2, 0x2)
/go/src/github.com/heroku/force/field.go:82 +0x1f8
main.runField(0x587740, 0x1120a010, 0x3, 0x3)
/go/src/github.com/heroku/force/field.go:41 +0xdf
main.main()
/go/src/github.com/heroku/force/main.go:41 +0x1c7

Plugin support

If a user runs force foo and foo is a nonexistent command the main CLI should attempt to delegate to a binary on the PATH named force-foo if it exists.

'force push' doesn't properly push static resources

When you run force push src/staticresources/{some zip file}.resource the file is not pushed up instead you get a failure message:

Unknown type name 'staticresources' specified in package.xml.

It seems to think the file type is staticresources rather then StaticResource which is what salesforce expects. I thought it was using the folder name to generate that, but that didn't seem to be it either. I tried putting resources into a folder called StaticResource and just got this error:

"src/StaticResource/{some zip file}.resource", line 0: Error An object '{some zip file}' of type StaticResource was named in package.xml, but was not found in zipped directory.

Push Discussion

One of the things I noticed in all this refactoring and the various flags was that ultimately what I am trying to do is get a list of files. That's all the flags are doing, just specifying different ways to communicate what file-based resource you want to push.

With that in mind, there really only needs to be one flag to specify one or more names for the resources. With the name, we can scan the working directory to find a resource with that name. Based on the either the contents of the file or the location and name of the parent directory (in the case of aura/lightning components) the metadata type can be determined. The metadata type needs to be determined to properly construct the package.xml file.

Cannot Create Checkbox

Unable to create field type: checkbox

$ force field create Case TestCheckbox:bool
ERROR: unable to create field type: bool
$ force field create Case TestCheckbox:boolean
ERROR: unable to create field type: boolean
$ force field create Case TestCheckbox:checkbox
ERROR: unable to create field type: checkbox

My user has the correct permissions

$ force field create Case Test:text
Custom field created

Compiling from source not working

Running go get -u github.com/heroku/force produces an error:

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

screen shot 2015-02-17 at 5 38 38 pm

Add ability to login to internal Salesforce development instances

First of all, this is a kick-ass tool! Saw it used during the Platform keynote at Dreamforce this year and was really impressed.

This issue is primarily for Salesforce devs who want to use force with non-public instances of Salesforce. Requirements:

  • configurable server name
  • configurable port
  • configurable client id
  • ability to authenticate against a server presenting a self-signed cert

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.