Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(857)

Side by Side Diff: tools/gn/function_rebase_path.cc

Issue 2481423002: Convert gn docstrings to C++11 raw strings. (Closed)
Patch Set: Fixes Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « tools/gn/function_read_file.cc ('k') | tools/gn/function_set_default_toolchain.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <stddef.h> 5 #include <stddef.h>
6 6
7 #include "tools/gn/build_settings.h" 7 #include "tools/gn/build_settings.h"
8 #include "tools/gn/filesystem_utils.h" 8 #include "tools/gn/filesystem_utils.h"
9 #include "tools/gn/functions.h" 9 #include "tools/gn/functions.h"
10 #include "tools/gn/parse_tree.h" 10 #include "tools/gn/parse_tree.h"
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 119
120 return result; 120 return result;
121 } 121 }
122 122
123 } // namespace 123 } // namespace
124 124
125 const char kRebasePath[] = "rebase_path"; 125 const char kRebasePath[] = "rebase_path";
126 const char kRebasePath_HelpShort[] = 126 const char kRebasePath_HelpShort[] =
127 "rebase_path: Rebase a file or directory to another location."; 127 "rebase_path: Rebase a file or directory to another location.";
128 const char kRebasePath_Help[] = 128 const char kRebasePath_Help[] =
129 "rebase_path: Rebase a file or directory to another location.\n" 129 R"(rebase_path: Rebase a file or directory to another location.
130 "\n" 130
131 " converted = rebase_path(input,\n" 131 converted = rebase_path(input,
132 " new_base = \"\",\n" 132 new_base = "",
133 " current_base = \".\")\n" 133 current_base = ".")
134 "\n" 134
135 " Takes a string argument representing a file name, or a list of such\n" 135 Takes a string argument representing a file name, or a list of such strings
136 " strings and converts it/them to be relative to a different base\n" 136 and converts it/them to be relative to a different base directory.
137 " directory.\n" 137
138 "\n" 138 When invoking the compiler or scripts, GN will automatically convert sources
139 " When invoking the compiler or scripts, GN will automatically convert\n" 139 and include directories to be relative to the build directory. However, if
140 " sources and include directories to be relative to the build directory.\n" 140 you're passing files directly in the "args" array or doing other manual
141 " However, if you're passing files directly in the \"args\" array or\n" 141 manipulations where GN doesn't know something is a file name, you will need
142 " doing other manual manipulations where GN doesn't know something is\n" 142 to convert paths to be relative to what your tool is expecting.
143 " a file name, you will need to convert paths to be relative to what\n" 143
144 " your tool is expecting.\n" 144 The common case is to use this to convert paths relative to the current
145 "\n" 145 directory to be relative to the build directory (which will be the current
146 " The common case is to use this to convert paths relative to the\n" 146 directory when executing scripts).
147 " current directory to be relative to the build directory (which will\n" 147
148 " be the current directory when executing scripts).\n" 148 If you want to convert a file path to be source-absolute (that is, beginning
149 "\n" 149 with a double slash like "//foo/bar"), you should use the get_path_info()
150 " If you want to convert a file path to be source-absolute (that is,\n" 150 function. This function won't work because it will always make relative
151 " beginning with a double slash like \"//foo/bar\"), you should use\n" 151 paths, and it needs to support making paths relative to the source root, so
152 " the get_path_info() function. This function won't work because it will\n" 152 can't also generate source-absolute paths without more special-cases.
153 " always make relative paths, and it needs to support making paths\n" 153
154 " relative to the source root, so can't also generate source-absolute\n" 154 Arguments
155 " paths without more special-cases.\n" 155
156 "\n" 156 input
157 "Arguments\n" 157 A string or list of strings representing file or directory names These
158 "\n" 158 can be relative paths ("foo/bar.txt"), system absolute paths
159 " input\n" 159 ("/foo/bar.txt"), or source absolute paths ("//foo/bar.txt").
160 " A string or list of strings representing file or directory names\n" 160
161 " These can be relative paths (\"foo/bar.txt\"), system absolute\n" 161 new_base
162 " paths (\"/foo/bar.txt\"), or source absolute paths\n" 162 The directory to convert the paths to be relative to. This can be an
163 " (\"//foo/bar.txt\").\n" 163 absolute path or a relative path (which will be treated as being relative
164 "\n" 164 to the current BUILD-file's directory).
165 " new_base\n" 165
166 " The directory to convert the paths to be relative to. This can be\n" 166 As a special case, if new_base is the empty string (the default), all
167 " an absolute path or a relative path (which will be treated\n" 167 paths will be converted to system-absolute native style paths with system
168 " as being relative to the current BUILD-file's directory).\n" 168 path separators. This is useful for invoking external programs.
169 "\n" 169
170 " As a special case, if new_base is the empty string (the default),\n" 170 current_base
171 " all paths will be converted to system-absolute native style paths\n" 171 Directory representing the base for relative paths in the input. If this
172 " with system path separators. This is useful for invoking external\n" 172 is not an absolute path, it will be treated as being relative to the
173 " programs.\n" 173 current build file. Use "." (the default) to convert paths from the
174 "\n" 174 current BUILD-file's directory.
175 " current_base\n" 175
176 " Directory representing the base for relative paths in the input.\n" 176 Return value
177 " If this is not an absolute path, it will be treated as being\n" 177
178 " relative to the current build file. Use \".\" (the default) to\n" 178 The return value will be the same type as the input value (either a string or
179 " convert paths from the current BUILD-file's directory.\n" 179 a list of strings). All relative and source-absolute file names will be
180 "\n" 180 converted to be relative to the requested output System-absolute paths will
181 "Return value\n" 181 be unchanged.
182 "\n" 182
183 " The return value will be the same type as the input value (either a\n" 183 Whether an output path will end in a slash will match whether the
184 " string or a list of strings). All relative and source-absolute file\n" 184 corresponding input path ends in a slash. It will return "." or "./"
185 " names will be converted to be relative to the requested output\n" 185 (depending on whether the input ends in a slash) to avoid returning empty
186 " System-absolute paths will be unchanged.\n" 186 strings. This means if you want a root path ("//" or "/") not ending in a
187 "\n" 187 slash, you can add a dot ("//.").
188 " Whether an output path will end in a slash will match whether the\n" 188
189 " corresponding input path ends in a slash. It will return \".\" or\n" 189 Example
190 " \"./\" (depending on whether the input ends in a slash) to avoid\n" 190
191 " returning empty strings. This means if you want a root path\n" 191 # Convert a file in the current directory to be relative to the build
192 " (\"//\" or \"/\") not ending in a slash, you can add a dot (\"//.\").\n" 192 # directory (the current dir when executing compilers and scripts).
193 "\n" 193 foo = rebase_path("myfile.txt", root_build_dir)
194 "Example\n" 194 # might produce "../../project/myfile.txt".
195 "\n" 195
196 " # Convert a file in the current directory to be relative to the build\n" 196 # Convert a file to be system absolute:
197 " # directory (the current dir when executing compilers and scripts).\n" 197 foo = rebase_path("myfile.txt")
198 " foo = rebase_path(\"myfile.txt\", root_build_dir)\n" 198 # Might produce "D:\\source\\project\\myfile.txt" on Windows or
199 " # might produce \"../../project/myfile.txt\".\n" 199 # "/home/you/source/project/myfile.txt" on Linux.
200 "\n" 200
201 " # Convert a file to be system absolute:\n" 201 # Typical usage for converting to the build directory for a script.
202 " foo = rebase_path(\"myfile.txt\")\n" 202 action("myscript") {
203 " # Might produce \"D:\\source\\project\\myfile.txt\" on Windows or\n" 203 # Don't convert sources, GN will automatically convert these to be relative
204 " # \"/home/you/source/project/myfile.txt\" on Linux.\n" 204 # to the build directory when it constructs the command line for your
205 "\n" 205 # script.
206 " # Typical usage for converting to the build directory for a script.\n" 206 sources = [ "foo.txt", "bar.txt" ]
207 " action(\"myscript\") {\n" 207
208 " # Don't convert sources, GN will automatically convert these to be\n" 208 # Extra file args passed manually need to be explicitly converted
209 " # relative to the build directory when it constructs the command\n" 209 # to be relative to the build directory:
210 " # line for your script.\n" 210 args = [
211 " sources = [ \"foo.txt\", \"bar.txt\" ]\n" 211 "--data",
212 "\n" 212 rebase_path("//mything/data/input.dat", root_build_dir),
213 " # Extra file args passed manually need to be explicitly converted\n" 213 "--rel",
214 " # to be relative to the build directory:\n" 214 rebase_path("relative_path.txt", root_build_dir)
215 " args = [\n" 215 ] + rebase_path(sources, root_build_dir)
216 " \"--data\",\n" 216 }
217 " rebase_path(\"//mything/data/input.dat\", root_build_dir),\n" 217 )";
218 " \"--rel\",\n"
219 " rebase_path(\"relative_path.txt\", root_build_dir)\n"
220 " ] + rebase_path(sources, root_build_dir)\n"
221 " }\n";
222 218
223 Value RunRebasePath(Scope* scope, 219 Value RunRebasePath(Scope* scope,
224 const FunctionCallNode* function, 220 const FunctionCallNode* function,
225 const std::vector<Value>& args, 221 const std::vector<Value>& args,
226 Err* err) { 222 Err* err) {
227 Value result; 223 Value result;
228 224
229 // Argument indices. 225 // Argument indices.
230 static const size_t kArgIndexInputs = 0; 226 static const size_t kArgIndexInputs = 0;
231 static const size_t kArgIndexDest = 1; 227 static const size_t kArgIndexDest = 1;
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
290 } 286 }
291 return result; 287 return result;
292 } 288 }
293 289
294 *err = Err(function->function(), 290 *err = Err(function->function(),
295 "rebase_path requires a list or a string."); 291 "rebase_path requires a list or a string.");
296 return result; 292 return result;
297 } 293 }
298 294
299 } // namespace functions 295 } // namespace functions
OLDNEW
« no previous file with comments | « tools/gn/function_read_file.cc ('k') | tools/gn/function_set_default_toolchain.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698