diff options
| author | Tom Zanussi <tom.zanussi@intel.com> | 2012-12-12 22:56:34 -0600 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2012-12-13 16:54:33 +0000 |
| commit | 205872b7b88f64dcb5a725e53811aedacac21da1 (patch) | |
| tree | f125d0ff1d62fef2eb80b8df0772d2c9a68403bc /scripts/lib/bsp/engine.py | |
| parent | c08a4dc5eb6709689b52bab8ac946a94d22a6947 (diff) | |
| download | poky-205872b7b88f64dcb5a725e53811aedacac21da1.tar.gz | |
yocto-bsp: add 'edit-file' input line
Add a subclassed edit box that verifies the existence of a
user-specified file.
(From meta-yocto rev: 8ca7f688a6a0e41dd6527b1c13ebaa77bbfeba69)
Signed-off-by: Tom Zanussi <tom.zanussi@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts/lib/bsp/engine.py')
| -rw-r--r-- | scripts/lib/bsp/engine.py | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/scripts/lib/bsp/engine.py b/scripts/lib/bsp/engine.py index bd776b2100..6309e29a23 100644 --- a/scripts/lib/bsp/engine.py +++ b/scripts/lib/bsp/engine.py | |||
| @@ -244,6 +244,44 @@ class GitRepoEditBoxInputLine(EditBoxInputLine): | |||
| 244 | return line | 244 | return line |
| 245 | 245 | ||
| 246 | 246 | ||
| 247 | class FileEditBoxInputLine(EditBoxInputLine): | ||
| 248 | """ | ||
| 249 | Base class for 'editbox' Input lines for user input of existing | ||
| 250 | files. This class verifies the existence of the specified file. | ||
| 251 | |||
| 252 | props: | ||
| 253 | name: example - "Load address" | ||
| 254 | msg: example - "Please enter the load address" | ||
| 255 | result: | ||
| 256 | Sets the value of the variable specified by 'name' to | ||
| 257 | whatever the user typed. | ||
| 258 | """ | ||
| 259 | def __init__(self, props, tag, lineno): | ||
| 260 | EditBoxInputLine.__init__(self, props, tag, lineno) | ||
| 261 | |||
| 262 | def gen(self, context = None): | ||
| 263 | EditBoxInputLine.gen(self, context) | ||
| 264 | name = self.props["name"] | ||
| 265 | if not name: | ||
| 266 | self.parse_error("No input 'name' property found", | ||
| 267 | self.lineno, self.line) | ||
| 268 | msg = self.props["msg"] | ||
| 269 | if not msg: | ||
| 270 | self.parse_error("No input 'msg' property found", | ||
| 271 | self.lineno, self.line) | ||
| 272 | |||
| 273 | try: | ||
| 274 | default_choice = self.props["default"] | ||
| 275 | except KeyError: | ||
| 276 | default_choice = "" | ||
| 277 | |||
| 278 | msg += " [default: " + default_choice + "]" | ||
| 279 | |||
| 280 | line = name + " = get_verified_file(\"" + msg + "\"," + name + ", True)" | ||
| 281 | |||
| 282 | return line | ||
| 283 | |||
| 284 | |||
| 247 | class BooleanInputLine(InputLine): | 285 | class BooleanInputLine(InputLine): |
| 248 | """ | 286 | """ |
| 249 | Base class for boolean Input lines. | 287 | Base class for boolean Input lines. |
| @@ -509,6 +547,23 @@ def get_verified_git_repo(input_str, name): | |||
| 509 | giturl = default(raw_input(msg), name) | 547 | giturl = default(raw_input(msg), name) |
| 510 | 548 | ||
| 511 | 549 | ||
| 550 | def get_verified_file(input_str, name, filename_can_be_null): | ||
| 551 | """ | ||
| 552 | Return filename if the file exists, otherwise loop forever asking | ||
| 553 | user for filename. | ||
| 554 | """ | ||
| 555 | msg = input_str.strip() + " " | ||
| 556 | |||
| 557 | filename = default(raw_input(msg), name) | ||
| 558 | |||
| 559 | while True: | ||
| 560 | if not filename and filename_can_be_null: | ||
| 561 | return filename | ||
| 562 | if os.path.isfile(filename): | ||
| 563 | return filename | ||
| 564 | filename = default(raw_input(msg), name) | ||
| 565 | |||
| 566 | |||
| 512 | def boolean(input_str, name): | 567 | def boolean(input_str, name): |
| 513 | """ | 568 | """ |
| 514 | Return lowercase version of first char in string, or value in name. | 569 | Return lowercase version of first char in string, or value in name. |
| @@ -725,6 +780,8 @@ class SubstrateBase(object): | |||
| 725 | return EditBoxInputLine(props, tag, lineno) | 780 | return EditBoxInputLine(props, tag, lineno) |
| 726 | if input_type == "edit-git-repo": | 781 | if input_type == "edit-git-repo": |
| 727 | return GitRepoEditBoxInputLine(props, tag, lineno) | 782 | return GitRepoEditBoxInputLine(props, tag, lineno) |
| 783 | if input_type == "edit-file": | ||
| 784 | return FileEditBoxInputLine(props, tag, lineno) | ||
| 728 | elif input_type == "choicelist": | 785 | elif input_type == "choicelist": |
| 729 | self.prev_choicelist = ChoicelistInputLine(props, tag, lineno) | 786 | self.prev_choicelist = ChoicelistInputLine(props, tag, lineno) |
| 730 | return self.prev_choicelist | 787 | return self.prev_choicelist |
