diff --git a/.github/workflows/build-deploy-docs.yml b/.github/workflows/build-deploy-docs.yml
new file mode 100644
index 0000000..e819a32
--- /dev/null
+++ b/.github/workflows/build-deploy-docs.yml
@@ -0,0 +1,28 @@
+name: "DOC - Build and deploy with sfdx-hardis"
+on:
+ push:
+ branches:
+ - main
+ - master
+
+jobs:
+ # Build & deploy docs
+ deploy:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2.3.4
+ # Build doc with sfdx-hardis
+ - uses: actions/setup-node@v1
+ with:
+ node-version: "12.x"
+ - run: yarn
+ - run: yarn prepack
+ - run: npm i sfdx-cli -g
+ - run: echo y|sfdx plugins:install sfdx-hardis
+ - run: sfdx hardis:doc:plugin:generate
+ # Deploy docs with mkdocs-material
+ - uses: actions/setup-python@v2
+ with:
+ python-version: 3.x
+ - run: pip install mkdocs-material mdx_truly_sane_lists json-schema-for-humans
+ - run: mkdocs gh-deploy --force
diff --git a/.gitignore b/.gitignore
index d0711fe..01e1d42 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,3 +10,5 @@ dump.rdb
mshanemc-*
commandInventory.json
heroku-xo*
+
+hardis-report/
diff --git a/README.md b/README.md
index 56876b0..4e52f69 100644
--- a/README.md
+++ b/README.md
@@ -22,7 +22,7 @@ Way, way down [at the bottom](#How-to-Contribute).
check out [this repo](https://github.com/mshanemc/awesome-sfdx-plugins) for other people's plugins (and share via PR if you've created one)
-# Usage
+## Usage
@@ -40,7 +40,7 @@ USAGE
-# Commands
+## Commands
diff --git a/docs/data/sosl/query.md b/docs/data/sosl/query.md
new file mode 100644
index 0000000..7979119
--- /dev/null
+++ b/docs/data/sosl/query.md
@@ -0,0 +1,31 @@
+
+# data:sosl:query
+
+## Description
+
+Runs a sosl query. SOSL Reference: https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_sosl_syntax.htm
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|query
-q|option|SOSL query||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx force:data:sosl:query -q "find {something}"
+
+```
+
+```shell
+sfdx force:data:sosl:query -q "find {Jack} returning User(Name), Account(Name),Contact(FirstName,LastName,Department)" -u platformers
+// search across several objects with different results fields on a specified org
+
+```
+
+
diff --git a/docs/index.md b/docs/index.md
new file mode 100644
index 0000000..590c88c
--- /dev/null
+++ b/docs/index.md
@@ -0,0 +1,332 @@
+
+
+# shane-sfdx-plugins
+
+## install
+
+sfdx plugins:install shane-sfdx-plugins
+
+You'll be prompted that this, like any plugin, is not officially code-signed by Salesforce. If that's annoying, you can [whitelist it](https://developer.salesforce.com/blogs/2017/10/salesforce-dx-cli-plugin-update.html)
+
+## docs
+
+what all is in here and how does it work?
+
+install and run this `sfdx shane -h`
+
+but you like README, you say? Good thing oclif auto-generates all this for me. :)
+
+## Contribute
+
+Way, way down [at the bottom](#How-to-Contribute).
+
+## More plugins
+
+check out [this repo](https://github.com/mshanemc/awesome-sfdx-plugins) for other people's plugins (and share via PR if you've created one)
+
+## Usage
+
+
+
+```sh-session
+$ npm install -g shane-sfdx-plugins
+$ sfdx COMMAND
+running command...
+$ sfdx (-v|--version|version)
+shane-sfdx-plugins/4.43.0 darwin-x64 node-v12.14.0
+$ sfdx --help [COMMAND]
+USAGE
+ $ sfdx COMMAND
+...
+```
+
+
+
+## Commands
+
+### data:sosl
+
+| Command | Title |
+| :---------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------- |
+| [**data:sosl:query**](data/sosl/query.md) | Runs a sosl query. SOSL Reference: https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_sosl_syntax.htm |
+
+### shane:ai
+
+| Command | Title |
+| :------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------ |
+| [**shane:ai:auth**](shane/ai/auth.md) | get an access token from an email and a .pem file, either passed in or from environment variables |
+| [**shane:ai:dataset:delete**](shane/ai/dataset/delete.md) | delete a dataset |
+| [**shane:ai:dataset:get**](shane/ai/dataset/get.md) | get an access token from an email and a .pem file, either passed in or from environment variables |
+| [**shane:ai:dataset:upload**](shane/ai/dataset/upload.md) | upload a dataset |
+| [**shane:ai:playground:setup**](shane/ai/playground/setup.md) | upload .pem file from local encrypted copy, setup username and secret key in custom setting |
+| [**shane:ai:playground:setupHeroku**](shane/ai/playground/setupHeroku.md) | provisions a new einstein.ai account and sets up the org |
+
+### shane:analytics
+
+| Command | Title |
+| :-------------------------------------------------------------------------- | :-------------------------------------------- |
+| [**shane:analytics:app:share**](shane/analytics/app/share.md) | share an analytics app by name |
+| [**shane:analytics:community:enable**](shane/analytics/community/enable.md) | Activate a community using a headless browser |
+| [**shane:analytics:dataflow:start**](shane/analytics/dataflow/start.md) | start an analytics dataflow by name/label/id |
+| [**shane:analytics:dataset:download**](shane/analytics/dataset/download.md) | download a dataset as csv |
+| [**shane:analytics:dataset:list**](shane/analytics/dataset/list.md) | what analytics datasets are in my org? |
+| [**shane:analytics:dataset:upload**](shane/analytics/dataset/upload.md) | upload a dataset from csv |
+
+### shane:cdc
+
+| Command | Title |
+| :------------------------------------------ | :---- |
+| [**shane:cdc:create**](shane/cdc/create.md) | |
+| [**shane:cdc:prep**](shane/cdc/prep.md) | |
+| [**shane:cdc:stream**](shane/cdc/stream.md) | |
+
+### shane:cert
+
+| Command | Title |
+| :---------------------------------------------------- | :--------------------------------------------------------------------------------- |
+| [**shane:cert:unhardcode**](shane/cert/unhardcode.md) | modify local xml files with data from org to work around hardcoded metadata issues |
+
+### shane:communities
+
+| Command | Title |
+| :-------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------ |
+| [**shane:communities:activate**](shane/communities/activate.md) | Activate a community using a headless browser |
+| [**shane:communities:describe**](shane/communities/describe.md) | tell me about the communities in the org, and optionally store the description |
+| [**shane:communities:json:modify**](shane/communities/json/modify.md) | Manipulate community ExperienceBundle JSON files, using REST or Tooling queries to an org to get metadata IDs |
+| [**shane:communities:publish**](shane/communities/publish.md) | Publish a community using a headless browser |
+| [**shane:communities:selfreg**](shane/communities/selfreg.md) | set the self-registration account for a community |
+| [**shane:communities:url**](shane/communities/url.md) | get me the login for a community from an org |
+
+### shane:concierge
+
+| Command | Title |
+| :---------------------------------------------------------------- | :------------------------------------------------------------- |
+| [**shane:concierge:chat:enable**](shane/concierge/chat/enable.md) | Modify custom settings to enable live agent chat for Concierge |
+
+### shane:connectedapp
+
+| Command | Title |
+| :-------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [**shane:connectedapp:attributes**](shane/connectedapp/attributes.md) | Set attributes on a connected app. Attributes for salesforce mobile app at https://github.com/gabesumner/mobile-security/blob/master/customAttributes.json |
+| [**shane:connectedapp:uniquify**](shane/connectedapp/uniquify.md) | modify a clientId/consumerKey on a local connected app to guaranatee uniqueness |
+
+### shane:contentasset
+
+| Command | Title |
+| :------------------------------------------------------------ | :-------------------------------------------- |
+| [**shane:contentasset:create**](shane/contentasset/create.md) | create a ContentAsset from a local image file |
+
+### shane:data
+
+| Command | Title |
+| :---------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------- |
+| [**shane:data:dates:update**](shane/data/dates/update.md) | go through a folder of csv files and modify all the dates relative to a given date |
+| [**shane:data:favorite**](shane/data/favorite.md) | query records and set the match as a favorite |
+| [**shane:data:file:download**](shane/data/file/download.md) | save a file from the org to the local filesystem |
+| [**shane:data:file:upload**](shane/data/file/upload.md) | upload a file from local resources, optionally as a chatter post or attached file on a record |
+| [**shane:data:id:query**](shane/data/id/query.md) | query some object and get back the id of the matching record |
+| [**shane:data:search**](shane/data/search.md) | sosl search |
+| [**shane:data:tree:import**](shane/data/tree/import.md) | similar to the original tree:import, but handles more than 200 records at a go, while still preserving relationships. Takes longer. |
+
+### shane:events
+
+| Command | Title |
+| :------------------------------------------------ | :---- |
+| [**shane:events:stream**](shane/events/stream.md) | |
+
+### shane:github
+
+| Command | Title |
+| :------------------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------- |
+| [**shane:github:action**](shane/github/action.md) | adds an action to test your repo against https://github.com/mshanemc/deploy-to-sfdx using github actions |
+| [**shane:github:deploybutton**](shane/github/deploybutton.md) | modify your local readme file to include a deployer link/button |
+| [**shane:github:package:install**](shane/github/package/install.md) | installs a package from github using the sfdx-project.json file (v43+) OR the latestVersion.json file convention |
+| [**shane:github:src:install**](shane/github/src/install.md) | installs a package from github from mdapi src |
+
+### shane:group
+
+| Command | Title |
+| :-------------------------------------------- | :------------------------------------------ |
+| [**shane:group:photo**](shane/group/photo.md) | Set the photo for a user by first/last name |
+
+### shane:heroku
+
+| Command | Title |
+| :------------------------------------------------------------------ | :------------------------------------------------------------------------------------------- |
+| [**shane:heroku:connect**](shane/heroku/connect.md) | set up heroku connect on an existing app to an existing org (that you may have just created) |
+| [**shane:heroku:externalobjects**](shane/heroku/externalobjects.md) | set up heroku connect on an existing app with external objects |
+| [**shane:heroku:repo:deploy**](shane/heroku/repo/deploy.md) | deploy a heroku app that has a valid app.json. |
+
+### shane:iot
+
+| Command | Title |
+| :-------------------------------------------------- | :------------------------------------ |
+| [**shane:iot:activation**](shane/iot/activation.md) | Activate an iot orchestration by name |
+
+### shane:label
+
+| Command | Title |
+| :---------------------------------------- | :------------------------------------------------------------------------- |
+| [**shane:label:add**](shane/label/add.md) | create a remote site setting in the local source. Push it when you're done |
+
+### shane:listview
+
+| Command | Title |
+| :-------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [**shane:listview:favorite**](shane/listview/favorite.md) | favorite a listview |
+| [**shane:listview:secure**](shane/listview/secure.md) | Find list views that are shared everywhere and makes them shared internally only. Local source modification only--to use this command to fix an entire org, retrieve all your objects and then deploy the updated files |
+
+### shane:lwc
+
+| Command | Title |
+| :------------------------------------------------ | :------------------------------------------------------------------------------------------------------ |
+| [**shane:lwc:create**](shane/lwc/create.md) | create a lwc locally without need for sfdx project |
+| [**shane:lwc:css:merge**](shane/lwc/css/merge.md) | take css from existing file(s), extract component-level relevant selectors and save to a LWC's css file |
+
+### shane:mdapi
+
+| Command | Title |
+| :-------------------------------------------------------- | :---------------------------------------------------------------------------------------------------- |
+| [**shane:mdapi:describe**](shane/mdapi/describe.md) | what's in the org? |
+| [**shane:mdapi:list**](shane/mdapi/list.md) | what's in the org? |
+| [**shane:mdapi:package:get**](shane/mdapi/package/get.md) | Gets package from an org, converts, and merges it into the local source |
+| [**shane:mdapi:package:xml**](shane/mdapi/package/xml.md) | gets metadata form an org based on a local package.xml, converts, and merges it into the local source |
+| [**shane:mdapi:pull**](shane/mdapi/pull.md) | gets unpackaged metadata for you |
+| [**shane:mdapi:push**](shane/mdapi/push.md) | convert and deploy the packaged source |
+
+### shane:msgchannel
+
+| Command | Title |
+| :-------------------------------------------------------- | :----------------------------------------- |
+| [**shane:msgchannel:create**](shane/msgchannel/create.md) | create a lightning message channel locally |
+
+### shane:object
+
+| Command | Title |
+| :------------------------------------------------------------------ | :----------------------------------------------------------------------------------------------------------------------- |
+| [**shane:object:create**](shane/object/create.md) | create an object in local source. Only **c (limited support), **b (big objects) and events \_\_e are currently supported |
+| [**shane:object:fat**](shane/object/fat.md) | add or update a field audit trail retention policy on an object. Modifies local source--you still need to push/deploy |
+| [**shane:object:field**](shane/object/field.md) | create or add fields to an existing object |
+| [**shane:object:fields:describe**](shane/object/fields/describe.md) | what fields are on the object? |
+| [**shane:object:perms:align**](shane/object/perms/align.md) | align profiles with |
+| [**shane:object:powerofone**](shane/object/powerofone.md) | add a "power of one" formula field to any object |
+| [**shane:object:recordtype**](shane/object/recordtype.md) | create a new record type for an object |
+| [**shane:object:tab**](shane/object/tab.md) | create a tab from a custom object, and you have to pick an icon |
+| [**shane:object:unperm**](shane/object/unperm.md) | remove references to an object from profiles/permsets (all or a specific one) |
+
+### shane:org
+
+| Command | Title |
+| :-------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------ |
+| [**shane:org:componentlibrary**](shane/org/componentlibrary.md) | opens the lightning component library for the specified org |
+| [**shane:org:create**](shane/org/create.md) | create an org with a friendly username. wraps force:org:create |
+| [**shane:org:delete**](shane/org/delete.md) | delete the default scratch org. Won't prompt you for confirmation |
+| [**shane:org:domain:cors**](shane/org/domain/cors.md) | whitelist the org's domain as a CORS |
+| [**shane:org:domain:csp**](shane/org/domain/csp.md) | whitelist the org's domain as a CSP Trusted Site |
+| [**shane:org:domain:verify**](shane/org/domain/verify.md) | Verifies that a domain was successfully setup with MyDomain |
+| [**shane:org:metadatacoverage**](shane/org/metadatacoverage.md) | opens the metadata coverage report page |
+| [**shane:org:reauth**](shane/org/reauth.md) | reauthenticates (generates a new authinfo) for a scratch org, optionally insisting on custom domain being ready. Requires a hub |
+| [**shane:org:refreshtoken**](shane/org/refreshtoken.md) | Outputs a refresh token from an org that you've already authenticated sfdx to. PLEASE BE CAREFUL WITH THIS AND TREAT IT AS A PASSWORD |
+
+### shane:package2
+
+| Command | Title |
+| :---------------------------------------------------------------- | :---------------------------------------------------------- |
+| [**shane:package2:version:bump**](shane/package2/version/bump.md) | bump the major/minor version number in the packageDirectory |
+
+### shane:permset
+
+| Command | Title |
+| :-------------------------------------------------- | :--------------------------------------------------- |
+| [**shane:permset:check**](shane/permset/check.md) | who has access to what |
+| [**shane:permset:create**](shane/permset/create.md) | create or add stuff to a permset with maximum access |
+
+### shane:profile
+
+| Command | Title |
+| :---------------------------------------------------- | :--------------------------------------------------------------------------------------- |
+| [**shane:profile:allowip**](shane/profile/allowip.md) | allow the whole internet for a profile (no ip verification or 2FA/OTP challenges in dev) |
+| [**shane:profile:convert**](shane/profile/convert.md) | convert a profile into a permset |
+
+### shane:project
+
+| Command | Title |
+| :-------------------------------------------------- | :---------------------- |
+| [**shane:project:create**](shane/project/create.md) | creates an sfdx project |
+
+### shane:remotesite
+
+| Command | Title |
+| :-------------------------------------------------------- | :------------------------------------------------------------------------- |
+| [**shane:remotesite:create**](shane/remotesite/create.md) | create a remote site setting in the local source. Push it when you're done |
+
+### shane:source
+
+| Command | Title |
+| :-------------------------------------------------- | :-------------------------------------- |
+| [**shane:source:replace**](shane/source/replace.md) | replace a string in a file with another |
+
+### shane:static
+
+| Command | Title |
+| :------------------------------------------------ | :------------------------------- |
+| [**shane:static:create**](shane/static/create.md) | create a static resource locally |
+
+### shane:tab
+
+| Command | Title |
+| :---------------------------------------------- | :------------- |
+| [**shane:tab:favorite**](shane/tab/favorite.md) | favorite a tab |
+
+### shane:theme
+
+| Command | Title |
+| :-------------------------------------------------- | :----------------------------------------------------------------------------------------------- |
+| [**shane:theme:activate**](shane/theme/activate.md) | Activate a LightningExperienceTheme via metadata api. Makes no permanent changes to local source |
+
+### shane:tsp
+
+| Command | Title |
+| :------------------------------------------------------------ | :------------------------------------------------------- |
+| [**shane:tsp:username:update**](shane/tsp/username/update.md) | change the username on all transaction security policies |
+
+### shane:uiapi
+
+| Command | Title |
+| :------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| [**shane:uiapi:objectinfo**](shane/uiapi/objectinfo.md) | get a ui api response from the objectinfo endpoint: https://developer.salesforce.com/docs/atlas.en-us.uiapi.meta/uiapi/ui_api_resources_object_info.htm |
+| [**shane:uiapi:record**](shane/uiapi/record.md) | get a ui api response from the getrecord endpoint: https://developer.salesforce.com/docs/atlas.en-us.uiapi.meta/uiapi/ui_api_resources_record_get.htm |
+| [**shane:uiapi:recordui**](shane/uiapi/recordui.md) | get a ui api response from the record-ui endpoint: https://developer.salesforce.com/docs/atlas.en-us.uiapi.meta/uiapi/ui_api_resources_record_ui.htm |
+
+### shane:user
+
+| Command | Title |
+| :-------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------- |
+| [**shane:user:allPhotos**](shane/user/allPhotos.md) | set the chatter photos of anyone who has not set theirs already to encourage them to do so |
+| [**shane:user:lightning:debug**](shane/user/lightning/debug.md) | set the user to debug mode |
+| [**shane:user:loginurl**](shane/user/loginurl.md) | generate a long-lived shareable login url for the org |
+| [**shane:user:password:set**](shane/user/password/set.md) | Set the password for a user by first/last name |
+| [**shane:user:permset:assign**](shane/user/permset/assign.md) | Assign a permset to a user by first/last name, or just the default user. Does not error if permset is already assigned |
+| [**shane:user:photo**](shane/user/photo.md) | Set the photo for a user by first/last name |
+| [**shane:user:psl**](shane/user/psl.md) | Assign a permset license already in an org for a user |
+
+### streaming:list
+
+| Command | Title |
+| :-------------------------------------- | :--------------------------------------- |
+| [**streaming:list**](streaming/list.md) | What kinds of things can I subscribe to? |
+
+### streaming:pushtopic
+
+| Command | Title |
+| :---------------------------------------------------------------------- | :--------------------- |
+| [**streaming:pushtopic:create**](streaming/pushtopic/create.md) | Create push topics |
+| [**streaming:pushtopic:deactivate**](streaming/pushtopic/deactivate.md) | deactivate push topics |
+| [**streaming:pushtopic:delete**](streaming/pushtopic/delete.md) | Delete a push topic |
+| [**streaming:pushtopic:update**](streaming/pushtopic/update.md) | Update push topics |
+
+### streaming:subscribe
+
+| Command | Title |
+| :------------------------------------------------ | :---- |
+| [**streaming:subscribe**](streaming/subscribe.md) | |
diff --git a/docs/javascripts/gtag.js b/docs/javascripts/gtag.js
new file mode 100644
index 0000000..4bb097e
--- /dev/null
+++ b/docs/javascripts/gtag.js
@@ -0,0 +1,27 @@
+/*
+location$.subscribe(function(url) {
+ window.dataLayer = window.dataLayer || [];
+ function gtag() {
+ dataLayer.push(arguments);
+ }
+ gtag("js", new Date());
+
+ gtag("config", "G-3DM50255LC");
+});
+*/
+var gtag_id = "G-XXXXXXXXXX";
+
+var script = document.createElement("script");
+script.src = "https://www.googletagmanager.com/gtag/js?id=" + gtag_id;
+document.head.appendChild(script);
+
+location$.subscribe(function (url) {
+ window.dataLayer = window.dataLayer || [];
+
+ function gtag() {
+ dataLayer.push(arguments);
+ }
+
+ gtag("js", new Date());
+ gtag("config", gtag_id);
+});
diff --git a/docs/javascripts/tables.js b/docs/javascripts/tables.js
new file mode 100644
index 0000000..513f93e
--- /dev/null
+++ b/docs/javascripts/tables.js
@@ -0,0 +1,6 @@
+document$.subscribe(function () {
+ var tables = document.querySelectorAll("article table")
+ tables.forEach(function (table) {
+ new Tablesort(table)
+ })
+})
diff --git a/docs/overrides/main.html b/docs/overrides/main.html
new file mode 100644
index 0000000..3cf4af8
--- /dev/null
+++ b/docs/overrides/main.html
@@ -0,0 +1,4 @@
+{% extends "base.html" %}
+
+
+
diff --git a/docs/shane/ai/auth.md b/docs/shane/ai/auth.md
new file mode 100644
index 0000000..ccf21ee
--- /dev/null
+++ b/docs/shane/ai/auth.md
@@ -0,0 +1,27 @@
+
+# shane:ai:auth
+
+## Description
+
+get an access token from an email and a .pem file, either passed in or from environment variables
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|certfile
-f|option|path to your private key from when you signed up||||
+|email
-e|option|email address you used when you signed up for your einstein.ai account||||
+|json|boolean|format output as json||||
+|level
-l|option|where to store this config|local||local
global|
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|tokentime
-t|option|time in minutes that you want your token to be valid for|1440|||
+
+## Examples
+
+```shell
+sfdx shane:ai:auth -e shane.mclaughlin@salesforce.com -f ~/code/certs/einstein_platform.pem
+ // reauths, and takes what it can get
+
+```
+
+
diff --git a/docs/shane/ai/dataset/delete.md b/docs/shane/ai/dataset/delete.md
new file mode 100644
index 0000000..d5e3a68
--- /dev/null
+++ b/docs/shane/ai/dataset/delete.md
@@ -0,0 +1,23 @@
+
+# shane:ai:dataset:delete
+
+## Description
+
+delete a dataset
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|dataset
-n|option|dataset id||||
+|email
-e|option|email address you used when you signed up for your einstein.ai account||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+
+## Examples
+
+```shell
+sfdx shane:ai:dataset:delete -n 57
+```
+
+
diff --git a/docs/shane/ai/dataset/get.md b/docs/shane/ai/dataset/get.md
new file mode 100644
index 0000000..4cc3d15
--- /dev/null
+++ b/docs/shane/ai/dataset/get.md
@@ -0,0 +1,25 @@
+
+# shane:ai:dataset:get
+
+## Description
+
+get an access token from an email and a .pem file, either passed in or from environment variables
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|dataset
-n|option|dataset id||||
+|email
-e|option|email address you used when you signed up for your einstein.ai account||||
+|json|boolean|format output as json||||
+|language
-l|boolean|use the language endpoint instead of vision||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|poll
-p|boolean|poll for the status to be completed||||
+
+## Examples
+
+```shell
+sfdx shane:ai:dataset:get -n 57
+```
+
+
diff --git a/docs/shane/ai/dataset/upload.md b/docs/shane/ai/dataset/upload.md
new file mode 100644
index 0000000..82cbd8a
--- /dev/null
+++ b/docs/shane/ai/dataset/upload.md
@@ -0,0 +1,29 @@
+
+# shane:ai:dataset:upload
+
+## Description
+
+upload a dataset
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|email
-e|option|email address you used when you signed up for your einstein.ai account||||
+|file
-f|option|Path to the .zip (image) or .csv/.tsv/.json (language) file on the local drive (FilePart). The maximum file size you can upload from a local drive is 50 MB for images, 25 MB for text||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|name
-n|option|Name of the dataset. Optional. If this parameter is omitted, the dataset name is derived from the .zip file name. ||||
+|path
-p|option|URL of the .zip (image) or .csv/.tsv/.json (language) file. The maximum file size you can upload from a web location is 2 GB (images), 25MB (text) ||||
+|train|boolean|train a model on the dataset||||
+|type
-t|option|Type of dataset data. Valid values are:|image||image
image-detection
image-multi-label
text-intent
text-sentiment|
+|verbose|boolean|emit additional command output to stdout||||
+|wait
-w|option|how long to wait for this to process (minutes)|10|||
+
+## Examples
+
+```shell
+sfdx shane:ai:dataset:upload -e shane.mclaughlin@salesforce.com -f ~/myPics.zip -n AwesomeDataset
+```
+
+
diff --git a/docs/shane/ai/playground/setup.md b/docs/shane/ai/playground/setup.md
new file mode 100644
index 0000000..ca4a08e
--- /dev/null
+++ b/docs/shane/ai/playground/setup.md
@@ -0,0 +1,26 @@
+
+# shane:ai:playground:setup
+
+## Description
+
+upload .pem file from local encrypted copy, setup username and secret key in custom setting
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|email
-e|option|email address you used when you signed up for your einstein.ai account. Defaults to EINSTEIN_EMAIL from the environment||||
+|file
-f|option|encrypted file from local filesystem||||
+|json|boolean|format output as json||||
+|key
-k|option|encoding key used to encrypt/decrypt the file. Defaults to AI_PLAYGROUND_SETUP_KEY from the environment||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:ai:playground:setup -f my.pem -e shane.mclaughlin@salesforce.com -k yay9HVn68GzXrqhT0HWkoQ==
+```
+
+
diff --git a/docs/shane/ai/playground/setupHeroku.md b/docs/shane/ai/playground/setupHeroku.md
new file mode 100644
index 0000000..78b810c
--- /dev/null
+++ b/docs/shane/ai/playground/setupHeroku.md
@@ -0,0 +1,41 @@
+
+# shane:ai:playground:setupHeroku
+
+## Description
+
+provisions a new einstein.ai account and sets up the org
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|app
-a|option|name of the heroku app that we attach add-ons to||||
+|create
-c|boolean|create the app||||
+|json|boolean|format output as json||||
+|keepauth
-k|boolean|save the refresh token for einstein.ai to the local sfdx store for future cli use||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+|verbose|boolean|emit additional command output to stdout||||
+
+## Examples
+
+```shell
+sfdx shane:ai:playground:herokuSetup -a my-existing-app
+ // creates addons to existing app
+
+```
+
+```shell
+sfdx shane:ai:playground:herokuSetup -c
+ // creates an app with whatever name heroku feels like
+
+```
+
+```shell
+sfdx shane:ai:playground:herokuSetup -a non-existing-app -c
+ // creates a new app with the name of your choice (usually build dynamically!)
+
+```
+
+
diff --git a/docs/shane/analytics/app/share.md b/docs/shane/analytics/app/share.md
new file mode 100644
index 0000000..41bdbb8
--- /dev/null
+++ b/docs/shane/analytics/app/share.md
@@ -0,0 +1,31 @@
+
+# shane:analytics:app:share
+
+## Description
+
+share an analytics app by name
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|allcsp|boolean|share with all customer portal users||||
+|allprm|boolean|share with all partner users||||
+|apiversion|option|override the api version used for api requests made by this command||||
+|community
-c|boolean|enable community sharing||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|name
-n|option|name of the analytics app||||
+|org|boolean|share with all internal users||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+|type
-t|option|access level|View||View
Edit
Manage|
+
+## Examples
+
+```shell
+sfdx shane:analytics:app:share -n SharedApp --allprm -c
+// share the standard SharedApp with all partners view level perms (default) and check the "enable sharing with communities" box for this app
+
+```
+
+
diff --git a/docs/shane/analytics/community/enable.md b/docs/shane/analytics/community/enable.md
new file mode 100644
index 0000000..d8cc2da
--- /dev/null
+++ b/docs/shane/analytics/community/enable.md
@@ -0,0 +1,20 @@
+
+# shane:analytics:community:enable
+
+## Description
+
+Activate a community using a headless browser
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|showbrowser
-b|boolean|show the browser...useful for local debugging||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+
diff --git a/docs/shane/analytics/dataflow/start.md b/docs/shane/analytics/dataflow/start.md
new file mode 100644
index 0000000..54822f3
--- /dev/null
+++ b/docs/shane/analytics/dataflow/start.md
@@ -0,0 +1,27 @@
+
+# shane:analytics:dataflow:start
+
+## Description
+
+start an analytics dataflow by name/label/id
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|id
-i|option|the id of the dataflow||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|name
-n|option|name or label of the analytics app (will match either)||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:analytics:dataflow:start -n MyDataFlowName
+// enqueue a job for the the analytics dataflow with name/label MyDataFlowName (will not wait for completion of the dataflow)
+
+```
+
+
diff --git a/docs/shane/analytics/dataset/download.md b/docs/shane/analytics/dataset/download.md
new file mode 100644
index 0000000..2d6e056
--- /dev/null
+++ b/docs/shane/analytics/dataset/download.md
@@ -0,0 +1,34 @@
+
+# shane:analytics:dataset:download
+
+## Description
+
+download a dataset as csv
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|batchsize
-b|option|maximum batchsize. Splits query in parts of this size.|1000000000|||
+|id
-i|option|dataset id||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|name
-n|option|dataset name||||
+|offset
-o|option|offset for rows||||
+|rows
-r|option|how many rows?|1000000000|||
+|target
-t|option|where you want to save the file|.|||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+|versionid|option|specify a version||||
+
+## Examples
+
+```shell
+sfdx shane:analytics:dataset:download -n YourDataSetName -t myLocalFolder
+```
+
+```shell
+sfdx shane:analytics:dataset:download -i 0Fb6A000000gDFxSAM --versionid 0Fc6A000002d8GwSAI -t myLocalFolder -r 10000 -b 5000
+```
+
+
diff --git a/docs/shane/analytics/dataset/list.md b/docs/shane/analytics/dataset/list.md
new file mode 100644
index 0000000..e0e2e2d
--- /dev/null
+++ b/docs/shane/analytics/dataset/list.md
@@ -0,0 +1,23 @@
+
+# shane:analytics:dataset:list
+
+## Description
+
+what analytics datasets are in my org?
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:analytics:dataset:list
+```
+
+
diff --git a/docs/shane/analytics/dataset/upload.md b/docs/shane/analytics/dataset/upload.md
new file mode 100644
index 0000000..1d26cd1
--- /dev/null
+++ b/docs/shane/analytics/dataset/upload.md
@@ -0,0 +1,35 @@
+
+# shane:analytics:dataset:upload
+
+## Description
+
+upload a dataset from csv
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|app
-a|option|app name||||
+|async|boolean|do not wait for successful completion of the dataset upload...just return and hope for the best. If omitted, will poll the analytics rest API for job processing status until complete||||
+|csvfile
-f|option|local csv file containing the data||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|metajson
-m|option|path to json file for describing your upload (highly recommended)||||
+|name
-n|option|dataset name--no spaces, should be like an api name||||
+|operation
-o|option|what to do with the dataset if it already exists. See https://developer.salesforce.com/docs/atlas.en-us.bi_dev_guide_ext_data.meta/bi_dev_guide_ext_data/bi_ext_data_object_externaldata.htm|Overwrite||Append
Overwrite
Upsert
Delete|
+|serial|boolean|chunks are uploaded with no parallelization to prevent locking issues||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+|uploadinterval
-d|option|milliseconds between uploaded chunks...increase this if you get strange errors during file uploads like "write EPIPE"|500|||
+
+## Examples
+
+```shell
+sfdx shane:analytics:dataset:upload -n someName -f data/myFile.csv -m myMetaFile.json
+```
+
+```shell
+sfdx shane:analytics:dataset:upload -n someName -f data/myFile.csv -m myMetaFile.json -a SharedApp --async
+```
+
+
diff --git a/docs/shane/cdc/create.md b/docs/shane/cdc/create.md
new file mode 100644
index 0000000..ee1b894
--- /dev/null
+++ b/docs/shane/cdc/create.md
@@ -0,0 +1,21 @@
+
+# shane:cdc:create
+
+## Description
+
+
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|batchsize|option|how many records to insert in a batch|200|||
+|dir
-d|option|folder to upload, containing /cdc/records||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+
diff --git a/docs/shane/cdc/prep.md b/docs/shane/cdc/prep.md
new file mode 100644
index 0000000..4c0fb37
--- /dev/null
+++ b/docs/shane/cdc/prep.md
@@ -0,0 +1,20 @@
+
+# shane:cdc:prep
+
+## Description
+
+
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|dir
-d|option|folder to upload, containing /cdc/records||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+
diff --git a/docs/shane/cdc/stream.md b/docs/shane/cdc/stream.md
new file mode 100644
index 0000000..0d661ff
--- /dev/null
+++ b/docs/shane/cdc/stream.md
@@ -0,0 +1,34 @@
+
+# shane:cdc:stream
+
+## Description
+
+
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|dir
-d|option|stream the events to a folder instead of the console||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|object
-o|option|subscribe to change events for only a single object (api name, including __c)||||
+|replay
-r|option|replay Id to begin from|-1|||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:cdc:stream // get all the change events
+```
+
+```shell
+sfdx shane:cdc:stream -o Account // get all the change events on a single object
+```
+
+```shell
+sfdx shane:cdc:stream -d myDir // stream change events to myDir/cdc, organized into folders by object api type
+```
+
+
diff --git a/docs/shane/cert/unhardcode.md b/docs/shane/cert/unhardcode.md
new file mode 100644
index 0000000..26bb7dd
--- /dev/null
+++ b/docs/shane/cert/unhardcode.md
@@ -0,0 +1,22 @@
+
+# shane:cert:unhardcode
+
+## Description
+
+modify local xml files with data from org to work around hardcoded metadata issues
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|json|boolean|format output as json||||
+|label
-l|option|masterLabel of the cert whose Id you need||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|samlfile
-f|option|full path to the samlssoconfig file. Will be modified by this process||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+|verbose|boolean|emit additional command output to stdout||||
+
+## Examples
+
+
diff --git a/docs/shane/communities/activate.md b/docs/shane/communities/activate.md
new file mode 100644
index 0000000..175d59a
--- /dev/null
+++ b/docs/shane/communities/activate.md
@@ -0,0 +1,21 @@
+
+# shane:communities:activate
+
+## Description
+
+Activate a community using a headless browser
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|name
-n|option|name of the community to activate||||
+|showbrowser
-b|boolean|show the browser...useful for local debugging||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+
diff --git a/docs/shane/communities/describe.md b/docs/shane/communities/describe.md
new file mode 100644
index 0000000..7453321
--- /dev/null
+++ b/docs/shane/communities/describe.md
@@ -0,0 +1,24 @@
+
+# shane:communities:describe
+
+## Description
+
+tell me about the communities in the org, and optionally store the description
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|store|boolean|store the community description in externalApps.json||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:communities:describe
+```
+
+
diff --git a/docs/shane/communities/json/modify.md b/docs/shane/communities/json/modify.md
new file mode 100644
index 0000000..b036a7d
--- /dev/null
+++ b/docs/shane/communities/json/modify.md
@@ -0,0 +1,51 @@
+
+# shane:communities:json:modify
+
+## Description
+
+Manipulate community ExperienceBundle JSON files, using REST or Tooling queries to an org to get metadata IDs
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|file
-f|option|full path to the file||||
+|id
-i|option|unique id of the component. ex: 69c03077-932a-4c08-b932-46baec5a7c86||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|property
-p|option|property that will be updated (or contains JSON or what will be updated||||
+|query
-q|option|soql query for a field to pass to the value||||
+|queryfield|option|field from the record returned by --query that you want to use the value from|Id|||
+|subproperty
-s|option|if the property is a json object, or json-like string, the subproperty inside that that needs updating||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+|tooling
-t|boolean|using tooling api for query instead of normal sobjects||||
+|truncate|boolean|truncate ids to 15 characters on queried record||||
+|value
-d|option|new value for the property/subproperty||||
+|variable|option|assign one of the variables to the property|||OrgId
InstanceUrl
Username|
+|verbose|boolean|emit additional command output to stdout||||
+|wavename|option|name to match from wave api||||
+|wavetype|option|part of the wave api endpoint|||dashboards|
+|write
-w|boolean|write over the original file with its new version. omit to see what will be written||||
+
+## Examples
+
+```shell
+sfdx shane:communities:json:modify -f force-app/main/default/experiences/employeebots1/views/home.json -i 69c03077-932a-4c08-b932-46baec5a7c86 -p someProp -v NewValue
+// find the component and set a new hardcoded value for the property but don't write to the file
+
+```
+
+```shell
+sfdx shane:communities:json:modify -f force-app/main/default/experiences/employeebots1/views/home.json -i 69c03077-932a-4c08-b932-46baec5a7c86 -p orgId -q "select id from organization" --write
+// find the component and set a new value from a query to the org and update file locally
+
+```
+
+```shell
+sfdx shane:communities:json:modify -f force-app/main/default/experiences/employeebots1/views/home.json -i 69c03077-932a-4c08-b932-46baec5a7c86 -p someUnconvertedJSON -s actualPropInsideTheJSON -q "select id from organization" -t --write
+// find the component and set a new value from a query onto a property contained within unconverted JSON using the tooling api and update file locally
+
+```
+
+
diff --git a/docs/shane/communities/publish.md b/docs/shane/communities/publish.md
new file mode 100644
index 0000000..0e4e4ef
--- /dev/null
+++ b/docs/shane/communities/publish.md
@@ -0,0 +1,32 @@
+
+# shane:communities:publish
+
+## Description
+
+Publish a community using a headless browser
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|name
-n|option|name of the community to publish (case sensitive!)||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:communities:publish
+// publishes all the communities in the org
+
+```
+
+```shell
+sfdx shane:communities:publish -n customer
+// finds a community named customer, publishes it.
+
+```
+
+
diff --git a/docs/shane/communities/selfreg.md b/docs/shane/communities/selfreg.md
new file mode 100644
index 0000000..9853189
--- /dev/null
+++ b/docs/shane/communities/selfreg.md
@@ -0,0 +1,25 @@
+
+# shane:communities:selfreg
+
+## Description
+
+set the self-registration account for a community
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|account
-a|option|Name of the account. Wrap in quotes if there are spaces or weird characters||||
+|apiversion|option|override the api version used for api requests made by this command||||
+|community
-c|option|name of the community. Wrap in quotes if there are spaces or weird characters||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:communities:selfreg -a Salesforce -c "Trailblazer Community"
+```
+
+
diff --git a/docs/shane/communities/url.md b/docs/shane/communities/url.md
new file mode 100644
index 0000000..cc6513f
--- /dev/null
+++ b/docs/shane/communities/url.md
@@ -0,0 +1,24 @@
+
+# shane:communities:url
+
+## Description
+
+get me the login for a community from an org
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|prefix
-p|option|community prefix (thing after the slash in the url)||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:communities:url --prefix dealers
+```
+
+
diff --git a/docs/shane/concierge/chat/enable.md b/docs/shane/concierge/chat/enable.md
new file mode 100644
index 0000000..15be8c3
--- /dev/null
+++ b/docs/shane/concierge/chat/enable.md
@@ -0,0 +1,20 @@
+
+# shane:concierge:chat:enable
+
+## Description
+
+Modify custom settings to enable live agent chat for Concierge
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+|verbose|boolean|emit additional command output to stdout||||
+
+## Examples
+
+
diff --git a/docs/shane/connectedapp/attributes.md b/docs/shane/connectedapp/attributes.md
new file mode 100644
index 0000000..bc22053
--- /dev/null
+++ b/docs/shane/connectedapp/attributes.md
@@ -0,0 +1,26 @@
+
+# shane:connectedapp:attributes
+
+## Description
+
+Set attributes on a connected app. Attributes for salesforce mobile app at https://github.com/gabesumner/mobile-security/blob/master/customAttributes.json
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|attributes
-a|option|json formatted file of key/values||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|name
-n|option|name of the connected app||||
+|showbrowser
-b|boolean|show the browser...useful for local debugging||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:connectedapp:attributes -n AppAPIName -a attributes.json
+```
+
+
diff --git a/docs/shane/connectedapp/uniquify.md b/docs/shane/connectedapp/uniquify.md
new file mode 100644
index 0000000..99dec5d
--- /dev/null
+++ b/docs/shane/connectedapp/uniquify.md
@@ -0,0 +1,25 @@
+
+# shane:connectedapp:uniquify
+
+## Description
+
+modify a clientId/consumerKey on a local connected app to guaranatee uniqueness
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|app
-a|option|full path to your connected app locally||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|prefix
-p|option|add a prefix to the connected app's consumerKey||||
+
+## Examples
+
+```shell
+sfdx shane:connectedapp:uniquify -a force-app/main/default/connectedApps/myConnectedApp.connectedApp-meta.xml -p 5h4n3
+// update the consumerKey of myConnectedApp to be unique, but start with 5h4n3
+
+```
+
+
diff --git a/docs/shane/contentasset/create.md b/docs/shane/contentasset/create.md
new file mode 100644
index 0000000..d6b0d08
--- /dev/null
+++ b/docs/shane/contentasset/create.md
@@ -0,0 +1,27 @@
+
+# shane:contentasset:create
+
+## Description
+
+create a ContentAsset from a local image file
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|file
-f|option|the file you want to turn into an asset||||
+|json|boolean|format output as json||||
+|language
-l|option|language code like en_US|en_US|||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|name
-n|option|api name for the contentAsset||||
+|target
-t|option|where to find the contentassets folder (will create if it doesn't exist already)|force-app/main/default|||
+
+## Examples
+
+```shell
+sfdx shane:contentasset:create -f ~/somefile.jpg -n MyContentAsset
+// create a contentAsset called MyContentAsset from the local file
+
+```
+
+
diff --git a/docs/shane/data/dates/update.md b/docs/shane/data/dates/update.md
new file mode 100644
index 0000000..ca60575
--- /dev/null
+++ b/docs/shane/data/dates/update.md
@@ -0,0 +1,26 @@
+
+# shane:data:dates:update
+
+## Description
+
+go through a folder of csv files and modify all the dates relative to a given date
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|datafolder
-d|option|Where is all this data?|data|||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|outputfolder
-o|option|where to output the modified CSV files|data-modified|||
+|relative
-r|option|the date to adjust all other dates relative to. example: if "relative" is 8 days ago, then all dates are moved forward 8 days||||
+
+## Examples
+
+```shell
+sfdx shane:data:dates:update -r 1-1-2020
+// move all dates in .csv files in /data by the difference between now and 1-1-2020
+
+```
+
+
diff --git a/docs/shane/data/favorite.md b/docs/shane/data/favorite.md
new file mode 100644
index 0000000..d60a880
--- /dev/null
+++ b/docs/shane/data/favorite.md
@@ -0,0 +1,29 @@
+
+# shane:data:favorite
+
+## Description
+
+query records and set the match as a favorite
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|name
-l|option|the label you want to appear in the favorites menu||||
+|object
-o|option|object API name (including __c if custom)||||
+|start|boolean|add the favorite at the beginning of the menu||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+|where
-w|option|SOQL where clause to match a single record||||
+
+## Examples
+
+```shell
+sfdx shane:data:favorite -o Account -w "name='Salesforce.com'"
+// finds the matching record and adds it to the end of the favorites menu
+
+```
+
+
diff --git a/docs/shane/data/file/download.md b/docs/shane/data/file/download.md
new file mode 100644
index 0000000..f2a9009
--- /dev/null
+++ b/docs/shane/data/file/download.md
@@ -0,0 +1,48 @@
+
+# shane:data:file:download
+
+## Description
+
+save a file from the org to the local filesystem
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|directory
-o|option|optional output path to save the file, if omitted will save to current directory, if directory then it will keep the filename and save into that directory|.|||
+|filename
-f|option|optional filename. Defaults to the filename of the contentVersion to download||||
+|id
-i|option|optional ContentDocument ID or ContentVersion ID that should be downloaded||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|name
-n|option|name of the file in Salesforce that you want to download||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:data:file:download -i 0691k000000MXfkAAG -o ./files/
+ // save a ContentDocument from the org to the files directory, keeping the existing filename
+```
+
+```shell
+sfdx shane:data:file:download -i 0691k000000MXfkAAG -o ./files/King.jpg
+ // save a ContentDocument from the org to files/King.jpg
+```
+
+```shell
+sfdx shane:data:file:download -i 0691k000000MXfkAAG
+ // save a ContentDocument from the org to the current working directory, keeping the existing filename
+```
+
+```shell
+sfdx shane:data:file:download -i 0681k000000MXfkAAG -o ./files/King.jpg
+ // save a ContentVersion from the org to files/King.jpg
+```
+
+```shell
+sfdx shane:data:file:download -n King
+ // go find the file named kind and download the latest version of it.
+```
+
+
diff --git a/docs/shane/data/file/upload.md b/docs/shane/data/file/upload.md
new file mode 100644
index 0000000..a60647e
--- /dev/null
+++ b/docs/shane/data/file/upload.md
@@ -0,0 +1,47 @@
+
+# shane:data:file:upload
+
+## Description
+
+upload a file from local resources, optionally as a chatter post or attached file on a record
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|chatter
-c|boolean|attach as a chatter content post instead of just as a file||||
+|file
-f|option|path to file on local filesystem||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|name
-n|option|set the name of the uploaded file||||
+|parentid
-p|option|optional record ID that the file should be attached to||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:data:file:upload -f ~/Downloads/King.png
+ //uploads file from local filesystem as a file
+
+```
+
+```shell
+sfdx shane:data:file:upload -f ~/Downloads/King.png -p 0011900000VkJgrAAF
+ //uploads file from local filesystem as a file and attaches to a record
+
+```
+
+```shell
+sfdx shane:data:file:upload -f ~/Downloads/King.png -p 0011900000VkJgrAAF -c
+ //uploads and attaches it to the indicated record, but as a chatter file post
+
+```
+
+```shell
+sfdx shane:data:file:upload -f ~/Downloads/King.png -p 0011900000VkJgrAAF -n CustomName -c
+ //uploads and attaches it to the indicated record, but as a chatter file post with a name that's not the same name as the local filesystem used
+
+```
+
+
diff --git a/docs/shane/data/id/query.md b/docs/shane/data/id/query.md
new file mode 100644
index 0000000..84ade37
--- /dev/null
+++ b/docs/shane/data/id/query.md
@@ -0,0 +1,27 @@
+
+# shane:data:id:query
+
+## Description
+
+query some object and get back the id of the matching record
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|object
-o|option|object||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+|where
-w|option|SOQL where clause for your query||||
+
+## Examples
+
+```shell
+sfdx shane:data:id:query -o User -u platformers -w "Firstname = 'Shane' and Lastname = 'McLaughlin' and username = 'shane@platformers.org'"'
+ // returns the id of the user. Use these ids between `` in other commands
+
+```
+
+
diff --git a/docs/shane/data/search.md b/docs/shane/data/search.md
new file mode 100644
index 0000000..2a6e08f
--- /dev/null
+++ b/docs/shane/data/search.md
@@ -0,0 +1,24 @@
+
+# shane:data:search
+
+## Description
+
+sosl search
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|query
-q|option|valid sosl query||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:data:search -q "find {stuff}"
+```
+
+
diff --git a/docs/shane/data/tree/import.md b/docs/shane/data/tree/import.md
new file mode 100644
index 0000000..7eeb493
--- /dev/null
+++ b/docs/shane/data/tree/import.md
@@ -0,0 +1,25 @@
+
+# shane:data:tree:import
+
+## Description
+
+similar to the original tree:import, but handles more than 200 records at a go, while still preserving relationships. Takes longer.
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|filesfolder
-d|option|folder that the plan lives in||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|plan
-p|option|location of plan file||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:data:tree:import -p data/myPlan.json -d data/ // run all the data in the plan, and files mentioned are relative to ./data
+```
+
+
diff --git a/docs/shane/events/stream.md b/docs/shane/events/stream.md
new file mode 100644
index 0000000..8c9f3bc
--- /dev/null
+++ b/docs/shane/events/stream.md
@@ -0,0 +1,30 @@
+
+# shane:events:stream
+
+## Description
+
+
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|dir
-d|option|stream the events to a folder instead of the console||||
+|event
-e|option|the platform event's api name||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|replay
-r|option|replay Id to begin from|-1|||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:events:stream -e SomeEvent__e // subscribe to an event stream
+```
+
+```shell
+sfdx shane:events:stream -e SomeEvent__e -d myDir // stream events to myDir
+```
+
+
diff --git a/docs/shane/github/action.md b/docs/shane/github/action.md
new file mode 100644
index 0000000..e91c315
--- /dev/null
+++ b/docs/shane/github/action.md
@@ -0,0 +1,25 @@
+
+# shane:github:action
+
+## Description
+
+adds an action to test your repo against https://github.com/mshanemc/deploy-to-sfdx using github actions
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|skipprerel
-r|boolean|omit the pre-release deployer||||
+|skipprod
-p|boolean|omit the production deployer||||
+
+## Examples
+
+```shell
+sfdx shane:github:action
+// tests against both prod and prerel(gs0) deployers
+
+```
+
+
diff --git a/docs/shane/github/deploybutton.md b/docs/shane/github/deploybutton.md
new file mode 100644
index 0000000..7b993b9
--- /dev/null
+++ b/docs/shane/github/deploybutton.md
@@ -0,0 +1,19 @@
+
+# shane:github:deploybutton
+
+## Description
+
+modify your local readme file to include a deployer link/button
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|button
-b|option|the public url where your button lives|https://raw.githubusercontent.com/mshanemc/deploy-to-sfdx/master/client-src/resources/images/sfdx_it_now.png|||
+|deployer
-d|option|the base url for your deployer|https://hosted-scratch.herokuapp.com/|||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+
+## Examples
+
+
diff --git a/docs/shane/github/package/install.md b/docs/shane/github/package/install.md
new file mode 100644
index 0000000..66f4409
--- /dev/null
+++ b/docs/shane/github/package/install.md
@@ -0,0 +1,27 @@
+
+# shane:github:package:install
+
+## Description
+
+installs a package from github using the sfdx-project.json file (v43+) OR the latestVersion.json file convention
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|githubuser
-g|option|github username where the package lives||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|repo
-r|option|repo where the packages lives||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:github:package:install -g someUser -r someRepo -u someOrg
+// installs packageVersion (04t) from https://github.com/someUser/someRepo/sfdx-project.json or https://github.com/someUser/someRepo/latestVersion.json
+
+```
+
+
diff --git a/docs/shane/github/src/install.md b/docs/shane/github/src/install.md
new file mode 100644
index 0000000..f61056d
--- /dev/null
+++ b/docs/shane/github/src/install.md
@@ -0,0 +1,36 @@
+
+# shane:github:src:install
+
+## Description
+
+installs a package from github from mdapi src
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|convert
-c|boolean|the path folder is sfdx format, not mdapi, and should be converted first||||
+|githubuser
-g|option|github username where the package lives||||
+|json|boolean|format output as json||||
+|keeplocally
-k|boolean|keep the cloned repo in local source instead of deleting it||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|path
-p|option|folder where the source lives|src|||
+|repo
-r|option|repo where the packages lives||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:github:src:install -g someUser -r someRepo -u someOrg
+// pulls mdapi-formatted code from https://github.com/someUser/someRepo/src and deploys to the org
+
+```
+
+```shell
+sfdx shane:github:src:install -g someUser -r someRepo -u someOrg -p my/folder/tree
+// pulls mdapi-formatted code from https://github.com/someUser/someRepo/my/folder/tree and deploys to the org
+
+```
+
+
diff --git a/docs/shane/group/photo.md b/docs/shane/group/photo.md
new file mode 100644
index 0000000..c4b8e35
--- /dev/null
+++ b/docs/shane/group/photo.md
@@ -0,0 +1,34 @@
+
+# shane:group:photo
+
+## Description
+
+Set the photo for a user by first/last name
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|banner
-b|option|local path of the chatter banner photo to use||||
+|file
-f|option|local path of the photo to use||||
+|group
-g|option|the name of the group name you want to set the photo/banner for||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:group:photo -g AwesomePeople -f ~/Downloads/King.png
+// sets the chatter photo for the group named AwesomePeople using the local file
+
+```
+
+```shell
+sfdx shane:group:photo -b ~/Downloads/King.png -g AwesomePeople
+// sets the chatter banner photo for the group named AwesomePeople using the local file
+
+```
+
+
diff --git a/docs/shane/heroku/connect.md b/docs/shane/heroku/connect.md
new file mode 100644
index 0000000..244d491
--- /dev/null
+++ b/docs/shane/heroku/connect.md
@@ -0,0 +1,38 @@
+
+# shane:heroku:connect
+
+## Description
+
+set up heroku connect on an existing app to an existing org (that you may have just created)
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|app
-a|option|name of the heroku app||||
+|configfile
-f|option|path to the json file exported from Heroku Connect||||
+|environment
-e|option|environment of the salesforce org|custom||sandbox
production
custom|
+|instance
-i|option|salesforce instance for making login easier. Will be read from org:display if exists...this is the override||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|password
-p|option|pass in a password to override the one associated with your org in sfdx, or if you don't have one set properly (like you used `shane:user:password:set` instead of `force:user:password:generate||||
+|showbrowser
-b|boolean|show the browser...useful for local debugging||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+|verbose|boolean|emit additional command output to stdout||||
+
+## Examples
+
+```shell
+sfdx shane:heroku:connect -a prosaic-samurai-4564 -f assets/myConfig.json
+// auth the heroku app to the current default org, assuming password is available from force:org:display, then import the json config file
+
+```
+
+```shell
+sfdx shane:heroku:connect -a prosaic-samurai-4564 -f assets/myConfig.json -p p455w0rd -u myother@scratch.org
+// same, but not the default org, with a specified password
+
+```
+
+
diff --git a/docs/shane/heroku/externalobjects.md b/docs/shane/heroku/externalobjects.md
new file mode 100644
index 0000000..b32d25f
--- /dev/null
+++ b/docs/shane/heroku/externalobjects.md
@@ -0,0 +1,44 @@
+
+# shane:heroku:externalobjects
+
+## Description
+
+set up heroku connect on an existing app with external objects
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|app
-a|option|name of the heroku app||||
+|createdir
-c|option|creates an external data source in the chosen directory||||
+|json|boolean|format output as json||||
+|label
-l|option|label that will appear for the external data source you create||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|showbrowser
-b|boolean|show the browser...useful for local debugging||||
+|tables
-t|option|comma separated list of postgres table names to share. If omitted, you want them all!||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+|updatefile
-f|option|updates an existing external data source with username/password/url||||
+|verbose|boolean|emit additional command output to stdout||||
+
+## Examples
+
+```shell
+sfdx shane:heroku:externalobjects -a sneaky-platypus
+ // enables external objects on all tables
+
+```
+
+```shell
+sfdx shane:heroku:externalobjects -a sneak-platypus -t corgis -c force-app/main/default/dataSources -l theDataSource
+ // enables external objects on the postgres table called corgis and creates an external data source locally
+
+```
+
+```shell
+sfdx shane:heroku:externalobjects -a sneak-platypus -f force-app/main/default/dataSources/existingXDS.dataSource-meta.xml
+ // enables external objects on all tables and modifies the local file specified
+
+```
+
+
diff --git a/docs/shane/heroku/repo/deploy.md b/docs/shane/heroku/repo/deploy.md
new file mode 100644
index 0000000..18390c9
--- /dev/null
+++ b/docs/shane/heroku/repo/deploy.md
@@ -0,0 +1,34 @@
+
+# shane:heroku:repo:deploy
+
+## Description
+
+deploy a heroku app that has a valid app.json.
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|branch
-b|option|heroku branch to deploy|master|||
+|days
-d|option|days you want the heroku app to live (does nothing locally)|1|||
+|envpassword|option|grab the default scratch org password and set it to this Heroku environment var||||
+|envuser|option|grab the default scratch org username and set it to this Heroku environment var||||
+|githubuser
-g|option|github username where the app lives||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|name
-n|option|what do you want to Heroku app to be named||||
+|overrides
-o|option|an array of key-value pairs, like SOME_VAR="some Value" (use quotes where string have spaces!)||||
+|repo
-r|option|repo where the app lives||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+|team
-t|option|assign this new app to an existing heroku team||||
+
+## Examples
+
+```shell
+sfdx shane:heroku:repo:deploy -g someUser -r someRepo
+// deploys code from https://github.com/someUser/someRepo that has a valid app.json
+
+```
+
+
diff --git a/docs/shane/iot/activation.md b/docs/shane/iot/activation.md
new file mode 100644
index 0000000..56bf37e
--- /dev/null
+++ b/docs/shane/iot/activation.md
@@ -0,0 +1,34 @@
+
+# shane:iot:activation
+
+## Description
+
+Activate an iot orchestration by name
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|deactivate
-d|boolean|deactivate the orchestration||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|name
-n|option|API name of the orchestration||||
+|reset
-r|boolean|reset all instances of the orchestration||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:iot:activate -n orchName -r
+// activates the orchestration, including the context if necessary, optionally resetting all the instances
+
+```
+
+```shell
+sfdx shane:iot:activate -n orchName -d
+// deactivates the orchestration, without resetting all the instances
+
+```
+
+
diff --git a/docs/shane/label/add.md b/docs/shane/label/add.md
new file mode 100644
index 0000000..ab0d6b1
--- /dev/null
+++ b/docs/shane/label/add.md
@@ -0,0 +1,31 @@
+
+# shane:label:add
+
+## Description
+
+create a remote site setting in the local source. Push it when you're done
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|bundle|option|label bundle when you want to organize them more|CustomLabels|||
+|categories|option|categories to add to your custom label||||
+|description
-d|option|description for your label||||
+|json|boolean|format output as json||||
+|language
-l|option|language code|en_US|||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|name
-n|option|api name for your label||||
+|protected|boolean|mark as protected (packaged, subscribers cannot change the label||||
+|target
-t|option|where to create the folder (if it doesn't exist already) and file...defaults to force-app/main/default|force-app/main/default|||
+|text
-t|option|the text you want to turn into a label||||
+
+## Examples
+
+```shell
+sfdx shane:label:add -t "This is some Text"
+// create a custom label with the displayed text and all the defaults
+
+```
+
+
diff --git a/docs/shane/listview/favorite.md b/docs/shane/listview/favorite.md
new file mode 100644
index 0000000..64c0854
--- /dev/null
+++ b/docs/shane/listview/favorite.md
@@ -0,0 +1,29 @@
+
+# shane:listview:favorite
+
+## Description
+
+favorite a listview
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|name
-l|option|the label you want to appear in the favorites menu||||
+|object
-o|option|object API name (including __c if custom)||||
+|start|boolean|add the favorite at the beginning of the menu||||
+|target
-t|option|API name of the list view you want to favorite||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:listview:favorite -o Account -t Awesome_Accounts
+// finds the matching listview and adds it to the end of the favorites menu
+
+```
+
+
diff --git a/docs/shane/listview/secure.md b/docs/shane/listview/secure.md
new file mode 100644
index 0000000..5cc2f9d
--- /dev/null
+++ b/docs/shane/listview/secure.md
@@ -0,0 +1,33 @@
+
+# shane:listview:secure
+
+## Description
+
+Find list views that are shared everywhere and makes them shared internally only. Local source modification only--to use this command to fix an entire org, retrieve all your objects and then deploy the updated files
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|directory
-d|option|Where is all this metadata? defaults to force-app/main/default|force-app/main/default|||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|noprompt
-p|boolean|Do not prompt for confirmation||||
+|object
-o|option|only modify list views for a single object. Api name, including __c if custom||||
+|verbose|boolean|emit additional command output to stdout||||
+
+## Examples
+
+```shell
+sfdx shane:listview:secure -o Account
+// add 'all internal users' sharing to any list view on Account without defined sharing
+
+```
+
+```shell
+sfdx shane:listview:secure
+// add 'all internal users' sharing to any list view in local source without defined sharing
+
+```
+
+
diff --git a/docs/shane/lwc/create.md b/docs/shane/lwc/create.md
new file mode 100644
index 0000000..fc304c3
--- /dev/null
+++ b/docs/shane/lwc/create.md
@@ -0,0 +1,25 @@
+
+# shane:lwc:create
+
+## Description
+
+create a lwc locally without need for sfdx project
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|directory
-d|option|where to create the new lwc's folder||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|name
-n|option|name it headsDownCamelCase||||
+
+## Examples
+
+```shell
+sfdx shane:lwc:create -n someLWC -d modules/namespace
+// creates lwc in the given folder path
+
+```
+
+
diff --git a/docs/shane/lwc/css/merge.md b/docs/shane/lwc/css/merge.md
new file mode 100644
index 0000000..0ef7648
--- /dev/null
+++ b/docs/shane/lwc/css/merge.md
@@ -0,0 +1,32 @@
+
+# shane:lwc:css:merge
+
+## Description
+
+take css from existing file(s), extract component-level relevant selectors and save to a LWC's css file
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|component
-c|option|component directory where template and js live||||
+|file
-f|option|file containing all css selectors to select from||||
+|json|boolean|format output as json||||
+|localcss
-l|option|local css file to merge with contents of --file||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+
+## Examples
+
+```shell
+sfdx shane:lwc:css:merge -c modules/namespace/myComp -f some/big_file.css
+// overwrites modules/namespace/myComp/myComp.css with relevant css selectors from big_file.css
+
+```
+
+```shell
+sfdx shane:lwc:css:merge -c modules/namespace/myComp -f some/big_file.css -l modules/namespace/myComp/local.css
+// overwrites modules/namespace/myComp/myComp.css with relevant css selectors from big_file.css PLUS any relevant selectors from modules/namespace/myComp/local.css
+
+```
+
+
diff --git a/docs/shane/mdapi/describe.md b/docs/shane/mdapi/describe.md
new file mode 100644
index 0000000..3bcb180
--- /dev/null
+++ b/docs/shane/mdapi/describe.md
@@ -0,0 +1,25 @@
+
+# shane:mdapi:describe
+
+## Description
+
+what's in the org?
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:mdapi:describe -u someOrg
+// list the metadata available in the org
+
+```
+
+
diff --git a/docs/shane/mdapi/list.md b/docs/shane/mdapi/list.md
new file mode 100644
index 0000000..04f9bf9
--- /dev/null
+++ b/docs/shane/mdapi/list.md
@@ -0,0 +1,26 @@
+
+# shane:mdapi:list
+
+## Description
+
+what's in the org?
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+|type
-t|option|pull only a specific type. See the metadata api docs for type names||||
+
+## Examples
+
+```shell
+sfdx shane:mdapi:list -u someOrg -t CustomObject
+// what metadata exists for a specific type
+
+```
+
+
diff --git a/docs/shane/mdapi/package/get.md b/docs/shane/mdapi/package/get.md
new file mode 100644
index 0000000..e552ea3
--- /dev/null
+++ b/docs/shane/mdapi/package/get.md
@@ -0,0 +1,33 @@
+
+# shane:mdapi:package:get
+
+## Description
+
+Gets package from an org, converts, and merges it into the local source
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|packagename
-p|option|the name of the package you want to retrieve||||
+|target
-t|option|where to convert the result to...defaults to force-app|force-app|||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:mdapi:package:get -p MyPkg -u someOrg
+// pulls a package from the org and converts/merges it into force-app
+
+```
+
+```shell
+sfdx shane:mdapi:package:get -p MyPkg -u someOrg -t someDir
+// pulls a package from the org and converts/merges it into /someDir
+
+```
+
+
diff --git a/docs/shane/mdapi/package/xml.md b/docs/shane/mdapi/package/xml.md
new file mode 100644
index 0000000..bac3e33
--- /dev/null
+++ b/docs/shane/mdapi/package/xml.md
@@ -0,0 +1,33 @@
+
+# shane:mdapi:package:xml
+
+## Description
+
+gets metadata form an org based on a local package.xml, converts, and merges it into the local source
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|target
-t|option|where to convert the result to...defaults to force-app|force-app|||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+|xmlpath
-p|option|the location of the package.xml you want to use||||
+
+## Examples
+
+```shell
+sfdx shane:mdapi:package:xml -p someFolder/package.xml -u someOrg
+// pulls a metadat from the org and converts/merges it into force-app
+
+```
+
+```shell
+sfdx shane:mdapi:package:xml -p someFolder/package.xml -u someOrg -t someDir
+// pulls a package from the org and converts/merges it into /someDir
+
+```
+
+
diff --git a/docs/shane/mdapi/pull.md b/docs/shane/mdapi/pull.md
new file mode 100644
index 0000000..783a4df
--- /dev/null
+++ b/docs/shane/mdapi/pull.md
@@ -0,0 +1,40 @@
+
+# shane:mdapi:pull
+
+## Description
+
+gets unpackaged metadata for you
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|all|boolean|Pulls just about everything. Don't use this flag with any other subset of metadata. Not recommended for really large metadata orgs because it'll overflow stdout||||
+|apiversion|option|override the api version used for api requests made by this command||||
+|code
-c|boolean|ApexClass,ApexTrigger,ApexComponent,ApexPage,AuraDefinitionBundle,StaticResource||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|object
-o|option|pull metadata for a single object||||
+|perms
-p|boolean|PermissionSet,Profile,Role,CustomPermission,Group||||
+|reporting|boolean|Report,Dashboard||||
+|schema
-s|boolean|ExternalDataSource,CustomMetadata,RecordType,GlobalValueSet,CustomField,CustomObject,StandardValueSet||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+|type
-t|option|pull only a specific type. See the metadata api docs for type names||||
+|ui
-i|boolean|CompactLayout,Layout,ListView,CustomTab,AppMenu,CustomApplication,CustomPageWebLink,HomePageComponent,HomePageLayout,PathAssistant,WebLink,CustomLabels,FlexiPage,QuickAction||||
+|wave|boolean|WaveApplication,WaveDashboard,WaveDataflow,WaveLens,WaveTemplateBundle,Wavexmd,WaveDataset||||
+
+## Examples
+
+```shell
+sfdx shane:mdapi:pull -c -u someOrg
+// pulls code kinda stuff from the org and converts/merges it into your project's default pkgDir
+
+```
+
+```shell
+sfdx shane:mdapi:pull -u someOrg
+// pulls all the external data source metadata from the org and converts/merges it into your project's default pkgDir
+
+```
+
+
diff --git a/docs/shane/mdapi/push.md b/docs/shane/mdapi/push.md
new file mode 100644
index 0000000..cf6d925
--- /dev/null
+++ b/docs/shane/mdapi/push.md
@@ -0,0 +1,29 @@
+
+# shane:mdapi:push
+
+## Description
+
+convert and deploy the packaged source
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|convertedfolder
-d|option|where to store the mdapi-converted source|mdapiout|||
+|deploymenttimelimit
-w|option|How many minutes to wait for the deployment to finish|200|||
+|json|boolean|format output as json||||
+|keepconverted
-k|boolean|Don't automatically delete the converted source||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|source
-r|option|deploy a specific folder that's not force-app|force-app|||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:mdapi:push -u someOrg
+// convert to mdapi format and push to the given org
+
+```
+
+
diff --git a/docs/shane/msgchannel/create.md b/docs/shane/msgchannel/create.md
new file mode 100644
index 0000000..0435297
--- /dev/null
+++ b/docs/shane/msgchannel/create.md
@@ -0,0 +1,28 @@
+
+# shane:msgchannel:create
+
+## Description
+
+create a lightning message channel locally
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|description
-d|option|optional description so you can remember why you added this and what it's for|added from sfdx plugin|||
+|exposed
-e|boolean|accessible outside your namespace (this is PERMANENT!)||||
+|fields
-f|option|fields to create on the message channel||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|name
-n|option|name it (Salesforce API compliant name)||||
+|target
-t|option|where to create the folder (if it doesn't exist already) and file...defaults to force-app/main/default|force-app/main/default|||
+
+## Examples
+
+```shell
+sfdx shane:msgchannel:create -n wkrp -d "it's a message channel, yo" -f Field1,Field2,Field3
+// creates a messageChannel with the given name, description, and fields
+
+```
+
+
diff --git a/docs/shane/object/create.md b/docs/shane/object/create.md
new file mode 100644
index 0000000..dc8520a
--- /dev/null
+++ b/docs/shane/object/create.md
@@ -0,0 +1,60 @@
+
+# shane:object:create
+
+## Description
+
+create an object in local source. Only __c (limited support), __b (big objects) and events __e are currently supported
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|activities|boolean|the enableActivities flag on an object (invalid for __b, __e)||||
+|api
-a|option|api name. Ends with one of the supported types: [__b, __e]||||
+|autonumberformat|option|the display format for the autonumbering||||
+|description|option|optional description so you can remember why you added this and what it's for|added from sfdx plugin|||
+|directory
-d|option|where to create the folder (if it doesn't exist already) and file...defaults to force-app/main/default|force-app/main/default|||
+|enterprise|boolean|enable bulk/sharing/streaming||||
+|feeds|boolean|the enableFeeds flag on an object (invalid for __b, __e)||||
+|highvolume|boolean|high volume, valid only for platform events (__e)||||
+|history|boolean|the enableHistory flag on an object (invalid for __b, __e)||||
+|interactive
-i|boolean|fully interactive--ask me every possible question.||||
+|json|boolean|format output as json||||
+|label
-l|option|label for the UI||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|namefieldlabel|option|the label for the name field|Name|||
+|nametype|option|name field type|||Text
AutoNumber|
+|plural
-p|option|plural label for the UI||||
+|reports|boolean|the enableReports flag on an object (invalid for __b, __e)||||
+|search|boolean|the enableSearch flag on an object (invalid for __b, __e)||||
+|sharingmodel|option|sharing model|ReadWrite||Read
ReadWrite
Private|
+|type
-t|option|type of object|||custom
cmdt
big
event|
+|visibility|option|visibility for custom metadata types|Public||Public
Protected
PackageProtected|
+
+## Examples
+
+```shell
+sfdx shane:object:create
+// without any params, the cli is going to ask you questions to generate your object interactively
+
+```
+
+```shell
+sfdx shane:object:create --label "Platypus" --plural "Platypi" --api Platypus__b --directory /my/project/path
+// label, plural, api name specified so the tool doesn't have to ask you about them. Creates in a non-default path
+
+```
+
+```shell
+sfdx shane:object:create --label "Platypus" --plural "Platypi" --api Platypus__b --directory /my/project/path
+// label, plural, api name specified so the tool doesn't have to ask you about them. Creates in a non-default path
+
+```
+
+```shell
+sfdx shane:object:create --label "Signal" --plural "Signals" --api Signal__e
+// create a platform event
+
+```
+
+
diff --git a/docs/shane/object/fat.md b/docs/shane/object/fat.md
new file mode 100644
index 0000000..245d151
--- /dev/null
+++ b/docs/shane/object/fat.md
@@ -0,0 +1,46 @@
+
+# shane:object:fat
+
+## Description
+
+add or update a field audit trail retention policy on an object. Modifies local source--you still need to push/deploy
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|archiveaftermonths
-m|option|archive after this number of months|18|||
+|archiveretentionyears
-y|option|Archive for this many years|10|||
+|description|option|optional friendly description for the policy||||
+|directory
-d|option|Where is all this metadata? defaults to force-app/main/default|force-app/main/default|||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|object
-o|option|object to manage the policy for||||
+
+## Examples
+
+```shell
+sfdx shane:object:fat -o Account
+// set the retention policy on Account to the defaults (archive after 18 months, archive for 10 years)
+
+```
+
+```shell
+sfdx shane:object:fat -o Account -m 4 -y 5
+// archive history for 5 years, after being in regular history for 4 months
+
+```
+
+```shell
+sfdx shane:object:fat -o Account -m 4 -y 5 -d myDir
+// same as 2nd example, except metadata is in myDir instead of the default force-app/main/default
+
+```
+
+```shell
+sfdx shane:mdapi:pull -o Account -u realOrg && sfdx shane:object:fat -o Account -m 4 -y 5 -d myDir && sfdx shane:mdapi:push -u realOrg
+// get some object you don't have locally, create the policy, and push that back up to where it came from
+
+```
+
+
diff --git a/docs/shane/object/field.md b/docs/shane/object/field.md
new file mode 100644
index 0000000..3a9b2b8
--- /dev/null
+++ b/docs/shane/object/field.md
@@ -0,0 +1,69 @@
+
+# shane:object:field
+
+## Description
+
+create or add fields to an existing object
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|api
-a|option|API name for the field||||
+|default|option|required for checkbox fields. Express in Salesforce formula language (good luck with that!)||||
+|deleteconstraint|option|delete behavior|||SetNull
Restrict
Cascade|
+|description|option|optional description for the field so you remember what it's for next year||||
+|directory
-d|option|Where is this object metadata? defaults to force-app/main/default|force-app/main/default|||
+|externalid|boolean|use as an external id||||
+|helptext|option|optional inline help text||||
+|indexappend|boolean|put next in the big object index||||
+|indexdirection|option|sort direction for the big object index|||ASC
DESC|
+|indexposition|option|put in a specific position in the big object index (0 is the first element). You're responsible for dealing with producing a sane array||||
+|interactive
-i|boolean|fully interactive--ask me every possible question.||||
+|json|boolean|format output as json||||
+|length
-l|option|length (for text fields and text area)||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|lookupobject|option|API name of the object the lookup goes to||||
+|name
-n|option|Label for the field||||
+|noindex|boolean|do not add this field to the index||||
+|object
-o|option|API name of an object to add a field to||||
+|picklistdefaultfirst|boolean|use the first value in the picklist as the default||||
+|picklistvalues|option|values for the picklist||||
+|precision|option|maximum allowed digits of a number, including whole and decimal places||||
+|rellabel|option|label for the child relationship (appears on related lists)||||
+|relname|option|API name for the child relationship||||
+|reparentable|boolean|the master detail is parentable||||
+|required
-r|boolean|field is required||||
+|scale
-s|option|places right of the decimal||||
+|trackhistory|boolean|enable history tracking on the field||||
+|type
-t|option|field type. Big Objects: Text,Number,DateTime,Lookup,LongTextArea. Events: Text,Number,DateTime,Date,LongTextArea,Checkbox. Regular Objects: Text,Number,DateTime,Date,Time,LongTextArea,Checkbox,Url,Email,Phone,Currency,Picklist,Html,Location,Lookup,MasterDetail||||
+|unique
-u|boolean|field must be unique||||
+|writerequiresmasterread|boolean|the master detail is parentable||||
+
+## Examples
+
+```shell
+sfdx shane:object:field
+// without any params, the cli is going to ask you questions to generate your field interactively
+
+```
+
+```shell
+sfdx shane:object:field --api My_Field__c -l 255 -n "My Field" -t Text -o BigTest__b --noindex
+// create new text field called My Field (My_Field__c) on BigObject BigTest__b
+
+```
+
+```shell
+sfdx shane:object:field --api My_Index_Field__c -l 255 -n "My Index Field" -t Text -o BigTest__b --indexdirection ASC --indexposition 1
+// create new text field called My Field (My_Field__c) on BigObject BigTest__b, add it to the existing index as the second field
+
+```
+
+```shell
+sfdx shane:object:field --api My_Field__c -l 255 -n "My Field" -t Text -o EventTest__e
+// create new text field called My Field (My_Field__c) on Platform Event EventTest__e
+
+```
+
+
diff --git a/docs/shane/object/fields/describe.md b/docs/shane/object/fields/describe.md
new file mode 100644
index 0000000..7b7a6bf
--- /dev/null
+++ b/docs/shane/object/fields/describe.md
@@ -0,0 +1,26 @@
+
+# shane:object:fields:describe
+
+## Description
+
+what fields are on the object?
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|object
-o|option|the object to describe||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:object:fields:describe -o Account -u someOrg
+// list the fields (with type/label) on account
+
+```
+
+
diff --git a/docs/shane/object/perms/align.md b/docs/shane/object/perms/align.md
new file mode 100644
index 0000000..7258c79
--- /dev/null
+++ b/docs/shane/object/perms/align.md
@@ -0,0 +1,24 @@
+
+# shane:object:perms:align
+
+## Description
+
+align profiles with
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|directory
-d|option|Where is all this metadata?|force-app/main/default|||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+
+## Examples
+
+```shell
+sfdx shane:object:perms:align
+// go through all the profiles/permsets in force-app/main/default and remove references to stuff that isn't in local source
+
+```
+
+
diff --git a/docs/shane/object/powerofone.md b/docs/shane/object/powerofone.md
new file mode 100644
index 0000000..f5033ae
--- /dev/null
+++ b/docs/shane/object/powerofone.md
@@ -0,0 +1,28 @@
+
+# shane:object:powerofone
+
+## Description
+
+add a "power of one" formula field to any object
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|api
-a|option|api name (will include the __c for you if you don't add it here|Power_Of_One__c|||
+|description
-d|option|optional description so you can remember why you added this and what it's for|Power of one is used for formulas, reporting, etc|||
+|json|boolean|format output as json||||
+|label
-l|option|label|Power Of One|||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|object
-o|option|API name of the object to add the field to||||
+|target
-t|option|where to create the folder (if it doesn't exist already) and file...defaults to force-app/main/default|force-app/main/default|||
+
+## Examples
+
+```shell
+sfdx shane:object:powerofone -a Poo -l "Power of One" -o User
+// create a field with api name Poo__c and label "Power of One" on the user object with the default description in the default folder
+
+```
+
+
diff --git a/docs/shane/object/recordtype.md b/docs/shane/object/recordtype.md
new file mode 100644
index 0000000..adaf9b1
--- /dev/null
+++ b/docs/shane/object/recordtype.md
@@ -0,0 +1,28 @@
+
+# shane:object:recordtype
+
+## Description
+
+create a new record type for an object
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|description
-d|option|optional description so you can remember why you added this and what it's for|Created by shane:sfdx:plugins|||
+|json|boolean|format output as json||||
+|label
-l|option|label|Power Of One|||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|name
-n|option|Name for the record Type (defaults to label if not provided)||||
+|object
-o|option|API name of the object to add the record type to||||
+|target
-t|option|where to create the file...defaults to force-app/main/default|force-app/main/default|||
+
+## Examples
+
+```shell
+sfdx shane:object:recordtype -o Something__c -l 'MyRecordType'
+// create a recordtype named MyRecordType and label MyRecordType on the Something__c object with the default description in the default folder
+
+```
+
+
diff --git a/docs/shane/object/tab.md b/docs/shane/object/tab.md
new file mode 100644
index 0000000..7fa3832
--- /dev/null
+++ b/docs/shane/object/tab.md
@@ -0,0 +1,26 @@
+
+# shane:object:tab
+
+## Description
+
+create a tab from a custom object, and you have to pick an icon
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|icon
-i|option|icon number from https://lightningdesignsystem.com/icons/#custom but only up to 100||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|object
-o|option|object api name||||
+|target
-t|option|where to create the folder (if it doesn't exist already) and file...defaults to force-app/main/default|force-app/main/default|||
+
+## Examples
+
+```shell
+sfdx shane:object:tab -o SomeObject__c -i 86
+// create a tab for the object using icon #86 from https://lightningdesignsystem.com/icons/#custom
+
+```
+
+
diff --git a/docs/shane/object/unperm.md b/docs/shane/object/unperm.md
new file mode 100644
index 0000000..c1561bd
--- /dev/null
+++ b/docs/shane/object/unperm.md
@@ -0,0 +1,26 @@
+
+# shane:object:unperm
+
+## Description
+
+remove references to an object from profiles/permsets (all or a specific one)
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|directory
-d|option|Where is all this metadata? defaults to force-app/main/default|force-app/main/default|||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|object
-o|option|remove all references to an object from profiles or permsets||||
+|specific
-s|option|specify a profile or permset by name to only remove it from that one||||
+
+## Examples
+
+```shell
+sfdx shane:object:unperm -o OpportunitySplit
+// go through all the profiles/permsets in force-app/main/default and remove the object, field, recordtypes and layout assignments (profile only) for the named object
+
+```
+
+
diff --git a/docs/shane/org/componentlibrary.md b/docs/shane/org/componentlibrary.md
new file mode 100644
index 0000000..c615aa4
--- /dev/null
+++ b/docs/shane/org/componentlibrary.md
@@ -0,0 +1,31 @@
+
+# shane:org:componentlibrary
+
+## Description
+
+opens the lightning component library for the specified org
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:org:componentlibrary
+// opens /componentReference/suite.app on the default scratch org
+
+```
+
+```shell
+sfdx shane:org:componentlibrary -u someOrgAlias
+// opens library for specified org
+
+```
+
+
diff --git a/docs/shane/org/create.md b/docs/shane/org/create.md
new file mode 100644
index 0000000..62da35a
--- /dev/null
+++ b/docs/shane/org/create.md
@@ -0,0 +1,40 @@
+
+# shane:org:create
+
+## Description
+
+create an org with a friendly username. wraps force:org:create
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|clientid
-i|option|connected app consumer key||||
+|definitionfile
-f|option|path to a scratch org definition file. Default = config/project-scratch-def.json|config/project-scratch-def.json|||
+|durationdays
-d|option|duration of the scratch org (in days) (default:7, min:1, max:30)|7|||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|noancestors
-c|boolean|do not include second-generation package ancestors in the scratch org||||
+|nonamespace
-n|boolean|creates the scratch org with no namespace||||
+|setalias
-a|option|set an alias for for the created scratch org||||
+|setdefaultusername
-s|boolean|set the created org as the default username||||
+|userdomain
-o|option|last part of the generated username (after the @ sign). Example: 'demo.org' produces shane1@demo.org, shane2@demo.org||||
+|userprefix|option|first part of the generated username. Example: 'shane' produces shane1@demo.org, shane2@demo.org||||
+|verbose|boolean|emit additional command output to stdout||||
+|wait|option|the streaming client socket timeout (in minutes) (default:20, min:2)|20|||
+
+## Examples
+
+```shell
+sfdx shane:org:create --userprefix shane -o org.test
+// creates an org from the default project config/project-scratch-def.json but with username shane[i]@org.test where i is a unique sequence number for that -u/-o combination
+
+```
+
+```shell
+sfdx shane:org:create --userprefix shane -o org.test -a sydneyBristow -d 30 -v myOtherHub -f config/thatOtherFile.json
+// above, but with an alias, a longer duration, and not the default hub, and not the default config file
+
+```
+
+
diff --git a/docs/shane/org/delete.md b/docs/shane/org/delete.md
new file mode 100644
index 0000000..09ea1e8
--- /dev/null
+++ b/docs/shane/org/delete.md
@@ -0,0 +1,23 @@
+
+# shane:org:delete
+
+## Description
+
+delete the default scratch org. Won't prompt you for confirmation
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:org:delete // deletes the current default scratch org
+```
+
+
diff --git a/docs/shane/org/domain/cors.md b/docs/shane/org/domain/cors.md
new file mode 100644
index 0000000..6cbba7f
--- /dev/null
+++ b/docs/shane/org/domain/cors.md
@@ -0,0 +1,26 @@
+
+# shane:org:domain:cors
+
+## Description
+
+whitelist the org's domain as a CORS
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|all|boolean|do all of Salesforce, not just this org's custom domain||||
+|apiversion|option|override the api version used for api requests made by this command||||
+|json|boolean|format output as json||||
+|liveagent|boolean|whitelist all of LiveAgent urls||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|target
-t|option|where to create the folder (if it doesn't exist already) and file...defaults to force-app/main/default|force-app/main/default|||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:org:domain:cors
+```
+
+
diff --git a/docs/shane/org/domain/csp.md b/docs/shane/org/domain/csp.md
new file mode 100644
index 0000000..c4ed7dc
--- /dev/null
+++ b/docs/shane/org/domain/csp.md
@@ -0,0 +1,26 @@
+
+# shane:org:domain:csp
+
+## Description
+
+whitelist the org's domain as a CSP Trusted Site
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|all|boolean|do all of Salesforce, not just this org's custom domain||||
+|apiversion|option|override the api version used for api requests made by this command||||
+|json|boolean|format output as json||||
+|liveagent|boolean|whitelist all of LiveAgent urls||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|target
-t|option|where to create the folder (if it doesn't exist already) and file...defaults to force-app/main/default|force-app/main/default|||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:org:domain:cors
+```
+
+
diff --git a/docs/shane/org/domain/verify.md b/docs/shane/org/domain/verify.md
new file mode 100644
index 0000000..a5d9ac2
--- /dev/null
+++ b/docs/shane/org/domain/verify.md
@@ -0,0 +1,23 @@
+
+# shane:org:domain:verify
+
+## Description
+
+Verifies that a domain was successfully setup with MyDomain
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:org:domain:verify
+```
+
+
diff --git a/docs/shane/org/metadatacoverage.md b/docs/shane/org/metadatacoverage.md
new file mode 100644
index 0000000..bf3ea24
--- /dev/null
+++ b/docs/shane/org/metadatacoverage.md
@@ -0,0 +1,31 @@
+
+# shane:org:metadatacoverage
+
+## Description
+
+opens the metadata coverage report page
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:org:metadatacoverage
+// opens /mdcoverage/report.jsp on the default scratch org
+
+```
+
+```shell
+sfdx shane:org:metadatacoverage -u someOrgAlias
+// opens report for specified org
+
+```
+
+
diff --git a/docs/shane/org/reauth.md b/docs/shane/org/reauth.md
new file mode 100644
index 0000000..95e2b11
--- /dev/null
+++ b/docs/shane/org/reauth.md
@@ -0,0 +1,33 @@
+
+# shane:org:reauth
+
+## Description
+
+reauthenticates (generates a new authinfo) for a scratch org, optionally insisting on custom domain being ready. Requires a hub
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|requirecustomdomain
-r|boolean|keep trying until you get back an org with a custom domain on it||||
+|targetdevhubusername
-v|option|username or alias for the dev hub org; overrides default dev hub org||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:org:reauth
+ // reauths, and takes what it can get
+
+```
+
+```shell
+sfdx shane:org:reauth --requirecustomdomain
+ // will try each minute, up to 60 minutes, until an org with a valid mydomain is ready
+
+```
+
+
diff --git a/docs/shane/org/refreshtoken.md b/docs/shane/org/refreshtoken.md
new file mode 100644
index 0000000..964c2ef
--- /dev/null
+++ b/docs/shane/org/refreshtoken.md
@@ -0,0 +1,25 @@
+
+# shane:org:refreshtoken
+
+## Description
+
+Outputs a refresh token from an org that you've already authenticated sfdx to. PLEASE BE CAREFUL WITH THIS AND TREAT IT AS A PASSWORD
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:org:refreshtoken -u someAliasOrUsername
+// prints the refresh token for some org that you've already connected to
+
+```
+
+
diff --git a/docs/shane/package2/version/bump.md b/docs/shane/package2/version/bump.md
new file mode 100644
index 0000000..464f02c
--- /dev/null
+++ b/docs/shane/package2/version/bump.md
@@ -0,0 +1,61 @@
+
+# shane:package2:version:bump
+
+## Description
+
+bump the major/minor version number in the packageDirectory
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|create
-c|boolean|create a new packageVersion from the new versionNumber||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|major
-M|boolean|Bump the major version by 1, sets minor,build to 0||||
+|minor
-m|boolean|Bump the minor version by 1||||
+|patch
-p|boolean|Bump the patch version by 1||||
+|release
-r|boolean|set the newly version as released (out of Beta). Implies create whether you flag it or not :)||||
+|target
-t|option|name of your package directory (defaults to force-app)|force-app|||
+|targetdevhubusername
-v|option|username or alias for the dev hub org; overrides default dev hub org||||
+
+## Examples
+
+```shell
+sfdx shane:package2:version:bump -m
+// bump the minor version up by one (and set patch to 0)
+
+```
+
+```shell
+sfdx shane:package2:version:bump -M
+// bump the major version up by one (and set minor/patch to 0)
+
+```
+
+```shell
+sfdx shane:package2:version:bump -p
+// bump the patch version up by one
+
+```
+
+```shell
+sfdx shane:package2:version:bump -M -t myDir
+// bump the major version up by one for a particular directory that's not the default
+
+```
+
+```shell
+sfdx shane:package2:version:bump --minor --create
+// bump the minor version up by one and create a new package2version
+
+```
+
+```shell
+sfdx shane:package2:version:bump --minor --release
+// bump the minor version up by one and create a new package2version, then set that as released
+
+```
+
+
diff --git a/docs/shane/permset/check.md b/docs/shane/permset/check.md
new file mode 100644
index 0000000..60a9ca5
--- /dev/null
+++ b/docs/shane/permset/check.md
@@ -0,0 +1,44 @@
+
+# shane:permset:check
+
+## Description
+
+who has access to what
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|field
-f|option|what field to check||||
+|fieldlevel|option|what level of perms are you looking for|Read||Read
Edit|
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|object
-o|option|what object to check perms on||||
+|objectlevel|option|what level of perms are you looking for|Read||Read
Edit
Create
Delete
ViewAll
ModifyAll|
+|permsets|boolean|return names/ids of permission sets||||
+|profiles|boolean|return names/ids of profiles||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+|users|boolean|return names/ids of users with those profiles and/or permission sets||||
+
+## Examples
+
+```shell
+sfdx shane:permset:check -o Project__c --profiles --permsets
+ // list the profiles and permsets that have Read access to the object
+
+```
+
+```shell
+sfdx shane:permset:check -o Project__c -f Due_Date__c --fieldlevel Edit --profiles --permsets
+ // list the profiles and permsets that have Edit access to the field on the object
+
+```
+
+```shell
+sfdx shane:permset:check -o Project__c -f Due_Date__c --users
+ // list the users that have Read access to the field on the object, and the profile/permset(s) that are granting it
+
+```
+
+
diff --git a/docs/shane/permset/create.md b/docs/shane/permset/create.md
new file mode 100644
index 0000000..4e7c3d9
--- /dev/null
+++ b/docs/shane/permset/create.md
@@ -0,0 +1,58 @@
+
+# shane:permset:create
+
+## Description
+
+create or add stuff to a permset with maximum access
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|application
-a|option|API name of an application to add perms for. If blank, then you mean all the applications||||
+|checkpermissionable
-c|boolean|some fields' permissions can't be deducted from metadata, use describe on org to check if field is permissionable||||
+|directory
-d|option|Where is all this metadata? defaults to force-app/main/default|force-app/main/default|||
+|field
-f|option|API name of an field to add perms for. Required --object If blank, then you mean all the fields||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|name
-n|option|path to existing permset. If it exists, new perms will be added to it. If not, then it'll be created for you||||
+|object
-o|option|API name of an object to add perms for. If blank, then you mean ALL the objects and ALL their fields and ALL their tabs||||
+|recordtype
-r|option|API name of a record type to add perms for. Required --object If blank, then you mean all the record types||||
+|tab
-t|boolean|also add the tab for the specified object (or all objects if there is no specified objects)||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+|verbose|boolean|emit additional command output to stdout||||
+
+## Examples
+
+```shell
+sfdx shane:permset:create -n MyPermSet1 -o Something__c -f Some_Field__c
+ // create a permset in force-app/main/default for the object/field. If MyPermSet1 doesn't exist, it will be created.
+
+```
+
+```shell
+sfdx shane:permset:create -n MyPermSet1 -o Something__c
+ // create a permset in force-app/main/default for every field on Something__c.
+
+```
+
+```shell
+sfdx shane:permset:create -n MyPermSet1
+ // create a permset in force-app/main/default for every field on every object!
+
+```
+
+```shell
+sfdx shane:permset:create -n MyPermSet1 -t
+ // create a permset in force-app/main/default for every field on every object. If there's a tab for any of those objects, add that tab to the permset, too
+
+```
+
+```shell
+sfdx shane:permset:create -n MyPermSet1 -c
+ // create a permset in force-app/main/default for every field on every object, checking on org that all fields are permissionable
+
+```
+
+
diff --git a/docs/shane/profile/allowip.md b/docs/shane/profile/allowip.md
new file mode 100644
index 0000000..b8b020d
--- /dev/null
+++ b/docs/shane/profile/allowip.md
@@ -0,0 +1,25 @@
+
+# shane:profile:allowip
+
+## Description
+
+allow the whole internet for a profile (no ip verification or 2FA/OTP challenges in dev)
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|directory
-d|option|Where is all this metadata? defaults to force-app/main/default|force-app/main/default|||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|name
-n|option|profile name||||
+
+## Examples
+
+```shell
+sfdx shane:profile:allowip -n Admin
+// add loginIpRanges of 0.0.0.0 to 255.255.255.255 to an existing profile, or create one if it doesn't exist
+
+```
+
+
diff --git a/docs/shane/profile/convert.md b/docs/shane/profile/convert.md
new file mode 100644
index 0000000..7c986b2
--- /dev/null
+++ b/docs/shane/profile/convert.md
@@ -0,0 +1,34 @@
+
+# shane:profile:convert
+
+## Description
+
+convert a profile into a permset
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|directory
-d|option|Where is all this metadata? defaults to force-app/main/default|force-app/main/default|||
+|editprofile
-e|boolean|remove metadata from original profile||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|name
-n|option|path to existing permset. If it exists, new perms will be added to it. If not, then it'll be created for you||||
+|profile
-p|option|API name of an profile to convert. If blank, then you mean ALL the objects and ALL their fields and ALL their tabs||||
+|skinnyclone
-c|boolean|create a new profile that's the original profile less permset (does not modify original profile)||||
+
+## Examples
+
+```shell
+sfdx shane:profile:convert -p Admin -n MyNewPermSet -e
+// create a permset in force-app/main/default from the Admin profile (profiles/Admin). If MyNewPermSet doesn't exist, it will be created. Content is removed from Admin profile (-e)
+
+```
+
+```shell
+sfdx shane:profile:convert -p Admin -n MyNewPermSet -c
+// create a permset in force-app/main/default from the Admin profile (profiles/Admin). If MyNewPermSet doesn't exist, it will be created. Leaves the original Admin profile and creates an Admin_Skinny profile that has everything in the permset removed (-c)
+
+```
+
+
diff --git a/docs/shane/project/create.md b/docs/shane/project/create.md
new file mode 100644
index 0000000..5cacd43
--- /dev/null
+++ b/docs/shane/project/create.md
@@ -0,0 +1,27 @@
+
+# shane:project:create
+
+## Description
+
+creates an sfdx project
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|gitremote
-g|option|full github url for the remote...overrides the default generated from git config user.name and project name||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|name
-n|option|name and path for the project||||
+|targetdevhubusername
-v|option|username or alias for the dev hub org; overrides default dev hub org||||
+
+## Examples
+
+```shell
+sfdx shane:project:create -n myProject
+// create a project in the folder with all the default structure
+
+```
+
+
diff --git a/docs/shane/remotesite/create.md b/docs/shane/remotesite/create.md
new file mode 100644
index 0000000..8ae624d
--- /dev/null
+++ b/docs/shane/remotesite/create.md
@@ -0,0 +1,33 @@
+
+# shane:remotesite:create
+
+## Description
+
+create a remote site setting in the local source. Push it when you're done
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|description
-d|option|optional description so you can remember why you added this and what it's for|added from sfdx plugin|||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|name
-n|option|name it (Salesforce API compliant name)||||
+|target
-t|option|where to create the folder (if it doesn't exist already) and file...defaults to force-app/main/default|force-app/main/default|||
+|url
-u|option|url that you want to allow callouts to||||
+
+## Examples
+
+```shell
+sfdx shane:remotesite:create -n Test -u https://www.google.com
+// create a remote site setting in force-app/main/default
+
+```
+
+```shell
+sfdx shane:remotesite:create -n Test -u https://www.google.com -d "my description" -t myOtherDirectory/main/default
+// create a remote site setting in myOtherDirectory/main/default with a description
+
+```
+
+
diff --git a/docs/shane/source/replace.md b/docs/shane/source/replace.md
new file mode 100644
index 0000000..a5b6fb3
--- /dev/null
+++ b/docs/shane/source/replace.md
@@ -0,0 +1,20 @@
+
+# shane:source:replace
+
+## Description
+
+replace a string in a file with another
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|file
-f|option|file to modify||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|new
-n|option|the text you want it changed to||||
+|old
-o|option|the text you want to change||||
+
+## Examples
+
+
diff --git a/docs/shane/static/create.md b/docs/shane/static/create.md
new file mode 100644
index 0000000..dd71149
--- /dev/null
+++ b/docs/shane/static/create.md
@@ -0,0 +1,34 @@
+
+# shane:static:create
+
+## Description
+
+create a static resource locally
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|description
-d|option|optional description so you can remember why you added this and what it's for|added from sfdx plugin|||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|name
-n|option|name it (Salesforce API compliant name)||||
+|public
-p|boolean|mark the cache control public||||
+|target
-t|option|where to create the folder (if it doesn't exist already) and file...defaults to force-app/main/default|force-app/main/default|||
+|type
-y|option|choose one of the following: zip, css, js, text, xml|||zip
css
js
text
xml|
+
+## Examples
+
+```shell
+sfdx shane:static:create -n myJSResource -y js
+// creates /staticresources/myJSResource.js (empty file) and /staticresources/myJSResource.resource-meta.xml
+
+```
+
+```shell
+sfdx shane:static:create -n myZipResource -y js -d "my description" -t myOtherDirectory/main/default
+// create an empty folder (zips when pushed), the meta.xml, with a description in a non-default directory.
+
+```
+
+
diff --git a/docs/shane/tab/favorite.md b/docs/shane/tab/favorite.md
new file mode 100644
index 0000000..ba964bc
--- /dev/null
+++ b/docs/shane/tab/favorite.md
@@ -0,0 +1,34 @@
+
+# shane:tab:favorite
+
+## Description
+
+favorite a tab
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|name
-l|option|the label you want to appear in the favorites menu||||
+|start|boolean|add the favorite at the beginning of the menu||||
+|target
-t|option|API name of the tab you want to favorite||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:tab:favorite -t Tab_API_Name'"
+// creates a favorite
+
+```
+
+```shell
+sfdx shane:tab:favorite -t someNamespace__Tab_API_Name'"
+// creates a favorite for a tab in a namespace
+
+```
+
+
diff --git a/docs/shane/theme/activate.md b/docs/shane/theme/activate.md
new file mode 100644
index 0000000..aa3617f
--- /dev/null
+++ b/docs/shane/theme/activate.md
@@ -0,0 +1,21 @@
+
+# shane:theme:activate
+
+## Description
+
+Activate a LightningExperienceTheme via metadata api. Makes no permanent changes to local source
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|name
-n|option|name of the theme to activate||||
+|showbrowser
-b|boolean|show the browser...useful for local debugging||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+
diff --git a/docs/shane/tsp/username/update.md b/docs/shane/tsp/username/update.md
new file mode 100644
index 0000000..19b4926
--- /dev/null
+++ b/docs/shane/tsp/username/update.md
@@ -0,0 +1,39 @@
+
+# shane:tsp:username:update
+
+## Description
+
+change the username on all transaction security policies
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|directory
-d|option|Where is all this metadata? defaults to force-app/main/default|force-app/main/default|||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|newusername
-n|option|manually specify the username, ignoring your default or any -u||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:tsp:username:update -n newusername@example.com
+// updates the username for executionUser and all notifications in all transaction security policies
+
+```
+
+```shell
+sfdx shane:tsp:username:create
+// updates the username for executionUser and all notifications in all transaction security policies to the default org's username
+
+```
+
+```shell
+sfdx shane:tsp:username:create -u someAlias
+// updates the username for executionUser and all notifications in all transaction security policies to the specified target org's username
+
+```
+
+
diff --git a/docs/shane/uiapi/objectinfo.md b/docs/shane/uiapi/objectinfo.md
new file mode 100644
index 0000000..0dff1a4
--- /dev/null
+++ b/docs/shane/uiapi/objectinfo.md
@@ -0,0 +1,33 @@
+
+# shane:uiapi:objectinfo
+
+## Description
+
+get a ui api response from the objectinfo endpoint: https://developer.salesforce.com/docs/atlas.en-us.uiapi.meta/uiapi/ui_api_resources_object_info.htm
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|object
-o|option|object api name||||
+|outputfile|option|local path to save the output to||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:uiapi:objectinfo -o Account --json
+ // returns ui-api objectinfo for Account
+
+```
+
+```shell
+sfdx shane:uiapi:objectinfo -o Account --json --outputfile accountObjectInfo.json
+ // returns ui-api objectinfo for Account and saves it to a local file
+
+```
+
+
diff --git a/docs/shane/uiapi/record.md b/docs/shane/uiapi/record.md
new file mode 100644
index 0000000..2f6a90f
--- /dev/null
+++ b/docs/shane/uiapi/record.md
@@ -0,0 +1,29 @@
+
+# shane:uiapi:record
+
+## Description
+
+get a ui api response from the getrecord endpoint: https://developer.salesforce.com/docs/atlas.en-us.uiapi.meta/uiapi/ui_api_resources_record_get.htm
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|fields
-f|option|fields to return. Specify with the object API name, like Account.Name, Account.Phone, etc. If not visible to the running user, an error is thrown||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|optionalfields|option|optional fields to return. If not visible to the running user, the field is just omitted||||
+|outputfile|option|local path to save the output to||||
+|recordid
-r|option|single recordId to generate the data/metadata||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:uiapi:record -r 001R0000003I6CoIAK -f Account.Name --optionalfields Account.AnnualRevenue,AccountAccount.Number --json
+// default ui-api response for a getrecord.
+
+```
+
+
diff --git a/docs/shane/uiapi/recordui.md b/docs/shane/uiapi/recordui.md
new file mode 100644
index 0000000..44f8dab
--- /dev/null
+++ b/docs/shane/uiapi/recordui.md
@@ -0,0 +1,30 @@
+
+# shane:uiapi:recordui
+
+## Description
+
+get a ui api response from the record-ui endpoint: https://developer.salesforce.com/docs/atlas.en-us.uiapi.meta/uiapi/ui_api_resources_record_ui.htm
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|json|boolean|format output as json||||
+|layouttypes
-l|option|which layout (Compact, Full or both)||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|modes
-m|option|which mode (Create, Edit, View, or combo)||||
+|outputfile|option|local path to save the output to||||
+|recordid
-r|option|single recordId to generate the data/metadata||||
+|recordids|option|array of recordIds to generate the data/metadata||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:uiapi:recordui -r 001R0000003I6CoIAK --json
+// default ui-api response for a single recordId
+
+```
+
+
diff --git a/docs/shane/user/allPhotos.md b/docs/shane/user/allPhotos.md
new file mode 100644
index 0000000..0f8e5e3
--- /dev/null
+++ b/docs/shane/user/allPhotos.md
@@ -0,0 +1,25 @@
+
+# shane:user:allPhotos
+
+## Description
+
+set the chatter photos of anyone who has not set theirs already to encourage them to do so
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|folder
-f|option|optional local folder of photos. Overrides --repo||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|repo
-r|option|optional alternate repo of photos, which contains a folder of photos named /img|https://github.com/mshanemc/badProfilePhotos|||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:user:allphotos -u someAlias
+```
+
+
diff --git a/docs/shane/user/lightning/debug.md b/docs/shane/user/lightning/debug.md
new file mode 100644
index 0000000..e2c0b90
--- /dev/null
+++ b/docs/shane/user/lightning/debug.md
@@ -0,0 +1,33 @@
+
+# shane:user:lightning:debug
+
+## Description
+
+set the user to debug mode
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|firstname
-g|option|first (given) name of the user--keeping -f for file for consistency||||
+|json|boolean|format output as json||||
+|lastname
-l|option|last name of the user||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:user:lightning:debug
+ // puts the default user in lightning debug mode
+
+```
+
+```shell
+sfdx shane:user:lightning:debug -g Sarah -l McLaughlin
+ // puts the named user in lightning debug mode
+
+```
+
+
diff --git a/docs/shane/user/loginurl.md b/docs/shane/user/loginurl.md
new file mode 100644
index 0000000..9629dbf
--- /dev/null
+++ b/docs/shane/user/loginurl.md
@@ -0,0 +1,32 @@
+
+# shane:user:loginurl
+
+## Description
+
+generate a long-lived shareable login url for the org
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|starturl
-p|option|url to open||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:user:loginurl
+ // generates a url including un and pw query strings to simplify logging into the scratch org
+
+```
+
+```shell
+sfdx shane:user:loginurl -p /lightning/setup/ObjectManager/home
+ // same, but sets the start url to ObjectManager
+
+```
+
+
diff --git a/docs/shane/user/password/set.md b/docs/shane/user/password/set.md
new file mode 100644
index 0000000..8880433
--- /dev/null
+++ b/docs/shane/user/password/set.md
@@ -0,0 +1,28 @@
+
+# shane:user:password:set
+
+## Description
+
+Set the password for a user by first/last name
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|firstname
-g|option|first (given) name of the user--keeping -f for file for consistency||||
+|json|boolean|format output as json||||
+|lastname
-l|option|last name of the user||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|password
-p|option|the password you want the user to have||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:user:password:set -p sfdx1234 -g User -l User
+// sets the password for User User to sfdx1234
+
+```
+
+
diff --git a/docs/shane/user/permset/assign.md b/docs/shane/user/permset/assign.md
new file mode 100644
index 0000000..d5f3a3f
--- /dev/null
+++ b/docs/shane/user/permset/assign.md
@@ -0,0 +1,26 @@
+
+# shane:user:permset:assign
+
+## Description
+
+Assign a permset to a user by first/last name, or just the default user. Does not error if permset is already assigned
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|firstname
-g|option|first (given) name of the user--keeping -f for file for consistency||||
+|json|boolean|format output as json||||
+|lastname
-l|option|last name of the user||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|name
-n|option|the value of the permset name or label field||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:user:permset:assign -n thePermSet -g User -l User
+```
+
+
diff --git a/docs/shane/user/photo.md b/docs/shane/user/photo.md
new file mode 100644
index 0000000..4a77ea0
--- /dev/null
+++ b/docs/shane/user/photo.md
@@ -0,0 +1,41 @@
+
+# shane:user:photo
+
+## Description
+
+Set the photo for a user by first/last name
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|banner
-b|option|local path of the chatter banner photo to use||||
+|file
-f|option|local path of the photo to use||||
+|firstname
-g|option|first (given) name of the user--keeping -f for file for consistency||||
+|json|boolean|format output as json||||
+|lastname
-l|option|last name of the user||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:user:photo -f ~/Downloads/King.png -g User -l User
+// sets the chatter photo for the user named User User using the local file
+
+```
+
+```shell
+sfdx shane:user:photo -b ~/Downloads/King.png -g User -l User
+// sets the chatter banner photo for the user named User User using the local file
+
+```
+
+```shell
+sfdx shane:user:photo -f ~/Downloads/King.png -b ~/Downloads/OtherPhoto.jpg -g User -l User
+// sets the chatter banner photo AND user photo at the same time
+
+```
+
+
diff --git a/docs/shane/user/psl.md b/docs/shane/user/psl.md
new file mode 100644
index 0000000..6958940
--- /dev/null
+++ b/docs/shane/user/psl.md
@@ -0,0 +1,28 @@
+
+# shane:user:psl
+
+## Description
+
+Assign a permset license already in an org for a user
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|firstname
-g|option|first (given) name of the user--keeping -f for file for consistency||||
+|json|boolean|format output as json||||
+|lastname
-l|option|last name of the user||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|name
-n|option|developer name or label of the PermSetLicense||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx shane:user:psl -n SomePSL -g User -l User
+// assign the PSL named 'somePSL' for the user named User User
+
+```
+
+
diff --git a/docs/streaming/list.md b/docs/streaming/list.md
new file mode 100644
index 0000000..9c64c8e
--- /dev/null
+++ b/docs/streaming/list.md
@@ -0,0 +1,28 @@
+
+# streaming:list
+
+## Description
+
+What kinds of things can I subscribe to?
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+|types
-t|option|optional specify which types to query|cdc,event,topic|||
+
+## Examples
+
+```shell
+sfdx streaming:list // list everything
+```
+
+```shell
+sfdx streaming:list -t cdc,topic // list CDC and PushTopic but not standard and custom PlatformEvents
+```
+
+
diff --git a/docs/streaming/pushtopic/create.md b/docs/streaming/pushtopic/create.md
new file mode 100644
index 0000000..bb49e13
--- /dev/null
+++ b/docs/streaming/pushtopic/create.md
@@ -0,0 +1,36 @@
+
+# streaming:pushtopic:create
+
+## Description
+
+Create push topics
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|description
-d|option|add a description to the push topic||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|name
-n|option|name for the push topic||||
+|notifyforfields
-f|option|Specifies which fields are evaluated to generate a notification|Referenced||All
Referenced
Select
Where|
+|operations
-o|option|which operations should produce a notification|create,update,delete,undelete|||
+|query
-q|option|The SOQL query statement that determines which record changes trigger events to be sent to the channel.||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx streaming:pushtopic:create -n myTopic -q "select Id,Name from account"
+ // creates the push topic
+
+```
+
+```shell
+sfdx streaming:pushtopic:create -n myTopic -q "select Id from account" -f All -o create,update
+ // creates the push topic and sets operations and watches all fields
+
+```
+
+
diff --git a/docs/streaming/pushtopic/deactivate.md b/docs/streaming/pushtopic/deactivate.md
new file mode 100644
index 0000000..2fa8904
--- /dev/null
+++ b/docs/streaming/pushtopic/deactivate.md
@@ -0,0 +1,24 @@
+
+# streaming:pushtopic:deactivate
+
+## Description
+
+deactivate push topics
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|name
-n|option|name for the push topic||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx streaming:pushtopic:deactivate -n myTopic
+```
+
+
diff --git a/docs/streaming/pushtopic/delete.md b/docs/streaming/pushtopic/delete.md
new file mode 100644
index 0000000..c3ebac9
--- /dev/null
+++ b/docs/streaming/pushtopic/delete.md
@@ -0,0 +1,24 @@
+
+# streaming:pushtopic:delete
+
+## Description
+
+Delete a push topic
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|name
-n|option|name for the push topic||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx streaming:pushtopic:delete -n myTopic
+```
+
+
diff --git a/docs/streaming/pushtopic/update.md b/docs/streaming/pushtopic/update.md
new file mode 100644
index 0000000..82e4790
--- /dev/null
+++ b/docs/streaming/pushtopic/update.md
@@ -0,0 +1,36 @@
+
+# streaming:pushtopic:update
+
+## Description
+
+Update push topics
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|description
-d|option|add a description to the push topic||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|name
-n|option|name for the push topic||||
+|notifyforfields
-f|option|Specifies which fields are evaluated to generate a notification|||All
Referenced
Select
Where|
+|operations
-o|option|which operations should produce a notification||||
+|query
-q|option|The SOQL query statement that determines which record changes trigger events to be sent to the channel.||||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+
+## Examples
+
+```shell
+sfdx streaming:pushtopic:update -n myTopic -q "select Id,Name from account"
+ // modifies the push topic
+
+```
+
+```shell
+sfdx streaming:pushtopic:update -n myTopic -q "select Id from account" -f All -o create,update
+ // modifies the push topic and sets operations and watches all fields
+
+```
+
+
diff --git a/docs/streaming/subscribe.md b/docs/streaming/subscribe.md
new file mode 100644
index 0000000..095e953
--- /dev/null
+++ b/docs/streaming/subscribe.md
@@ -0,0 +1,42 @@
+
+# streaming:subscribe
+
+## Description
+
+
+
+## Parameters
+
+|Name|Type|Description|Default|Required|Options|
+|:---|:--:|:----------|:-----:|:------:|:-----:|
+|apiversion|option|override the api version used for api requests made by this command||||
+|json|boolean|format output as json||||
+|loglevel|option|logging level for this command invocation|warn||trace
debug
info
warn
error
fatal|
+|name
-n|option|name of the topic/event/dataEvent||||
+|replay
-r|option|replay Id to begin from|-1|||
+|targetusername
-u|option|username or alias for the target org; overrides default target org||||
+|type
-t|option|the type of thing you want to subscribe to|event||event
topic
cdc|
+
+## Examples
+
+```shell
+sfdx streaming:subscribe -t cdc -n ChangeEvents // subscribe to all CDC
+```
+
+```shell
+sfdx streaming:subscribe -t cdc -n AccountChangeEvent // subscribe to cdc for a standard object
+```
+
+```shell
+sfdx streaming:subscribe -t event -n Something__e // subscribe to platform event
+```
+
+```shell
+sfdx streaming:subscribe -t event -n Something__e -r 6744 // subscribe to platform event with a replay ID
+```
+
+```shell
+sfdx streaming:subscribe -t topic -n myTopic // subscribe to a push topic
+```
+
+
diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css
new file mode 100644
index 0000000..8503fe4
--- /dev/null
+++ b/docs/stylesheets/extra.css
@@ -0,0 +1,8 @@
+/* stylelint-disable SelectorFormat */
+.md-typeset__table {
+ min-width: 100%;
+}
+
+.md-typeset table:not([class]) {
+ display: table;
+}
diff --git a/mkdocs.yml b/mkdocs.yml
new file mode 100644
index 0000000..068365d
--- /dev/null
+++ b/mkdocs.yml
@@ -0,0 +1,212 @@
+site_name: Shane sfdx plugins
+site_url: https://mshanemc.github.io/shane-sfdx-plugins
+repo_url: https://github.com/mshanemc/shane-sfdx-plugins
+edit_uri: tree/master/docs
+site_author: Shane McLaughlin
+site_description: Salesforce DX Plugin by Shane McLaughlin.
+copyright: >-
+ Doc generated by sfdx-hardis
+theme:
+ name: material
+ custom_dir: docs/overrides
+ features:
+ - navigation.instant
+# logo: assets/images/salesforce-logo.png
+# favicon: assets/images/salesforce-icon.png
+ palette:
+ primary: light blue
+markdown_extensions:
+ - pymdownx.emoji:
+ emoji_index: !!python/name:materialx.emoji.twemoji
+ emoji_generator: !!python/name:materialx.emoji.to_svg
+ - pymdownx.snippets:
+ base_path: docs
+ check_paths: true
+ - mdx_truly_sane_lists
+ - attr_list
+extra_javascript:
+ - https://cdnjs.cloudflare.com/ajax/libs/tablesort/5.2.1/tablesort.min.js
+ - javascripts/tables.js
+ - javascripts/gtag.js
+extra_css:
+ - stylesheets/extra.css
+extra:
+ social:
+ - icon: fontawesome/regular/question-circle
+ link: https://github.com/mshanemc/shane-sfdx-plugins/issues
+ title: Need help ? Post an issue :)
+ - icon: fontawesome/brands/github
+ link: https://github.com/mshanemc/shane-sfdx-plugins
+ - icon: fontawesome/brands/twitter
+ link: https://twitter.com/mshanemc
+ generator: false
+nav:
+ - Home: index.md
+ - Commands:
+ shane:
+ ai:
+ auth: shane/ai/auth.md
+ dataset:
+ delete: shane/ai/dataset/delete.md
+ get: shane/ai/dataset/get.md
+ upload: shane/ai/dataset/upload.md
+ playground:
+ setup: shane/ai/playground/setup.md
+ setupHeroku: shane/ai/playground/setupHeroku.md
+ analytics:
+ app:
+ share: shane/analytics/app/share.md
+ community:
+ enable: shane/analytics/community/enable.md
+ dataflow:
+ start: shane/analytics/dataflow/start.md
+ dataset:
+ download: shane/analytics/dataset/download.md
+ list: shane/analytics/dataset/list.md
+ upload: shane/analytics/dataset/upload.md
+ cdc:
+ create: shane/cdc/create.md
+ prep: shane/cdc/prep.md
+ stream: shane/cdc/stream.md
+ cert:
+ unhardcode: shane/cert/unhardcode.md
+ communities:
+ activate: shane/communities/activate.md
+ describe: shane/communities/describe.md
+ json:
+ modify: shane/communities/json/modify.md
+ publish: shane/communities/publish.md
+ selfreg: shane/communities/selfreg.md
+ url: shane/communities/url.md
+ concierge:
+ chat:
+ enable: shane/concierge/chat/enable.md
+ connectedapp:
+ attributes: shane/connectedapp/attributes.md
+ uniquify: shane/connectedapp/uniquify.md
+ contentasset:
+ create: shane/contentasset/create.md
+ data:
+ dates:
+ update: shane/data/dates/update.md
+ favorite: shane/data/favorite.md
+ file:
+ download: shane/data/file/download.md
+ upload: shane/data/file/upload.md
+ id:
+ query: shane/data/id/query.md
+ search: shane/data/search.md
+ tree:
+ import: shane/data/tree/import.md
+ events:
+ stream: shane/events/stream.md
+ github:
+ action: shane/github/action.md
+ deploybutton: shane/github/deploybutton.md
+ package:
+ install: shane/github/package/install.md
+ src:
+ install: shane/github/src/install.md
+ group:
+ photo: shane/group/photo.md
+ heroku:
+ connect: shane/heroku/connect.md
+ externalobjects: shane/heroku/externalobjects.md
+ repo:
+ deploy: shane/heroku/repo/deploy.md
+ iot:
+ activation: shane/iot/activation.md
+ label:
+ add: shane/label/add.md
+ listview:
+ favorite: shane/listview/favorite.md
+ secure: shane/listview/secure.md
+ lwc:
+ create: shane/lwc/create.md
+ css:
+ merge: shane/lwc/css/merge.md
+ mdapi:
+ describe: shane/mdapi/describe.md
+ list: shane/mdapi/list.md
+ package:
+ get: shane/mdapi/package/get.md
+ xml: shane/mdapi/package/xml.md
+ pull: shane/mdapi/pull.md
+ push: shane/mdapi/push.md
+ msgchannel:
+ create: shane/msgchannel/create.md
+ object:
+ create: shane/object/create.md
+ fat: shane/object/fat.md
+ field: shane/object/field.md
+ fields:
+ describe: shane/object/fields/describe.md
+ perms:
+ align: shane/object/perms/align.md
+ powerofone: shane/object/powerofone.md
+ recordtype: shane/object/recordtype.md
+ tab: shane/object/tab.md
+ unperm: shane/object/unperm.md
+ org:
+ componentlibrary: shane/org/componentlibrary.md
+ create: shane/org/create.md
+ delete: shane/org/delete.md
+ domain:
+ cors: shane/org/domain/cors.md
+ csp: shane/org/domain/csp.md
+ verify: shane/org/domain/verify.md
+ metadatacoverage: shane/org/metadatacoverage.md
+ reauth: shane/org/reauth.md
+ refreshtoken: shane/org/refreshtoken.md
+ package2:
+ version:
+ bump: shane/package2/version/bump.md
+ permset:
+ check: shane/permset/check.md
+ create: shane/permset/create.md
+ profile:
+ allowip: shane/profile/allowip.md
+ convert: shane/profile/convert.md
+ project:
+ create: shane/project/create.md
+ remotesite:
+ create: shane/remotesite/create.md
+ source:
+ replace: shane/source/replace.md
+ static:
+ create: shane/static/create.md
+ tab:
+ favorite: shane/tab/favorite.md
+ theme:
+ activate: shane/theme/activate.md
+ tsp:
+ username:
+ update: shane/tsp/username/update.md
+ uiapi:
+ objectinfo: shane/uiapi/objectinfo.md
+ record: shane/uiapi/record.md
+ recordui: shane/uiapi/recordui.md
+ user:
+ allPhotos: shane/user/allPhotos.md
+ lightning:
+ debug: shane/user/lightning/debug.md
+ loginurl: shane/user/loginurl.md
+ password:
+ set: shane/user/password/set.md
+ permset:
+ assign: shane/user/permset/assign.md
+ photo: shane/user/photo.md
+ psl: shane/user/psl.md
+ streaming:
+ list: streaming/list.md
+ pushtopic:
+ create: streaming/pushtopic/create.md
+ deactivate: streaming/pushtopic/deactivate.md
+ delete: streaming/pushtopic/delete.md
+ update: streaming/pushtopic/update.md
+ subscribe: streaming/subscribe.md
+ data:
+ sosl:
+ query: data/sosl/query.md