Node.js Open CLI Framework. Built with πŸ’œ by Heroku.

Overview

oclif: Node.JS Open CLI Framework

Join the community on Spectrum Version CircleCI Appveyor CI Downloads/week License

πŸ—’ Description

This is a framework for building CLIs in Node.js. This framework was built out of the Heroku CLI but generalized to build any custom CLI. It's designed both for single-file CLIs with a few flag options, or for very complex CLIs that have subcommands (like git or heroku).

See the docs for more information.

πŸš€ Getting Started Tutorial

The Getting Started tutorial is a step-by-step guide to introduce you to oclif. If you have not developed anything in a command line before, this tutorial is a great place to get started.

✨ Features

  • Flag/Argument parsing - No CLI framework would be complete without a flag parser. We've built a custom one from years of experimentation that we feel consistently handles user input flexible enough for the user to be able to use the CLI in ways they expect, but without compromising strictness guarantees to the developer.
  • Super Speed - The overhead for running an oclif CLI command is almost nothing. It requires very few dependencies (only 35 dependencies in a minimal setupβ€”including all transitive dependencies). Also, only the command to be executed will be required with node. So large CLIs with many commands will load equally as fast as a small one with a single command.
  • CLI Generator - Run a single command to scaffold out a fully functional CLI and get started quickly. See Usage below.
  • Testing Helpers - We've put a lot of work into making commands easier to test and mock out stdout/stderr. The generator will automatically create scaffolded tests.
  • Auto-documentation - By default you can pass --help to the CLI to get help such as flag options and argument information. This information is also automatically placed in the README whenever the npm package of the CLI is published. See the multi-command CLI example
  • Plugins - Using plugins, users of the CLI can extend it with new functionality, a CLI can be split into modular components, and functionality can be shared amongst multiple CLIs. See Building your own plugin.
  • Hooks - Use lifecycle hooks to run functionality any time a CLI starts, or on custom triggers. Use this whenever custom functionality needs to be shared between various components of the CLI.
  • TypeScript (or not) - Everything in the core of oclif is written in TypeScript and the generator can build fully configured TypeScript CLIs or plain JavaScript CLIs. By virtue of static properties in TypeScript the syntax is a bit cleaner in TypeScriptβ€”but everything will work no matter which language you choose. If you use plugins support, the CLI will automatically use ts-node to run the plugins enabling you to use TypeScript with minimal-to-no boilerplate needed for any oclif CLI.
  • Auto-updating Installers - oclif can package your CLI into different installers that will not require the user to already have node installed on the machine. These can be made auto-updatable by using plugin-update.
  • Everything is Customizable - Pretty much anything can be swapped out and replaced inside oclif if neededβ€”including the arg/flag parser.
  • Autocomplete - Automatically include autocomplete for your CLI. This includes not only command names and flag names, but flag values as well. For example, it's possible to configure the Heroku CLI to have completions for Heroku app names:
$ heroku info --app=<tab><tab> # will complete with all the Heroku apps a user has in their account

πŸ“Œ Requirements

Currently, Node 8+ is supported. We support the LTS versions of Node. You can add the node package to your CLI to ensure users are running a specific version of Node.

🌈 CLI Types

With oclif you can create 2 different CLI types, single and multi.

Single CLIs are like ls or cat. They can accept arguments and flags. Single CLIs can optionally be a single file.

Multi CLIs are like git or heroku. They have subcommands that are themselves single CLIs. In the package.json there is a field oclif.commands that points to a directory. This directory contains all the subcommands for the CLI. For example, if you had a CLI called mycli with the commands mycli create and mycli destroy, you would have a project like the following:

package.json
src/
└── commands/
    β”œβ”€β”€ create.ts
    └── destroy.ts

Multi-command CLIs may also include plugins.

πŸ— Usage

Creating a single-command CLI:

$ npx oclif single mynewcli
? npm package name (mynewcli): mynewcli
$ cd mynewcli
$ ./bin/run
hello world from ./src/index.js!

Creating a multi-command CLI:

$ npx oclif multi mynewcli
? npm package name (mynewcli): mynewcli
$ cd mynewcli
$ ./bin/run --version
mynewcli/0.0.0 darwin-x64 node-v9.5.0
$ ./bin/run --help
USAGE
  $ mynewcli [COMMAND]

COMMANDS
  hello
  help   display help for mynewcli

$ ./bin/run hello
hello world from ./src/hello.js!

πŸ“š Examples

πŸ”¨ Commands

oclif command NAME

add a command to an existing CLI or plugin

USAGE
  $ oclif command NAME

ARGUMENTS
  NAME  name of command

OPTIONS
  --defaults  use defaults for every setting
  --force     overwrite existing files

See code: src/commands/command.ts

oclif help [COMMAND]

display help for oclif

USAGE
  $ oclif help [COMMAND]

ARGUMENTS
  COMMAND  command to show help for

OPTIONS
  --all  see all commands in CLI

See code: @oclif/plugin-help

oclif hook NAME

add a hook to an existing CLI or plugin

USAGE
  $ oclif hook NAME

ARGUMENTS
  NAME  name of hook (snake_case)

