-
Notifications
You must be signed in to change notification settings - Fork 336
/
hello_world.py
71 lines (55 loc) · 2.19 KB
/
hello_world.py
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
# SPDX-License-Identifier: Apache-2.0
# Copyright Contributors to the Rez Project
"""
Creates the 'hello_world' testing package.
Note: Even though this is a python-based package, it does not list python as a
requirement. This is not typical! This package is intended as a very simple test
case, and for that reason we do not want any dependencies.
"""
from rez.package_maker import make_package
from rez.version import Version
from rez.utils.lint_helper import env
from rez.utils.execution import create_executable_script, ExecutableScriptMode
from rez.vendor.distlib.scripts import ScriptMaker
from rez.bind._utils import make_dirs, check_version
import os.path
import shutil
def commands():
env.PATH.append('{this.root}/bin')
env.OH_HAI_WORLD = "hello"
def hello_world_source():
import sys
from optparse import OptionParser
p = OptionParser()
p.add_option("-q", dest="quiet", action="store_true",
help="quiet mode")
p.add_option("-r", dest="retcode", type="int", default=0,
help="exit with a non-zero return code")
opts, args = p.parse_args()
if not opts.quiet:
print("Hello Rez World!")
sys.exit(opts.retcode)
def bind(path, version_range=None, opts=None, parser=None):
version = Version("1.0")
check_version(version, version_range)
def make_root(variant, root):
binpath = make_dirs(root, "bin")
binpathtmp = make_dirs(root, "bintmp")
filepath = os.path.join(binpathtmp, "hello_world")
create_executable_script(
filepath,
hello_world_source,
py_script_mode=ExecutableScriptMode.single,
)
# We want to use ScriptMaker on all platofrms. This allows us to
# correctly setup the script to work everywhere, even on Windows.
# create_executable_script should be fixed to use ScriptMaker
# instead.
maker = ScriptMaker(binpathtmp, make_dirs(binpath))
maker.make("hello_world")
shutil.rmtree(binpathtmp)
with make_package("hello_world", path, make_root=make_root) as pkg:
pkg.version = version
pkg.tools = ["hello_world"]
pkg.commands = commands
return pkg.installed_variants