All Projects → superfaceai → cli

superfaceai / cli

Licence: MIT license
Do not program API integrations! Install them.

Programming Languages

typescript
32286 projects
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to cli

knime-tensorflow
KNIME Deep Learning - Tensorflow Integration
Stars: ✭ 18 (+28.57%)
Mutual labels:  integration
python-way
A curated list of articles, talks, tutorials to help you on your way to be the so called Full Stack Python Dev.
Stars: ✭ 74 (+428.57%)
Mutual labels:  developer-experience
platform
Apinf - Open source API management platform with multi proxy and protocol support
Stars: ✭ 69 (+392.86%)
Mutual labels:  developer-experience
main
Mocks Server monorepo
Stars: ✭ 109 (+678.57%)
Mutual labels:  development-tools
ssc-restapi-client
Communicate with Fortify Software Security Center through REST API in java, a swagger generated client
Stars: ✭ 13 (-7.14%)
Mutual labels:  integration
ld-redux
A library to integrate launch darkly with react redux
Stars: ✭ 33 (+135.71%)
Mutual labels:  integration
rae
A docker-compose development environment orchestrator
Stars: ✭ 13 (-7.14%)
Mutual labels:  development-tools
camel-k-examples
Apache Camel K Examples
Stars: ✭ 48 (+242.86%)
Mutual labels:  integration
onlyoffice-alfresco
The package which enables the users to edit office documents from Alfresco using ONLYOFFICE Document Server, allows multiple users to collaborate in real time and to save back those changes to Alfresco
Stars: ✭ 33 (+135.71%)
Mutual labels:  integration
node-red-contrib-FIWARE official
FIWARE-Node-Red integration supporting NGSI-LD
Stars: ✭ 14 (+0%)
Mutual labels:  integration
KC2PK
KiCad to PartKeepr BOM Tool with Octopart integration
Stars: ✭ 28 (+100%)
Mutual labels:  integration
AnyBlok
AnyBlok is a Python framework for building business applications.
Stars: ✭ 19 (+35.71%)
Mutual labels:  development-tools
onlyoffice-confluence
The plugin which enables the users to edit office documents from Confluence using ONLYOFFICE Document Server, allows multiple users to collaborate in real time and to save back those changes to Confluence
Stars: ✭ 34 (+142.86%)
Mutual labels:  integration
after-work.js
[DEPRECATED] CLI for automated tests in web projects.
Stars: ✭ 56 (+300%)
Mutual labels:  developer-experience
follows-you-github
A simple browser extension that shows a label to indicate that some user follows you on GitHub
Stars: ✭ 25 (+78.57%)
Mutual labels:  developer-experience
Cuba.jl
Library for multidimensional numerical integration with four independent algorithms: Vegas, Suave, Divonne, and Cuhre.
Stars: ✭ 65 (+364.29%)
Mutual labels:  integration
meilisearch-digitalocean
Meilisearch services on DigitalOcean
Stars: ✭ 23 (+64.29%)
Mutual labels:  integration
mimesis-factory
Mimesis integration with factory_boy
Stars: ✭ 42 (+200%)
Mutual labels:  integration
hass-amplifi
A home assistant integration for Ubiquiti Amplifi
Stars: ✭ 17 (+21.43%)
Mutual labels:  integration
csgo-gsi
A Java library for Counter-Strike: Global Offensive's game state integration
Stars: ✭ 23 (+64.29%)
Mutual labels:  integration

CLI

GitHub Workflow Status NPM NPM TypeScript

superface logo

Superface CLI provides access to superface tooling from the CLI.

Table of Contents

Background

Superface (super-interface) is a higher-order API, an abstraction on top of modern APIs like GraphQL and REST. Superface gives you the one interface to discover, connect, and query any capabilities available via conventional APIs.

Through its focus on application-level semantics, Superface decouples the clients from servers, enabling fully autonomous evolution. As such, it minimizes the code base as well as errors and downtimes while providing unmatched resiliency and redundancy.

Superface allows for switching providers at runtime in milliseconds with no development cost. Furthermore, Superface decentralizes the composition and aggregation of integrations, and thus creates an Autonomous Integration Mesh.

Motivation behind Superface is nicely described in this video from APIdays conference.

You can get more information at https://superface.ai and https://superface.ai/docs.

Install

To install this package, just install the cli globally using one of the following commands:

# if using yarn
yarn global add @superfaceai/cli
# otherwise
npm install --global @superfaceai/cli

