1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
7 from .config
import Config
8 from .gn
import BuildDirectoryForConfig
11 """Provides commonly used paths"""
13 def __init__(self
, config
=None, build_dir
=None):
14 """Specify either a config or a build_dir to generate paths to binary
16 self
.src_root
= os
.path
.abspath(os
.path
.join(__file__
,
17 os
.pardir
, os
.pardir
, os
.pardir
, os
.pardir
))
18 self
.mojo_dir
= os
.path
.join(self
.src_root
, "mojo")
21 self
.build_dir
= BuildDirectoryForConfig(config
, self
.src_root
)
22 elif build_dir
is not None:
23 self
.build_dir
= os
.path
.abspath(build_dir
)
27 if self
.build_dir
is not None:
28 self
.mojo_launcher_path
= os
.path
.join(self
.build_dir
, "mojo_launcher")
29 self
.mojo_shell_path
= os
.path
.join(self
.build_dir
, "mojo_shell")
30 # TODO(vtl): Use the host OS here, since |config| may not be available.
31 # In any case, if the target is Windows, but the host isn't, using
32 # |os.path| isn't correct....
33 if Config
.GetHostOS() == Config
.OS_WINDOWS
:
34 self
.mojo_launcher_path
+= ".exe"
35 self
.mojo_shell_path
+= ".exe"
36 if config
and config
.target_os
== Config
.OS_ANDROID
:
37 self
.target_mojo_shell_path
= os
.path
.join(self
.build_dir
,
41 self
.target_mojo_shell_path
= self
.mojo_shell_path
43 self
.mojo_launcher_path
= None
44 self
.mojo_shell_path
= None
45 self
.target_mojo_shell_path
= None
47 def RelPath(self
, path
):
48 """Returns the given path, relative to the current directory."""
49 return os
.path
.relpath(path
)
51 def SrcRelPath(self
, path
):
52 """Returns the given path, relative to self.src_root."""
53 return os
.path
.relpath(path
, self
.src_root
)
55 def FileFromUrl(self
, url
):
56 """Given an app URL (<scheme>:<appname>), return 'build_dir/appname.mojo'.
57 If self.build_dir is None, just return appname.mojo
59 (_
, name
) = url
.split(':')
61 return os
.path
.join(self
.build_dir
, name
+ '.mojo')
65 def IsValidAppUrl(url
):
66 """Returns False if url is malformed, True otherwise."""
68 return len(url
.split(':')) == 2