blob: 602c6f4589105dd4085e6e129e0e0a8750ca25ad [file] [log] [blame]
# Copyright 2022 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
def _make_verb(verb = None):
def _make(name):
return name + "." + verb if verb else name
return _make
def make_help_executable(ctx, verbs, name = None):
name = name or ctx.label.name
exe = ctx.actions.declare_file(name + "_help_text.sh")
tasks = ['echo " - {}: {}"'.format(verb(name), help) for (verb, help) in verbs.items()]
ctx.actions.write(
exe,
"""
echo "------------------------------------------------------"{default_target_invalid_str}
echo "USAGE: To interact with this object use the following tasks:"
{tasks}
echo "------------------------------------------------------"
""".format(
default_target_invalid_str = "" if _verbs.noverb in verbs else """
echo "ERROR: The target '%s' cannot be run directly." """ % name,
tasks = "\n".join(tasks),
),
is_executable = True,
)
return exe
def _make_verbs(*verbs):
return struct(
noverb = _make_verb(),
custom = _make_verb,
**{
verb: _make_verb(verb)
for verb in verbs
}
)
_verbs = _make_verbs(*"""
create
debug_symbols
delete
delete_repo
fetch
help
make_default
publish
reboot
remove
start
stop
wait
""".strip().split("\n"))
verbs = _verbs