{
  "profile": "This tutorial is a brief introduction to IBM Cloud Shell and Composer. It reviews the set-up of the interface and demonstrates how to launch a simple \"Hello World!\" application using basic commands. Upon completion, this tutorial provides a user with the basic tools they need to create a composition and go through the developer workflow of the Shell tool.",
  "time": "5 minutes",
  "skills": ["Learning the Ropes", "Composer Programming", "Create and Invoke"],
  "steps": [
    {
      "heading": "Introduction",
      "content": "Welcome to Cloud Shell, a tool by IBM for serverless computing. In this tutorial, we will review the basics of Cloud Shell and launch a simple application.",
      "transition": "next"
    },
    {
      "heading": "The Help Command",
      "content": "Within Cloud Shell, help can be used at any time to provide documentation and aid users. It can be accessed by clicking on the help button in the top toolbar (circled in red) or via the command line.\n\nClick 'help' to view the commands currently available.",
      "transition": "click",
      "input": {
        "selector": "#notification-area > a"
      },
      "highlight": {
        "selector": "#notification-area"
      },
      "extras": {
        "commands": [
          "`help`: Gives details on the commands within the current context.",
          "`command --help`: Details the usage of `command` when specified after it."
        ]
      }
    },
    {
      "heading": "Composer",
      "content": "Composer is a programming model for creating Cloud Functions that allows users to define, deploy, and invoke complex workflows called compositions.\n\nTo create a basic \"Hello World!\" application named `myApp` from a file, review the imported `create` command and click enter on the command line.",
      "transition": "enter",
      "autocomplete": {
        "value": "compose myApp"
      },
      "extras": {
        "reading": [
          "<a style='text-decoration: underline; cursor:pointer' href='https://github.com/ibm-functions/composer/blob/master/docs/COMPOSER.md' _target='blank'>The Composer Module</a>"
        ],
        "tips": [
          "Tip: To launch a built in text editor and compose in Shell, use the command `create appName`, where `appName` is the name of the app you wish to compose.",
          "Tip: To review and make changes to a composition after it has been created, type `edit appName` in the command line, where `appName` is the name of the composition."
        ]
      }
    },
    {
      "heading": "Combinators",
      "content": "The methods of the `Composer` object used to manage complex logic are called combinators. Combinators take actions, inline functions, and compositions as parameters. The example shown in the sidecar constructs a sequence.",
      "transition": "next",
      "extras": {
        "reading": [
          "<a style='text-decoration: underline; cursor:pointer' href='https://github.com/ibm-functions/composer/blob/master/docs/COMBINATORS.md' _target='blank'>Combinators and their utility</a>"
        ]
      }
    },
    {
      "heading": "Actions and Invocations",
      "content": "Unlike with inline functions, the invocation of Cloud Functions generates activations and records runtime data. They can be reused in various applications and are useful for debugging. Actions may be specified by their fully qualified name (i.e., `/namespace[/package]/action`) or their short name.",
      "transition": "next",
      "extras": {
        "reading": [
          "<a style='text-decoration: underline; cursor:pointer' href='https://github.com/apache/incubator-openwhisk/blob/master/docs/reference.md' _target='blank'>Actions</a>"
        ],
        "tips": [
          "Tip: Because apps are stored as actions, Cloud Shell will report a name conflict if `create` is called with a name of an already existing action. To update an existing app, use the `update` command: `app update myApp sourceFile`, where `myApp` is the name of the app you wish to update and `sourceFile` is the source file or pre-compiled composition."
        ]
      }
    },
    {
      "heading": "Running an Application",
      "content": "Once the code has been imported, click DEPLOY in the bottom of the sidecar. Shell will show a flow graph representing the textual composition as verification. \n\n Applications are run with the `invoke` command. To run the application, review the imported command and press enter.",
      "transition": "enter",
      "autocomplete": {
        "value": "app invoke myApp -p name composer"
      }
    },
    {
      "heading": "Conclusion",
      "content": "You have completed the \"Getting Started\" Tutorial. Click CLOSE to exit the tutorial or BACK to return to the previous page. Enjoy your experience with IBM Cloud Shell!"
    }
  ]
}