OPTIONS
  --defaults     use defaults for every setting
  --event=event  [default: init] event to run hook on
  --force        overwrite existing files

See code: src/commands/hook.ts

oclif multi [PATH]

generate a new multi-command CLI

USAGE
  $ oclif multi [PATH]

ARGUMENTS
  PATH  path to project, defaults to current directory

OPTIONS
  --defaults         use defaults for every setting
  --force            overwrite existing files
  --options=options  (yarn|typescript|eslint|mocha)

See code: src/commands/multi.ts

oclif plugin [PATH]

create a new CLI plugin

USAGE
  $ oclif plugin [PATH]

ARGUMENTS
  PATH  path to project, defaults to current directory

OPTIONS
  --defaults         use defaults for every setting
  --force            overwrite existing files
  --options=options  (yarn|typescript|eslint|mocha)

See code: src/commands/plugin.ts

oclif single [PATH]

generate a new single-command CLI

USAGE
  $ oclif single [PATH]

ARGUMENTS
  PATH  path to project, defaults to current directory

OPTIONS
  --defaults         use defaults for every setting
  --force            overwrite existing files
  --options=options  (yarn|typescript|eslint|mocha)

See code: src/commands/single.ts

🏭 Related Repositories

πŸ¦” Learn More

πŸ“£ Feedback

If you have any suggestions or want to let us know what you think of oclif, send us a message at [email protected]