Or you can use NPX directly with Superface CLI commands:

npx @superfaceai/cli [command]
# eg.
npx @superfaceai/cli install [profileId eg. communication/send-email]

Usage

superface check

Checks all maps, profiles and providers locally linked in super.json. Also can be used to check specific profile and its maps, in that case remote files can be used.

USAGE
  $ superface check [-q] [--noColor] [--noEmoji] [-h] [--profileId <value>] [--providerName <value>] [-s
    <value>] [-j] [-f]

FLAGS
  -f, --failOnWarning     When true command will fail on warning
  -h, --help              show CLI help
  -j, --json              Formats result to JSON
  -q, --quiet             When set to true, disables the shell echo output of action.
  -s, --scan=<value>      When number provided, scan for super.json outside cwd within range represented by this number.
  --noColor               When set to true, disables all colored output.
  --noEmoji               When set to true, disables displaying emoji in output.
  --profileId=<value>     Profile Id in format [scope/](optional)[name]
  --providerName=<value>  Name of provider.

DESCRIPTION
  Checks all maps, profiles and providers locally linked in super.json. Also can be used to check specific profile and
  its maps, in that case remote files can be used.

  Command ends with non zero exit code if errors are found.

EXAMPLES
  $ superface check

  $ superface check -f

  $ superface check --profileId starwars/character-information

  $ superface check --profileId starwars/character-information --providerName swapi

  $ superface check --profileId starwars/character-information --providerName swapi -j

  $ superface check --profileId starwars/character-information --providerName swapi -s 3

  $ superface check --profileId starwars/character-information --providerName swapi -q

See code: src/commands/check.ts

superface compile

Compiles locally linked maps and profiles in super.json. When running without --profileId flag, all locally linked files are compiled. When running with --profileId, a single local profile source file, and all its local maps are compiled. When running with --profileId and --providerName, a single local profile and a single local map are compiled.

USAGE
  $ superface compile [-q] [--noColor] [--noEmoji] [-h] [--profileId <value>] [--providerName <value>] [-s
    <value>] [--onlyProfile | --onlyMap]

FLAGS
  -h, --help              show CLI help
  -q, --quiet             When set to true, disables the shell echo output of action.
  -s, --scan=<value>      When number provided, scan for super.json outside cwd within range represented by this number.
  --noColor               When set to true, disables all colored output.
  --noEmoji               When set to true, disables displaying emoji in output.
  --onlyMap               Compile only a map/maps
  --onlyProfile           Compile only a profile/profiles
  --profileId=<value>     Profile Id in format [scope/](optional)[name]
  --providerName=<value>  Name of provider. This argument is used to compile map

DESCRIPTION
  Compiles locally linked maps and profiles in `super.json`. When running without `--profileId` flag, all locally linked
  files are compiled. When running with `--profileId`, a single local profile source file, and all its local maps are
  compiled. When running with `--profileId` and `--providerName`, a single local profile and a single local map are
  compiled.

EXAMPLES
  $ superface compile

  $ superface compile --profileId starwars/character-information --profile

  $ superface compile --profileId starwars/character-information --profile -q

  $ superface compile --profileId starwars/character-information --providerName swapi --onlyMap

  $ superface compile --profileId starwars/character-information --providerName swapi --onlyMap --onlyProfile

See code: src/commands/compile.ts

superface configure PROVIDERNAME

Configures new provider and map for already installed profile. Provider configuration is dowloaded from a Superface registry or from local file.

USAGE
  $ superface configure [PROVIDERNAME] -p <value> [-q] [--noColor] [--noEmoji] [-h] [--write-env] [-f]
    [--localProvider <value>] [--localMap <value>] [--mapVariant <value>]

ARGUMENTS
  PROVIDERNAME  Provider name.

FLAGS
  -f, --force              When set to true and when provider exists in super.json, overwrites them.
  -h, --help               show CLI help
  -p, --profile=<value>    (required) Specifies profile to associate with provider
  -q, --quiet              When set to true, disables the shell echo output of action.
  --localMap=<value>       Optional filepath to .suma map file
  --localProvider=<value>  Optional filepath to provider.json file
  --mapVariant=<value>     Optional map variant
  --noColor                When set to true, disables all colored output.
  --noEmoji                When set to true, disables displaying emoji in output.
  --write-env              When set to true command writes security variables to .env file

DESCRIPTION
  Configures new provider and map for already installed profile. Provider configuration is dowloaded from a Superface
  registry or from local file.

