#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

project:
    name: myproject
    packages:
        packageWithParameters:
            inputs:
                SLACK_USERNAME:
                    type: string
                    description: "Slack User Name"
                    required: true
                SLACK_URL:
                    type: string
                    description: "Slack Webhook URL"
                    required: true
                SLACK_CHANNEL:
                    type: string
                    description: "Slack Channel"
                    required: true
                    default: "#general"
                RULE_NAME:
                    type: string
                    description: "Rule Name"
                    required: true
                    value: "post-to-slack-every-hour"
                TRIGGER_NAME:
                    type: string
                    description: "Trigger Name"
                    required: true
                    value: "everyhour"
            dependencies:
                slack-package-to-post-messages:
                    location: /whisk.system/slack
                    inputs:
                        username: ${SLACK_USERNAME}
                        url: ${SLACK_URL}
                        channel: ${SLACK_CHANNEL}
            actions:
                post-to-slack:
                    function: ../usecases/slack/actions/post-to-slack.js
                    runtime: nodejs:default
                    inputs:
                        message:
                            type: string
                            description: message to post on slack
                        slack_package:
                            type: string
                            description: slack package name
            triggers:
                ${TRIGGER_NAME}:
                    feed: /whisk.system/alarms/alarm
                    inputs:
                         cron: "0 */1 * * *"
            rules:
                ${RULE_NAME}:
                    action: post-to-slack
                    trigger: everyhour