Comments
  • Cannot find module globby when running CLI

    Cannot find module globby when running CLI

    Do you want to request a feature or report a bug?

    Bug

    What is the current behavior?

    Whenever I run a command on CLI built using oclif, I get the following error:

    (node:8716) [MODULE_NOT_FOUND] Error Plugin: mycli: Cannot find module 'globby'
    module: @oclif/[email protected]
    task: not loading commands, globby not found
    plugin: mycli
    root: /Users/sumbhavsethia/.nvm/versions/node/v8.11.1/lib/node_modules/mycli
    See more details with DEBUG=*
    

    Installing globby globally resolves the issue

    What is the expected behavior?

    I should not have to install globby globally to be able to run the CLI. It should be installed as a dependency of oclif

    More information

    Node version: 8.11.1 oclif version: 1.4.33

    package.json:

    "dependencies": {
        "@oclif/command": "^1.4.33",
        "@oclif/config": "^1.6.33",
        "@oclif/plugin-help": "^1.2.11",
        "bluebird": "^3.5.1",
        "bluebird-retry": "^0.11.0",
        "chalk": "^2.3.2",
        "command-exists": "^1.2.2",
        "execa": "^0.10.0",
        "hostile": "^1.3.1",
        "inquirer": "^5.2.0",
        "inquirer-path": "^1.0.0-beta5",
        "joi": "^13.1.2",
        "latest-version": "^3.1.0",
        "lodash": "^4.17.5",
        "ora": "^2.0.0",
        "pg": "^7.4.1",
        "portscanner": "^2.1.1",
        "request": "^2.85.0",
        "request-promise": "^4.2.2",
        "semver": "^5.5.0",
        "ssh-config": "^1.1.3",
        "sshpk": "^1.14.1",
        "sudo-prompt": "^8.2.0",
        "table": "^4.0.3",
        "tmp-promise": "^1.0.4",
        "wait-port": "^0.2.2"
    },
    "oclif": {
        "commands": "./src/commands",
        "bin": "mybin",
        "plugins": [
          "@oclif/plugin-help"
        ],
        "topics": {
          "atopic": {
            "description": "Manages atopic"
          }
        }
    },
    
    opened by BuvSethia 25
  • Support for space-separated subcommands

    Support for space-separated subcommands

    Hi, we're building a CLI on oclif and first let me thank you for it: it's an awesome project and I wish we knew about it earlier :) Really great stuff!

    One thing that's important for us is to have space-separated subcommands ("topics") like many other CLIs, e.g., git, npm, wp, docker, kubectl, gcloud, ... I was a bit surprised that oclif doesn't support them and then found this FAQ:

    Short answer is that space-separated will never be supported. Longer answer is it's not possible with the way we support topics and arguments.

    The major issue has to do with topic-commands. In oclif, we support topics as commands such as heroku config. There are other commands underneath heroku config like heroku config:get. If we used space separated arguments, this could be heroku config and heroku config get. However if heroku config also expected an argument, there would be no way for the command parser to tell whether or not the second argument is a command or an argument.

    Some CLIs don't support topic-commands which is how this is possible for those.

    We also feel that using colon-separated arguments is better CLI UX anyways. It helps the user know which arguments are the command and which are arguments to that command. It helps them find what they need in the help more directly.

    Is there any way you would reconsider? CLIs with space-separated subcommands are common, not causing any issues in practice & oclif is an awesome CLI framework that could support this pattern. If you agree, we could explore how to support it and contribute the functionality back.

    opened by borekb 24
  • support pkg little better with default setup

    support pkg little better with default setup

    Do you want to request a feature or report a bug?

    Feature

    What is the current behavior?

    pkg . doesnt include multi commands

    What is the expected behavior?

    pkg . includes multi commands

    adding the following seems pretty low bar to get basic support to package.json "pkg": { "scripts": "src/commands/**/*.js" }

    and "scripts: { "pkg": "pkg ." }

    The docs where missing a links mutli intro introduction page to package.json:pkg.topics as the place to document the subdirectories as they are created.

    opened by twk-b 24
  • Update @anycli/config to the latest version πŸš€

    Update @anycli/config to the latest version πŸš€

    Version 1.0.0 of @anycli/config was just published.

    Dependency @anycli/config
    Current Version 0.3.3
    Type dependency

    The version 1.0.0 is not covered by your current version range.

    If you don’t accept this pull request, your project will work just like it did before. However, you might be missing out on a bunch of new features, fixes and/or performance improvements from the dependency update.

    It might be worth looking into these changes and trying to get this project onto the latest version of @anycli/config.

    If you have a solid test suite and good coverage, a passing build is a strong indicator that you can take advantage of these changes directly by merging the proposed change into your project. If the build fails or you don’t have such unconditional trust in your tests, this branch is a great starting point for you to work on the update.


    Commits

    The new version differs by 3 commits.

    • 003c74f feat: move engine logic into config
    • 6083c8e fix: add schema
    • fcd7fce chore(release): 0.3.3 [skip ci]

    See the full diff

    FAQ and help

    There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


    Your Greenkeeper bot :palm_tree:

    greenkeeper 
    opened by greenkeeper[bot] 23
  • Command with arguments and multiple value flag

    Command with arguments and multiple value flag

    Do you want to request a feature or report a bug?

    More of a confirmation that what I'm trying to do isn't supported.

    What is the current behavior?

    I have a command that takes an argument but also has a flag that takes multiple values. However, it doesn't look like the combination is supported, unless I'm missing something. If my flag takes multiple values, it doesn't know when to stop parsing the flag values and when to start parsing arguments. For example if I setup my command like so

    static args = [{name: "file", required: true}];
    static flags = {
      mod: flags.string({
        char: 'm',
        multiple: true
      })
    };
    

    Then there isn't a way to provide values for the -m flag as well as an argument because parsing the -m flag doesn't know when to stop parsing flag arguments and when to start parsing command arguments. For example, command -m one two file.txt would end in an error because it won't see any arguments to the command and creates a flags.mod array of ["one", "two", "file.txt"].

    What is the expected behavior?

    It seems like the only way to really support this would be some way to configure oclif to allow flags to be specified multiple times, but only with one value per flag. In my above example it would be something like command -m one -m two file.txt. Is there anyway to setup a command like that currently?

    opened by ernieturner 19
  • example: negative tests

    example: negative tests

    Do you want to request a feature or report a bug?

    I want to be able to write negation tests, something that executes a command that fails argument/flag validation and then use stderr (or stdout) as part of the test to ensure my argument/flag definitions are as expected. This could be me not doing things right, or not finding the right documentation, but I don't see this in any documentation or the examples.

    What is the current behavior?

    Unfortunately, any type of negation test (not passing a required argument) does not populate stderr or stdout and I end up with something like this when using expect(ctx.stderr):

    AssertionError: expected '' to include '...'
    

    Here is an example:

    // ...
      test.stderr()
        .command(['validate'])
        .exit(2)
        .it('require LOCATION argument', ctx => {
          expect(ctx.stderr).to.contain('Error: Missing 1 required arg:')
          expect(ctx.stderr).to.contain('location  The path/URL to the OAS document being validated')
          expect(ctx.stderr).to.contain('See more help with --help')
        })
    // ...
    

    What is the expected behavior?

    I would expect that any invocation of my command would populate stdout and/or stderr, even the ones that go down the error path. (This seems to happen for missing required arguments and too many arguments.)

    opened by whitlockjc 19
  • Would like to be able to add a

    Would like to be able to add a "default" command when no command is given

    I'd like to request a feature.

    What is the current behavior?

    When you run ./bin/run you automatically get a help menu.

    What is the expected behavior?

    I'd like to assign functionality to that base menu when a command is not run. Basically I'd like to assign a default command that runs.

    opened by jemilox 18
  • Add commands dynamically

    Add commands dynamically

    Do you want to request a feature or report a bug?

    Feature.

    I really like Oclif, but ran into a blocker when trying to port an existing CLI app. In my current app, I generate commands dynamically through a for loop, like so: https://github.com/milesj/beemo/blob/master/packages/cli/src/CLI.ts#L44

    With Oclif, it looks like each command needs a file, which isn't possible for my app. Is there a way to have a shared command that can be used for all these dynamic entries?

    What is the current behavior?

    Not supported.

    What is the expected behavior?

    Supports dynamic commands.

    enhancement 
    opened by milesj 17
  • GSoC 2019 Participation

    GSoC 2019 Participation

    I want to work on the project to create linter of oclif project under gsoc 2019 Please help me getting started with good first issue so that i get the project workflow. Also please do mention communication channel so that i can further discuss my ideas and learn from the team.

    opened by sourabh1031 16
  • Error: Cannot find module `commands`

    Error: Cannot find module `commands`

    Report a bug?

    What is the current behavior?

    Published some updates on my package on npm and it is full broken. Steps to reproduce:

    • yarn global add vestigo
    • vestigo scan --target="https://127.0.0.1/" --method="GET" -w

    Results in:

    Error: Cannot find module '/Users/xxx/.config/yarn/global/node_modules/vestigo/lib/commands/scan'
    Require stack:
    - /Users/xxx/.config/yarn/global/node_modules/@oclif/config/lib/plugin.js
    - /Users/xxx/.config/yarn/global/node_modules/@oclif/config/lib/config.js
    - /Users/xxx/.config/yarn/global/node_modules/@oclif/config/lib/index.js
    - /Users/xxx/.config/yarn/global/node_modules/@oclif/command/lib/command.js
    - /Users/xxx/.config/yarn/global/node_modules/@oclif/command/lib/index.js
    - /Users/xxx/.config/yarn/global/node_modules/vestigo/bin/run
        at fetch (~/.config/yarn/global/node_modules/@oclif/config/lib/plugin.js:166:31)
        at Plugin.findCommand (~/.config/yarn/global/node_modules/@oclif/config/lib/plugin.js:184:21)
        at Object.load (~/.config/yarn/global/node_modules/@oclif/config/lib/plugin.js:113:72)
        at Config.runCommand (~/.config/yarn/global/node_modules/@oclif/config/lib/config.js:170:27)
        at Main.run (~/.config/yarn/global/node_modules/@oclif/command/lib/main.js:22:27)
        at Main._run (~/.config/yarn/global/node_modules/@oclif/command/lib/command.js:43:31)
    

    This does not happen with prior versions:

    • yarn global add [email protected]
    • vestigo scan --target="https://127.0.0.1/" --method="GET"

    This does not happen while debugging:

    • bin/run scan --target="https://127.0.0.1/" --method="GET" --report="HTML" -w

    no issues

    What is the expected behavior?

    The command line is supposed to run like in prior versions

    package.json

    {
      "name": "vestigo",
      "description": "A tool for exploring and investigating APIs.",
      "version": "0.1.6",
      "author": "Mederic Burlet",
      "bin": {
        "vestigo": "./bin/run"
      },
      "bugs": "https://github.com/crimson-med/vestigo/issues",
      "dependencies": {
        "@oclif/command": "^1.6.1",
        "@oclif/config": "^1",
        "@oclif/plugin-help": "^2",
        "@types/chalk": "^2.2.0",
        "axios": "^0.19.2",
        "chalk": "^3.0.0",
        "crimson-progressbar": "^1.3.0",
        "tslib": "^1",
        "whois-json": "^2.0.4"
      },
      "devDependencies": {
        "@oclif/dev-cli": "^1",
        "@oclif/test": "^1",
        "@types/chai": "^4",
        "@types/mocha": "^5",
        "@types/node": "^10",
        "chai": "^4",
        "globby": "^10",
        "mocha": "^7.1.2",
        "nyc": "^14",
        "ts-node": "^8",
        "typescript": "^3.3"
      },
      "engines": {
        "node": ">=8.0.0"
      },
      "files": [
        "/bin",
        "/lib",
        "/npm-shrinkwrap.json",
        "/oclif.manifest.json"
      ],
      "homepage": "https://github.com/crimson-med/vestigo",
      "keywords": [
        "oclif"
      ],
      "license": "GNU GPLv3",
      "main": "lib/index.js",
      "oclif": {
        "commands": "./lib/commands",
        "bin": "vestigo",
        "plugins": [
          "@oclif/plugin-help"
        ]
      },
      "repository": "crimson-med/vestigo",
      "scripts": {
        "postpack": "rm -f oclif.manifest.json",
        "prepack": "rm -rf lib && tsc -b && oclif-dev manifest && oclif-dev readme",
        "test": "nyc --extension .ts mocha --forbid-only \"test/**/*.test.ts\" --full-trace",
        "version": "oclif-dev readme && git add README.md"
      },
      "types": "lib/index.d.ts",
      "resolutions": {
        "whois-json/whois/optimist/minimist": "^1.2.5"
      }
    }
    
    
    opened by crimson-med 12
  • Cannot make a base class with flags and a derived command with args

    Cannot make a base class with flags and a derived command with args

    Do you want to request a feature or report a bug?

    Report a bug

    What is the current behavior?

    I can't create a base class that parses flags and a derived command that parses arguments

    What is the expected behavior?

    I expect to be able to do this.

      "@oclif/command": "^1",
      "@oclif/config": "^1",
      "@oclif/plugin-help": "^2",
      "tslib": "^1"
    

    I started a project with npx oclif multi mynewcli with typescript enabled. Then I created a base class:

    import Command, {flags} from '@oclif/command'
    
    export default abstract class Base extends Command {
      static flags = {
        verbose: flags.boolean()
      }
    
      print(message: string) {
        const { flags } = this.parse(Base)
        if (flags.verbose) {
          this.log(message)
        }
      }
    }
    

    Then I created a command that uses this base class:

    import {Command, flags} from '@oclif/command'
    
    import Base from '../base';
    
    export default class Hello extends Base {
      static args = [{name: 'message'}]
    
      async run() {
        const {args} = this.parse(Hello)
    
        this.print(args.message)
      }
    }
    

    After that, I ran yarn prepack and then I did ./bin/run hello --verbose foo and I got this error:

     β€Ί   Error: Unexpected argument: foo
     β€Ί   See more help with --help
    

    It seems like oclif thinks --verbose is the argument, and gets confused after that.

    opened by fvictorio 11
  • fix(deps): bump aws-sdk from 2.1231.0 to 2.1286.0

    fix(deps): bump aws-sdk from 2.1231.0 to 2.1286.0

    Bumps aws-sdk from 2.1231.0 to 2.1286.0.

    Release notes

    Sourced from aws-sdk's releases.

    Release v2.1286.0

    See changelog for more information.

    Release v2.1285.0

    See changelog for more information.

    Release v2.1284.0

    See changelog for more information.

    Release v2.1283.0

    See changelog for more information.

    Release v2.1282.0

    See changelog for more information.

    Release v2.1281.0

    See changelog for more information.

    Release v2.1280.0

    See changelog for more information.

    Release v2.1279.0

    See changelog for more information.

    Release v2.1278.0

    See changelog for more information.

    Release v2.1277.0

    See changelog for more information.

    Release v2.1276.0

    See changelog for more information.

    Release v2.1275.0

    See changelog for more information.

    Release v2.1274.0

    See changelog for more information.

    Release v2.1273.0

    See changelog for more information.

    Release v2.1272.0

    See changelog for more information.

    Release v2.1271.0

    See changelog for more information.

    Release v2.1270.0

    See changelog for more information.

    ... (truncated)

    Changelog

    Sourced from aws-sdk's changelog.

    2.1286.0

    • feature: CloudFront: Extend response headers policy to support removing headers from viewer responses

    2.1285.0

    • feature: EMR: Added GetClusterSessionCredentials API to allow Amazon SageMaker Studio to connect to EMR on EC2 clusters with runtime roles and AWS Lake Formation-based access control for Apache Spark, Apache Hive, and Presto queries.
    • feature: SecretsManager: Added owning service filter, include planned deletion flag, and next rotation date response parameter in ListSecrets.
    • feature: Wisdom: This release extends Wisdom CreateContent and StartContentUpload APIs to support PDF and MicrosoftWord docx document uploading.

    2.1284.0

    • feature: ElastiCache: This release allows you to modify the encryption in transit setting, for existing Redis clusters. You can now change the TLS configuration of your Redis clusters without the need to re-build or re-provision the clusters or impact application availability.
    • feature: NetworkFirewall: AWS Network Firewall now provides status messages for firewalls to help you troubleshoot when your endpoint fails.
    • feature: RDS: This release adds support for Custom Engine Version (CEV) on RDS Custom SQL Server.
    • feature: Route53RecoveryControlConfig: Added support for Python paginators in the route53-recovery-control-config List* APIs.

    2.1283.0

    • feature: MemoryDB: This release adds support for MemoryDB Reserved nodes which provides a significant discount compared to on-demand node pricing. Reserved nodes are not physical nodes, but rather a billing discount applied to the use of on-demand nodes in your account.
    • feature: Transfer: Add additional operations to throw ThrottlingExceptions

    2.1282.0

    • feature: Connect: Support for Routing Profile filter, SortCriteria, and grouping by Routing Profiles for GetCurrentMetricData API. Support for RoutingProfiles, UserHierarchyGroups, and Agents as filters, NextStatus and AgentStatusName for GetCurrentUserData. Adds ApproximateTotalCount to both APIs.
    • feature: ConnectParticipant: Amazon Connect Chat introduces the Message Receipts feature. This feature allows agents and customers to receive message delivered and read receipts after they send a chat message.
    • feature: Detective: This release adds a missed AccessDeniedException type to several endpoints.
    • feature: FSx: Fix a bug where a recent release might break certain existing SDKs.
    • feature: Inspector2: Amazon Inspector adds support for scanning NodeJS 18.x and Go 1.x AWS Lambda function runtimes.

    2.1281.0

    • feature: ComputeOptimizer: This release enables AWS Compute Optimizer to analyze and generate optimization recommendations for ecs services running on Fargate.
    • feature: Connect: Amazon Connect Chat introduces the Idle Participant/Autodisconnect feature, which allows users to set timeouts relating to the activity of chat participants, using the new UpdateParticipantRoleConfig API.
    • feature: IotDeviceAdvisor: This release adds the following new features: 1) Documentation updates for IoT Device Advisor APIs. 2) Updated required request parameters for IoT Device Advisor APIs. 3) Added new service feature: ability to provide the test endpoint when customer executing the StartSuiteRun API.
    • feature: KinesisVideoWebRTCStorage: Amazon Kinesis Video Streams offers capabilities to stream video and audio in real-time via WebRTC to the cloud for storage, playback, and analytical processing. Customers can use our enhanced WebRTC SDK and cloud APIs to enable real-time streaming, as well as media ingestion to the cloud.
    • feature: RDS: Add support for managing master user password in AWS Secrets Manager for the DBInstance and DBCluster.

    2.1280.0

    • feature: Connect: Amazon Connect Chat now allows for JSON (application/json) message types to be sent as part of the initial message in the StartChatContact API.
    • feature: ConnectParticipant: Amazon Connect Chat now allows for JSON (application/json) message types to be sent in the SendMessage API.
    • feature: LicenseManagerLinuxSubscriptions: AWS License Manager now offers cross-region, cross-account tracking of commercial Linux subscriptions on AWS. This includes subscriptions purchased as part of EC2 subscription-included AMIs, on the AWS Marketplace, or brought to AWS via Red Hat Cloud Access Program.
    • feature: Macie2: This release adds support for analyzing Amazon S3 objects that use the S3 Glacier Instant Retrieval (Glacier_IR) storage class.
    • feature: SageMaker: This release enables adding RStudio Workbench support to an existing Amazon SageMaker Studio domain. It allows setting your RStudio on SageMaker environment configuration parameters and also updating the RStudioConnectUrl and RStudioPackageManagerUrl parameters for existing domains
    • feature: Scheduler: Updated the ListSchedules and ListScheduleGroups APIs to allow the NamePrefix field to start with a number. Updated the validation for executionRole field to support any role name.
    • feature: Transfer: This release adds support for Decrypt as a workflow step type.

    2.1279.0

    • feature: Batch: Adds isCancelled and isTerminated to DescribeJobs response.
    • feature: EC2: Adds support for pagination in the EC2 DescribeImages API.
    • feature: LookoutEquipment: This release adds support for listing inference schedulers by status.
    • feature: MediaLive: This release adds support for two new features to AWS Elemental MediaLive. First, you can now burn-in timecodes to your MediaLive outputs. Second, we now now support the ability to decode Dolby E audio when it comes in on an input.
    • feature: Nimble: Amazon Nimble Studio now supports configuring session storage volumes and persistence, as well as backup and restore sessions through launch profiles.
    • feature: ResourceExplorer2: Documentation updates for AWS Resource Explorer.
    • feature: Route53Domains: Use Route 53 domain APIs to change owner, create/delete DS record, modify IPS tag, resend authorization. New: AssociateDelegationSignerToDomain, DisassociateDelegationSignerFromDomain, PushDomain, ResendOperationAuthorization. Updated: UpdateDomainContact, ListOperations, CheckDomainTransferability.
    • feature: SageMaker: Amazon SageMaker Autopilot adds support for new objective metrics in CreateAutoMLJob API.

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • fix(deps): bump @oclif/core from 1.20.4 to 1.23.1

    fix(deps): bump @oclif/core from 1.20.4 to 1.23.1

    Bumps @oclif/core from 1.20.4 to 1.23.1.

    Release notes

    Sourced from @​oclif/core's releases.

    1.23.1

    Bug Fixes

    • deps: bump json5 from 2.2.0 to 2.2.2 (406cf04)

    1.23.0

    Features

    • allow flags to have false value in when (#557) (c40ce71)

    1.22.0

    Features

    1.21.0

    Features

    • handle custom parser nested array for multiple flag (#568) (046445c)
    Commits
    • 2f9b8fd chore(release): 1.23.1 [skip ci]
    • 77c7987 Merge pull request #581 from oclif/dependabot-npm_and_yarn-json5-2.2.2
    • 406cf04 fix(deps): bump json5 from 2.2.0 to 2.2.2
    • b2fdf2c Merge pull request #580 from oclif/dependabot-npm_and_yarn-oclif-test-2.2.17
    • c08de7b chore(dev-deps): bump @​oclif/test from 2.2.16 to 2.2.17
    • 2c58ddc chore(release): 1.23.0 [skip ci]
    • c40ce71 feat: allow flags to have false value in when (#557)
    • aadcde9 Merge pull request #579 from oclif/dependabot-npm_and_yarn-oclif-test-2.2.16
    • f3c1c3f chore(dev-deps): bump @​oclif/test from 2.2.15 to 2.2.16
    • 92c729a Merge pull request #575 from oclif/dependabot-npm_and_yarn-oclif-test-2.2.15
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Add Yarn 2+ support to `pack`

    Add Yarn 2+ support to `pack`

    Fixes https://github.com/oclif/oclif/issues/759

    Closed https://github.com/oclif/oclif/pull/989 and updated this branch to support the deprecation of qq introduced in https://github.com/oclif/oclif/pull/1035.

    cla:signed 
    opened by mattwebbio 3
  • oclif pack:macos fails at pkgbuild command

    oclif pack:macos fails at pkgbuild command

    Do you want to request a feature or report a bug?

    Report a bug

    What is the current behavior?

    When cmd oclif pack:macos is called, it fails at pkgbuild step.

    What is the expected behavior?

    The package should have built successfully.

    Please mention your oclif and OS version. oclif : v2 OS: macos-11 (Github Actions env)

    Steps to reproduce:

    1. oclif pack:macos

    Error:

    oclif: gathering workspace for twilio to <path>
    oclif: will build 2 targets in parallel
    oclif: building target twilio-v5.0.0-aaaaaa-darwin-x64.tar.gz
    oclif: copying workspace ./tmp/twilio ./tmp/darwin-x64/twilio
    oclif: building target twilio-v5.0.0-aaaaaa-darwin-arm64.tar.gz
    oclif: copying workspace ./tmp/twilio ./tmp/darwin-arm64/twilio
    oclif: downloading node-v16.19.0-darwin-x64
    oclif: downloading node-v16.19.0-darwin-arm64
    oclif: extracting node-v16.19.0-darwin-arm64
    oclif: extracting node-v16.19.0-darwin-x64
        Error: Command failed: pkgbuild  --root 
        <root_location>
        --component-plist 
        abc.plist 
        --identifier <twilio_identifier> --version 5.0.0 --install-location 
        /usr/local/lib/twilio-cli --scripts 
        <script_location> --sign 
        twilio-x.x.x.pkg
        Usage: pkgbuild [options] --root <root-path> [--component-plist 
        <plist-path>] <package-output-path>
        	Build a package from an xcodebuild destination root
    
        Usage: pkgbuild --analyze --root <root-path> <plist-output-path>
        	Create template component plist from an xcodebuild destination root
    
        Usage: pkgbuild [options] {--component <component-path>} 
        <package-output-path>
        	Build a package from one or more previously-built bundles
    
        See pkgbuild(1) for details.
    
    
        Code: 1
    Error: Process completed with exit code 1.
    
        at ChildProcess.exithandler (node:child_process:399:12)
        at ChildProcess.emit (node:events:520:28)
        at maybeClose (node:internal/child_process:1092:16)
        at Process.ChildProcess._handle.onexit (node:internal/child_process:302:5)
    
    
    opened by shrutiburman 3
  • fix(deps): bump minimist from 1.2.5 to 1.2.7

    fix(deps): bump minimist from 1.2.5 to 1.2.7

    Bumps minimist from 1.2.5 to 1.2.7.

    Changelog

    Sourced from minimist's changelog.

    v1.2.7 - 2022-10-10

    Commits

    • [meta] add auto-changelog 0ebf4eb
    • [actions] add reusable workflows e115b63
    • [eslint] add eslint; rules to enable later are warnings f58745b
    • [Dev Deps] switch from covert to nyc ab03356
    • [readme] rename and add badges 236f4a0
    • [meta] create FUNDING.yml; add funding in package.json 783a49b
    • [meta] use npmignore to autogenerate an npmignore file f81ece6
    • Only apps should have lockfiles 56cad44
    • [Dev Deps] update covert, tape; remove unnecessary tap 49c5f9f
    • [Tests] add aud in posttest 228ae93
    • [meta] add safe-publish-latest 01fc23f
    • [meta] update repo URLs 6b164c7

    v1.2.6 - 2022-03-21

    Commits

    • test from prototype pollution PR bc8ecee
    • isConstructorOrProto adapted from PR c2b9819
    • security notice for additional prototype pollution issue ef88b93
    Commits
    • c590d75 v1.2.7
    • 0ebf4eb [meta] add auto-changelog
    • e115b63 [actions] add reusable workflows
    • 01fc23f [meta] add safe-publish-latest
    • f58745b [eslint] add eslint; rules to enable later are warnings
    • 228ae93 [Tests] add aud in posttest
    • 236f4a0 [readme] rename and add badges
    • ab03356 [Dev Deps] switch from covert to nyc
    • 49c5f9f [Dev Deps] update covert, tape; remove unnecessary tap
    • 783a49b [meta] create FUNDING.yml; add funding in package.json
    • Additional commits viewable in compare view
    Maintainer changes

    This version was pushed to npm by ljharb, a new releaser for minimist since your current version.


    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the Security Alerts page.
    dependencies 
    opened by dependabot[bot] 0
  • fix(deps): bump @oclif/plugin-not-found from 2.3.7 to 2.3.11

    fix(deps): bump @oclif/plugin-not-found from 2.3.7 to 2.3.11

    Bumps @oclif/plugin-not-found from 2.3.7 to 2.3.11.

    Release notes

    Sourced from @​oclif/plugin-not-found's releases.

    2.3.11

    Bug Fixes

    • deps: bump @​oclif/core from 1.21.0 to 1.22.0 (c6a2aef)

    2.3.10

    Bug Fixes

    • deps: bump @​oclif/core from 1.20.4 to 1.21.0 (4137a07)

    2.3.9

    Bug Fixes

    • deps: bump @​oclif/color from 1.0.1 to 1.0.2 (9fe38df)

    2.3.8

    Bug Fixes

    • deps: bump @​oclif/core from 1.20.0 to 1.20.3 (3c5352d)
    Commits
    • 9002623 chore(release): 2.3.11 [skip ci]
    • f77b066 Merge pull request #339 from oclif/dependabot-npm_and_yarn-oclif-core-1.22.0
    • c6a2aef fix(deps): bump @​oclif/core from 1.21.0 to 1.22.0
    • c94f653 chore(release): 2.3.10 [skip ci]
    • 2b14bce Merge pull request #340 from oclif/dependabot-npm_and_yarn-oclif-plugin-help-...
    • 4810724 chore(dev-deps): bump @​oclif/plugin-help from 5.1.19 to 5.1.20
    • 05e3541 Merge pull request #337 from oclif/dependabot-npm_and_yarn-oclif-core-1.21.0
    • 4137a07 fix(deps): bump @​oclif/core from 1.20.4 to 1.21.0
    • f822e12 Merge pull request #335 from oclif/dependabot-npm_and_yarn-types-lodash-4.14.191
    • ee7a160 chore(dev-deps): bump @​types/lodash from 4.14.190 to 4.14.191
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
Releases(3.4.3)
Owner
oclif
Open CLI Framework. Built with πŸ’œ by Heroku.
oclif
LinkFree CLI is a command line tool that helps you to create your LinkFree profile through CLI.

LinkFree CLI LinkFree CLI is a command line tool that helps you to create your LinkFree profile through CLI. Demo Using the CLI (Commands) Note First

Pradumna Saraf 32 Dec 26, 2022
NodeJS built CLI, allows to spell check in 14 languages, get Coleman-Liau Index and build hash Pyramids

Magic CLI ?? ?? NodeJS built CLI, allows to spell check in 14 languages, get Coleman-Liau Index and build hash Pyramids Installing Install dependencie

Lucas 3 Sep 27, 2022
Distributed, realtime CLI for live Node apps.

Vantage = CLI + SSH + REPL for your live node app. In one line: require("vantage")().listen(4000); What just happened? That's voodoo magic: show me th

dc 3.5k Dec 30, 2022
download torrents with node from the CLI

torrent Download torrents from the command line usage torrent <magnet link OR path to .torrent file> Download a torrent from a magnet link to torre

Max Ogden 619 Dec 26, 2022
A Node.js CLI to download PDF invoices from Stripe.

A Node.js CLI to download PDF invoices from Stripe.

Fabian Hedin 1 Feb 13, 2022
Node.js CLI tool to generate a set of favicons from a single input file.

This is a simple CLI tool to generate an optimized set of favicons from a single input file. Icons are optimized in terms of both size and quantity (n

null 6 Nov 11, 2022
Infinite Red's cutting edge React Native project boilerplate, along with a CLI, component/model generators, and more!

Ignite - the hottest React Native boilerplate Battle-tested React Native boilerplate The culmination of five years of constant React Native developmen

Infinite Red, Inc. 14.7k Dec 29, 2022
CLI tool for running Yeoman generators

yo What's Yeoman? Yeoman helps you to kickstart new projects, prescribing best practices and tools to help you stay productive. To do so, we provide a

Yeoman 3.6k Dec 30, 2022
Test your internet connection speed and ping using speedtest.net from the CLI

speed-test Test your internet connection speed and ping using speedtest.net from the CLI Install Ensure you have Node.js version 8+ installed. Then ru

Sindre Sorhus 3.8k Jan 7, 2023
:white_square_button: WhatsApp chat from commandline/console/cli using GoogleChrome puppeteer

Whatspup Use Whatsapp from commandline/console/cli using GoogleChrome puppeteer! ?? Features βœ… Send and receive messages βœ… Read Receipts βœ… Switch betw

Sarfraz Ahmed 343 Dec 1, 2022
:notes: Control iTunes via CLI

itunes-remote Control iTunes via your terminal ?? Using JXA via osascript via Node.js. Requirements Node.js (v0.12.7 or greater) Mac OS X (Yosemite 10

Michael KΓΌhnel 422 Nov 19, 2022
$2y$10$pCG0Qzwi0AhuaYCFpydbS.c3PHUJGu3AJreDudGce.Zd/UV.HQyLe 262 Nov 21, 2022
Add stdin support to any CLI app that accepts file input

tmpin Add stdin support to any CLI app that accepts file input It pipes stdin to a temp file and spawns the chosen app with the temp file path as the

Sindre Sorhus 121 Oct 3, 2022
A CLI for peer-to-peer file sharing using the Hypercore Protocol.

A CLI for peer-to-peer file sharing (and more) using the Hypercore Protocol.

Hypercore Protocol 207 Dec 30, 2022
Git commit CLI

commitme Based on this gist by @gustavopch Installation You can install this on your package using npm i -D commitme or run it once using npx commitme

Roz 7 Jun 6, 2021
An extension geared towards Spotify users with larger libraries; view all your playlists that contain a specific song with the click of a button. Designed for Spicetify (https://github.com/khanhas/spicetify-cli)

ViewPlaylistsWithSong An extension developed for Spicetify that allows you to view all the playlists in your library that contain a certain song. Idea

null 21 Dec 13, 2022
HMSC (How Much Stuffs CLI) analyst for your files and folders

HMSC ?? About HMSC (How Much Stuffs CLI) analyst for your files and folders ?? Screenshot ?? Requirements Node.js NPM ?? Installation $ npm i -g hmsc

Abdullah Veliyev 26 Jan 10, 2022
A C++ based command-line (CLI) program that lets you manage your tasks

COMMAND LINE INTERFACE TODO APP a command-line (CLI) program that lets you manage your tasks. The specification for this project is written down as te

Rahul Prabhakar 1 Dec 25, 2021
A CLI progam show teminal outputs as gradients.

GRADIENT-TERMINAL A CLI progam to display teminal outputs as gradients. Requirements For Installation, you will only need Node.js. Install $ git clone

Ritin George 34 Jan 3, 2023