This file is indexed.

/usr/share/cylc/bin/cylc-release is in cylc 7.6.0-1.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#! /usr/bin/python

# THIS FILE IS PART OF THE CYLC SUITE ENGINE.
# Copyright (C) 2008-2017 NIWA
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

"""cylc [control] release|unhold [OPTIONS] ARGS

Release one or more held tasks (cylc release REG TASKID)
or the whole suite (cylc release REG). Held tasks do not
submit even if they are ready to run.

See also 'cylc [control] hold'.
"""

import sys
if '--use-ssh' in sys.argv[1:]:
    sys.argv.remove('--use-ssh')
    from cylc.remote import remrun
    if remrun().execute(force_required=True):
        sys.exit(0)

import cylc.flags
from cylc.prompt import prompt
from cylc.option_parsers import CylcOptionParser as COP
from cylc.network.suite_command_client import SuiteCommandClient


def main():
    parser = COP(
        __doc__, comms=True, multitask=True,
        argdoc=[
            ("REG", 'Suite name'),
            ('[TASKID ...]', 'Task identifiers')])

    options, args = parser.parse_args()
    suite = args.pop(0)

    if args:
        prompt('Release task(s) %s in %s' % (args, suite), options.force)
    else:
        prompt('Release suite %s' % suite, options.force)
    pclient = SuiteCommandClient(
        suite, options.owner, options.host, options.port,
        options.comms_timeout, my_uuid=options.set_uuid,
        print_uuid=options.print_uuid)
    if args:
        items = parser.parse_multitask_compat(options, args)
        pclient.put_command('release_tasks', items=items)
    else:
        pclient.put_command('release_suite')


if __name__ == "__main__":
    try:
        main()
    except Exception as exc:
        if cylc.flags.debug:
            raise
        sys.exit(str(exc))