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

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

Issue 161783002: Remove default value checking in GN, adds getenv function, reorders parameters to rebase_path. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 months 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 | Annotate | Revision Log
« tools/gn/command_args.cc ('K') | « tools/gn/functions.h ('k') | no next file » | 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 "tools/gn/functions.h" 5 #include "tools/gn/functions.h"
6 6
7 #include <iostream> 7 #include <iostream>
8 8
9 #include "base/strings/string_util.h" 9 #include "base/strings/string_util.h"
10 #include "tools/gn/config.h" 10 #include "tools/gn/config.h"
(...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after
354 *err = Err(function, "Bad argument to defined().", 354 *err = Err(function, "Bad argument to defined().",
355 "defined() takes one argument which should be an identifier."); 355 "defined() takes one argument which should be an identifier.");
356 return Value(); 356 return Value();
357 } 357 }
358 358
359 if (scope->GetValue(identifier->value().value())) 359 if (scope->GetValue(identifier->value().value()))
360 return Value(function, true); 360 return Value(function, true);
361 return Value(function, false); 361 return Value(function, false);
362 } 362 }
363 363
364 // getenv ----------------------------------------------------------------------
365
366 const char kGetEnv[] = "getenv";
367 const char kGetEnv_Help[] =
368 "getenv: Get an environment variable.\n"
369 "\n"
370 " value = getenv(env_var_name)\n"
371 "\n"
372 " Returns the value of the given enironment variable. The case-\n"
373 " sensitivity (or lack thereof) of the lookup will match that of the\n"
374 " underlying operating system.\n"
375 "\n"
376 " If the environment variable is not found, the empty string will be\n"
377 " returned. Note: it might be nice to extend this if we had the concept\n"
378 " of \"none\" in the language to indicate lookup failure.\n"
379 "\n"
380 "Example:\n"
381 "\n"
382 " home_dir = getenv(\"HOME\")\n";
383
384 Value RunGetEnv(Scope* scope,
385 const FunctionCallNode* function,
386 const std::vector<Value>& args,
387 Err* err) {
388 if (!EnsureSingleStringArg(function, args, err))
389 return Value();
390
391 const char* env_result = getenv(args[0].string_value().c_str());
viettrungluu 2014/02/12 23:09:35 Does this work properly on Windows? (You could us
392 if (!env_result)
393 return Value(function, ""); // Not found, return empty string.
394 return Value(function, env_result);
395 }
396
364 // import ---------------------------------------------------------------------- 397 // import ----------------------------------------------------------------------
365 398
366 const char kImport[] = "import"; 399 const char kImport[] = "import";
367 const char kImport_Help[] = 400 const char kImport_Help[] =
368 "import: Import a file into the current scope.\n" 401 "import: Import a file into the current scope.\n"
369 "\n" 402 "\n"
370 " The import command loads the rules and variables resulting from\n" 403 " The import command loads the rules and variables resulting from\n"
371 " executing the given file into the current scope.\n" 404 " executing the given file into the current scope.\n"
372 "\n" 405 "\n"
373 " By convention, imported files are named with a .gni extension.\n" 406 " By convention, imported files are named with a .gni extension.\n"
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
539 572
540 INSERT_FUNCTION(Assert) 573 INSERT_FUNCTION(Assert)
541 INSERT_FUNCTION(Component) 574 INSERT_FUNCTION(Component)
542 INSERT_FUNCTION(Config) 575 INSERT_FUNCTION(Config)
543 INSERT_FUNCTION(Copy) 576 INSERT_FUNCTION(Copy)
544 INSERT_FUNCTION(Custom) 577 INSERT_FUNCTION(Custom)
545 INSERT_FUNCTION(DeclareArgs) 578 INSERT_FUNCTION(DeclareArgs)
546 INSERT_FUNCTION(Defined) 579 INSERT_FUNCTION(Defined)
547 INSERT_FUNCTION(ExecScript) 580 INSERT_FUNCTION(ExecScript)
548 INSERT_FUNCTION(Executable) 581 INSERT_FUNCTION(Executable)
582 INSERT_FUNCTION(GetEnv)
549 INSERT_FUNCTION(Group) 583 INSERT_FUNCTION(Group)
550 INSERT_FUNCTION(Import) 584 INSERT_FUNCTION(Import)
551 INSERT_FUNCTION(Print) 585 INSERT_FUNCTION(Print)
552 INSERT_FUNCTION(ProcessFileTemplate) 586 INSERT_FUNCTION(ProcessFileTemplate)
553 INSERT_FUNCTION(ReadFile) 587 INSERT_FUNCTION(ReadFile)
554 INSERT_FUNCTION(RebasePath) 588 INSERT_FUNCTION(RebasePath)
555 INSERT_FUNCTION(SetDefaults) 589 INSERT_FUNCTION(SetDefaults)
556 INSERT_FUNCTION(SetDefaultToolchain) 590 INSERT_FUNCTION(SetDefaultToolchain)
557 INSERT_FUNCTION(SetSourcesAssignmentFilter) 591 INSERT_FUNCTION(SetSourcesAssignmentFilter)
558 INSERT_FUNCTION(SharedLibrary) 592 INSERT_FUNCTION(SharedLibrary)
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
632 return found_function->second.executed_block_runner( 666 return found_function->second.executed_block_runner(
633 function, args.list_value(), &block_scope, err); 667 function, args.list_value(), &block_scope, err);
634 } 668 }
635 669
636 // Otherwise it's a no-block function. 670 // Otherwise it's a no-block function.
637 return found_function->second.no_block_runner(scope, function, 671 return found_function->second.no_block_runner(scope, function,
638 args.list_value(), err); 672 args.list_value(), err);
639 } 673 }
640 674
641 } // namespace functions 675 } // namespace functions
OLDNEW
« tools/gn/command_args.cc ('K') | « tools/gn/functions.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698