EXAMPLES
  $ superface configure twilio -p send-sms

  $ superface configure twilio -p send-sms -q

  $ superface configure twilio -p send-sms -f

  $ superface configure twilio -p send-sms --localProvider providers/twilio.provider.json

  $ superface configure twilio -p send-sms --localMap maps/send-sms.twilio.suma

  $ superface configure twilio -p send-sms --mapVariant generated

See code: src/commands/configure.ts

superface create

Creates empty map, profile or/and provider on a local filesystem.

USAGE
  $ superface create [--noColor] [--noEmoji] [-h] [--profileId <value>] [--providerName <value>] [-u
    <value>] [-t <value>] [-v <value>] [--init | --no-init] [--no-super-json] [-i | -q | --profile | --map | --provider]
    [-p <value>] [--mapFileName <value>] [--profileFileName <value>] [--providerFileName <value>] [-s <value>]

FLAGS
  -h, --help                  show CLI help
  -i, --interactive           When set to true, command is used in interactive mode.
  -p, --path=<value>          Base path where files will be created
  -q, --quiet                 When set to true, disables the shell echo output of action.
  -s, --scan=<value>          When number provided, scan for super.json outside cwd within range represented by this
                              number.
  -t, --variant=<value>       Variant of a map
  -u, --usecase=<value>...    Usecases that profile or map contains
  -v, --version=<value>       [default: 1.0.0] Version of a profile
  --init                      When set to true, command will initialize Superface
  --map                       Create a map
  --mapFileName=<value>       Name of map file
  --no-init                   When set to true, command won't initialize Superface
  --no-super-json             When set to true, command won't change SuperJson file
  --noColor                   When set to true, disables all colored output.
  --noEmoji                   When set to true, disables displaying emoji in output.
  --profile                   Create a profile
  --profileFileName=<value>   Name of profile file
  --profileId=<value>         Profile Id in format [scope](optional)/[name]
  --provider                  Create a provider
  --providerFileName=<value>  Name of provider file
  --providerName=<value>...   Names of providers. This argument is used to create maps and/or providers

DESCRIPTION
  Creates empty map, profile or/and provider on a local filesystem.

EXAMPLES
  $ superface create --profileId sms/service --profile

  $ superface create --profileId sms/service --profile -v 1.1-rev133 -u SendSMS ReceiveSMS

  $ superface create --profileId sms/service --providerName twilio --map

  $ superface create --profileId sms/service --providerName twilio --map -t bugfix

  $ superface create --providerName twilio tyntec --provider

  $ superface create --providerName twilio --provider --providerFileName my-provider -p my/path

  $ superface create --profileId sms/service --providerName twilio --provider --map --profile -t bugfix -v 1.1-rev133 -u SendSMS ReceiveSMS

  $ superface create -i

See code: src/commands/create.ts

superface compile

Compiles locally linked maps and profiles in super.json.

When running without --profileId flag, all locally linked files are compiled. When running with --profileId, a single local profile source file, and all its local maps are compiled. When running with --profileId and --providerName, a single local profile and a single local map are compiled.


USAGE
  $ superface compile

OPTIONS
  -h, --help                   show CLI help
  -q, --quiet                  When set to true, disables the shell echo output of action.
  -s, --scan=scan              When number provided, scan for super.json outside cwd within range represented by this number.
  --noColor                    When set to true, disables all colored output.
  --noEmoji                    When set to true, disables displaying emoji in output.
  --onlyMap                    Compile only a map/maps
  --onlyProfile                Compile only a profile/profiles
  --profileId=profileId        Profile Id in format [scope/](optional)[name]
  --providerName=providerName  Name of provider. This argument is used to compile map

EXAMPLES
  $ superface compile
  $ superface compile --profileId starwars/character-information --profile
  $ superface compile --profileId starwars/character-information --profile -q
  $ superface compile --profileId starwars/character-information --providerName swapi --onlyMap
  $ superface compile --profileId starwars/character-information --providerName swapi --onlyMap --onlyProfile

See code: src/commands/compile.ts

superface init [NAME]

Initializes superface local folder structure.

USAGE
  $ superface init [NAME] [-q] [--noColor] [--noEmoji] [-h] [--profiles <value>] [--providers <value>] [-p]

ARGUMENTS
  NAME  Name of parent directory.

