#  Copyright 2020 The Monogon Project Authors.
#
#  SPDX-License-Identifier: Apache-2.0
#
#  Licensed 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.

def _os_release_impl(ctx):
    ctx.actions.run(
        mnemonic = "GenOSRelease",
        progress_message = "Generating os-release",
        inputs = [ctx.info_file],
        outputs = [ctx.outputs.out],
        executable = ctx.executable._genosrelease,
        arguments = [
            "-status_file",
            ctx.info_file.path,
            "-out_file",
            ctx.outputs.out.path,
            "-stamp_var",
            ctx.attr.stamp_var,
            "-name",
            ctx.attr.os_name,
            "-id",
            ctx.attr.os_id,
        ],
    )

os_release = rule(
    implementation = _os_release_impl,
    attrs = {
        "os_name": attr.string(mandatory = True),
        "os_id": attr.string(mandatory = True),
        "stamp_var": attr.string(mandatory = True),
        "_genosrelease": attr.label(
            default = Label("//metropolis/node/build/genosrelease"),
            cfg = "host",
            executable = True,
            allow_files = True,
        ),
    },
    outputs = {
        "out": "os-release",
    },
)