FLAGS
  -h, --help              show CLI help
  -p, --prompt            When set to true, prompt will be executed.
  -q, --quiet             When set to true, disables the shell echo output of action.
  --noColor               When set to true, disables all colored output.
  --noEmoji               When set to true, disables displaying emoji in output.
  --profiles=<value>...   Profile identifiers.
  --providers=<value>...  Provider names.

DESCRIPTION
  Initializes superface local folder structure.

EXAMPLES
  $ superface init

  $ superface init foo

  $ superface init foo --providers bar twilio

  $ superface init foo --profiles [email protected] [email protected] --providers osm gmaps

See code: src/commands/init.ts

superface install [PROFILEID]

Automatically initializes superface directory in current working directory if needed, communicates with Superface Store API, stores profiles and compiled files to a local system. Install without any arguments tries to install profiles and providers listed in super.json

USAGE
  $ superface install [PROFILEID] [-q] [--noColor] [--noEmoji] [-h] [-p <value>] [-f] [-l] [-s <value>]

ARGUMENTS
  PROFILEID  Profile identifier consisting of scope (optional), profile name and its version.

FLAGS
  -f, --force                 When set to true and when profile exists in local filesystem, overwrites them.
  -h, --help                  show CLI help
  -l, --local                 When set to true, profile id argument is used as a filepath to profile.supr file.
  -p, --providers=<value>...  Provider name.
  -q, --quiet                 When set to true, disables the shell echo output of action.
  -s, --scan=<value>          When number provided, scan for super.json outside cwd within range represented by this
                              number.
  --noColor                   When set to true, disables all colored output.
  --noEmoji                   When set to true, disables displaying emoji in output.

DESCRIPTION
  Automatically initializes superface directory in current working directory if needed, communicates with Superface
  Store API, stores profiles and compiled files to a local system. Install without any arguments tries to install
  profiles and providers listed in super.json

EXAMPLES
  $ superface install

  $ superface install sms/[email protected]

  $ superface install sms/[email protected] --providers twilio tyntec

  $ superface install sms/[email protected] -p twilio

  $ superface install --local sms/service.supr

See code: src/commands/install.ts

superface lint

Lints all maps and profiles locally linked in super.json. Also can be used to lint specific profile and its maps, in that case remote files can be used.Outputs the linter issues to STDOUT by default.

USAGE
  $ superface lint [-q] [--noColor] [--noEmoji] [-h] [--providerName <value>] [--profileId <value>] [-o
    <value>] [--append] [-f long|short|json] [-s <value>]

FLAGS
  -f, --outputFormat=<option>  [default: short] Output format to use to display errors and warnings.
                               <options: long|short|json>
  -h, --help                   show CLI help
  -o, --output=<value>         [default: -] Filename where the output will be written. `-` is stdout, `-2` is stderr.
  -q, --quiet                  When set to true, disables the shell echo output of action.
  -s, --scan=<value>           When number provided, scan for super.json outside cwd within range represented by this
                               number.
  --append                     Open output file in append mode instead of truncating it if it exists. Has no effect with
                               stdout and stderr streams.
  --noColor                    When set to true, disables all colored output.
  --noEmoji                    When set to true, disables displaying emoji in output.
  --profileId=<value>          Profile Id in format [scope/](optional)[name]
  --providerName=<value>       Provider name

DESCRIPTION
  Lints all maps and profiles locally linked in super.json. Also can be used to lint specific profile and its maps, in
  that case remote files can be used.Outputs the linter issues to STDOUT by default.

  Linter ends with non zero exit code if errors are found.

EXAMPLES
  $ superface lint

  $ superface lint -f long

  $ superface lint --profileId starwars/character-information

  $ superface lint --profileId starwars/character-information --providerName swapi

  $ superface lint -o -2

  $ superface lint -f json

  $ superface lint -s 3

See code: src/commands/lint.ts

superface login

Login to superface server

USAGE
  $ superface login [-q] [--noColor] [--noEmoji] [-h] [-f]

FLAGS
  -f, --force  When set to true user won't be asked to confirm browser opening
  -h, --help   show CLI help
  -q, --quiet  When set to true, disables the shell echo output of action.
  --noColor    When set to true, disables all colored output.
  --noEmoji    When set to true, disables displaying emoji in output.

DESCRIPTION
  Login to superface server

EXAMPLES
  $ superface login

  $ superface login -f

See code: src/commands/login.ts

superface logout

Logs out logged in user

USAGE
  $ superface logout [-q] [--noColor] [--noEmoji] [-h]

FLAGS
  -h, --help   show CLI help
  -q, --quiet  When set to true, disables the shell echo output of action.
  --noColor    When set to true, disables all colored output.
  --noEmoji    When set to true, disables displaying emoji in output.

DESCRIPTION
  Logs out logged in user

EXAMPLES
  $ superface logout

See code: src/commands/logout.ts

superface publish DOCUMENTTYPE

Uploads map/profile/provider to Store. Published file must be locally linked in super.json. This command runs Check and Lint internaly to ensure quality

USAGE
  $ superface publish [DOCUMENTTYPE] --profileId <value> --providerName <value> [-q] [--noColor] [--noEmoji]
    [-h] [--dryRun] [-f] [-s <value>] [-j]

ARGUMENTS
  DOCUMENTTYPE  (map|profile|provider) Document type of published file

FLAGS
  -f, --force             Publishes without asking for any confirmation.
  -h, --help              show CLI help
  -j, --json              Formats result to JSON
  -q, --quiet             When set to true, disables the shell echo output of action.
  -s, --scan=<value>      When a number is provided, scan for super.json outside cwd within the range represented by
                          this number.
  --dryRun                Runs without sending the actual request.
  --noColor               When set to true, disables all colored output.
  --noEmoji               When set to true, disables displaying emoji in output.
  --profileId=<value>     (required) Profile Id in format [scope/](optional)[name]
  --providerName=<value>  (required) Name of the provider. This argument is used to publish a map or a provider.

DESCRIPTION
  Uploads map/profile/provider to Store. Published file must be locally linked in super.json. This command runs Check
  and Lint internaly to ensure quality

EXAMPLES
  $ superface publish map --profileId starwars/character-information --providerName swapi -s 4

  $ superface publish profile --profileId starwars/character-information --providerName swapi -f

  $ superface publish provider --profileId starwars/character-information --providerName swapi -q

  $ superface publish profile --profileId starwars/character-information --providerName swapi --dryRun

See code: src/commands/publish.ts

superface whoami

Prints info about logged in user

USAGE
  $ superface whoami [-q] [--noColor] [--noEmoji] [-h]

FLAGS
  -h, --help   show CLI help
  -q, --quiet  When set to true, disables the shell echo output of action.
  --noColor    When set to true, disables all colored output.
  --noEmoji    When set to true, disables displaying emoji in output.

DESCRIPTION
  Prints info about logged in user

EXAMPLES
  $ superface whoami

  $ sf whoami

See code: src/commands/whoami.ts

Security

Superface is not man-in-the-middle so it does not require any access to secrets that are needed to communicate with provider API. Superface CLI only prepares super.json file with authorization fields in form of environment variable. You just set correct variables and communicate directly with provider API.

You can find more information in SDK repository.

Support

If you need any additional support, have any questions or you just want to talk you can do that through our documentation page.

Development

When developing, start with cloning the repository using git clone https://github.com/superfaceai/cli.git (or git clone [email protected]:superfaceai/cli.git if you have repository access).

After cloning, the dependencies must be downloaded using yarn install or npm install.

Now the repository is ready for code changes.

The package.json also contains scripts (runnable by calling yarn <script-name> or npm run <script-name>):

  • test - run all tests
  • lint - lint the code (use lint --fix to run autofix)
  • format - check the code formatting (use firmat:fix to autoformat)
  • prepush - run test, lint and format checks. This should run without errors before you push anything to git.

Lastly, to build a local artifact run yarn build or npm run build.

To install a local artifact globally, symlink the binary (ln -s bin/superface <target>) into one of the following folders:

  • ~/.local/bin - local binaries for your user only (may not be in PATH yet)
  • /usr/local/bin - system-wide binaries installed by the system administrator
  • output of yarn global bin - usually the same as /use/local/bin

Note: The project needs to be built (into the dist folder) to run cli commands.

Note: You can change url of API requests by setting SUPERFACE_API_URL environment variable to desired base url.

Maintainers

Contributing

Please open an issue first if you want to make larger changes

Feel free to contribute! Please follow the Contribution Guide.

Licenses of node_modules are checked during CI/CD for every commit. Only the following licenses are allowed:

  • 0BDS
  • MIT
  • Apache-2.0
  • ISC
  • BSD-3-Clause
  • BSD-2-Clause
  • CC-BY-4.0
  • CC-BY-3.0;BSD
  • CC0-1.0
  • Unlicense

Note: If editing the README, please conform to the standard-readme specification.

License

The Superface is licensed under the MIT. © 2021 Superface

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].