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

Side by Side Diff: third_party/WebKit/Tools/Scripts/webkitpy/common/system/user.py

Issue 2901963002: Remove unused methods from common.system.User. (Closed)
Patch Set: Created 3 years, 6 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
« no previous file with comments | « no previous file | third_party/WebKit/Tools/Scripts/webkitpy/common/system/user_mock.py » ('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) 2009, Google Inc. All rights reserved. 1 # Copyright (c) 2009, Google Inc. All rights reserved.
2 # 2 #
3 # Redistribution and use in source and binary forms, with or without 3 # Redistribution and use in source and binary forms, with or without
4 # modification, are permitted provided that the following conditions are 4 # modification, are permitted provided that the following conditions are
5 # met: 5 # met:
6 # 6 #
7 # * Redistributions of source code must retain the above copyright 7 # * Redistributions of source code must retain the above copyright
8 # notice, this list of conditions and the following disclaimer. 8 # notice, this list of conditions and the following disclaimer.
9 # * Redistributions in binary form must reproduce the above 9 # * Redistributions in binary form must reproduce the above
10 # copyright notice, this list of conditions and the following disclaimer 10 # copyright notice, this list of conditions and the following disclaimer
11 # in the documentation and/or other materials provided with the 11 # in the documentation and/or other materials provided with the
12 # distribution. 12 # distribution.
13 # * Neither the name of Google Inc. nor the names of its 13 # * Neither the name of Google Inc. nor the names of its
14 # contributors may be used to endorse or promote products derived from 14 # contributors may be used to endorse or promote products derived from
15 # this software without specific prior written permission. 15 # this software without specific prior written permission.
16 # 16 #
17 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 17 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 18 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 19 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 20 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 21 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 22 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 26 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 28
29 import getpass
30 import logging 29 import logging
31 import os
32 import platform 30 import platform
33 import re 31 import re
34 import shlex
35 import subprocess
36 import sys 32 import sys
37 import webbrowser 33 import webbrowser
38 34
39 from webkitpy.common.system.executive import Executive 35 from webkitpy.common.system.executive import Executive
40 from webkitpy.common.system.filesystem import FileSystem 36 from webkitpy.common.system.filesystem import FileSystem
41 from webkitpy.common.system.platform_info import PlatformInfo 37 from webkitpy.common.system.platform_info import PlatformInfo
42 38
43 39
44 _log = logging.getLogger(__name__) 40 _log = logging.getLogger(__name__)
45 41
(...skipping 10 matching lines...) Expand all
56 # FIXME: These are @classmethods because bugzilla.py doesn't have a Tool obj ect (thus no User instance). 52 # FIXME: These are @classmethods because bugzilla.py doesn't have a Tool obj ect (thus no User instance).
57 @classmethod 53 @classmethod
58 def prompt(cls, message, repeat=1, raw_input=raw_input): 54 def prompt(cls, message, repeat=1, raw_input=raw_input):
59 response = None 55 response = None
60 while repeat and not response: 56 while repeat and not response:
61 repeat -= 1 57 repeat -= 1
62 response = raw_input(message) 58 response = raw_input(message)
63 return response 59 return response
64 60
65 @classmethod 61 @classmethod
66 def prompt_password(cls, message, repeat=1):
67 return cls.prompt(message, repeat=repeat, raw_input=getpass.getpass)
68
69 @classmethod
70 def prompt_with_multiple_lists(cls, list_title, subtitles, lists, can_choose _multiple=False, raw_input=raw_input):
71 item_index = 0
72 cumulated_list = []
73 print list_title
74 for i in range(len(subtitles)):
75 print '\n' + subtitles[i]
76 for item in lists[i]:
77 item_index += 1
78 print '%2d. %s' % (item_index, item)
79 cumulated_list += lists[i]
80 return cls._wait_on_list_response(cumulated_list, can_choose_multiple, r aw_input)
81
82 @classmethod
83 def _wait_on_list_response(cls, list_items, can_choose_multiple, raw_input): 62 def _wait_on_list_response(cls, list_items, can_choose_multiple, raw_input):
84 while True: 63 while True:
85 if can_choose_multiple: 64 if can_choose_multiple:
86 response = cls.prompt( 65 response = cls.prompt(
87 'Enter one or more numbers (comma-separated) or ranges (e.g. 3-7), or \'all\': ', raw_input=raw_input) 66 'Enter one or more numbers (comma-separated) or ranges (e.g. 3-7), or \'all\': ', raw_input=raw_input)
88 if not response.strip() or response == 'all': 67 if not response.strip() or response == 'all':
89 return list_items 68 return list_items
90 69
91 try: 70 try:
92 indices = [] 71 indices = []
(...skipping 16 matching lines...) Expand all
109 88
110 @classmethod 89 @classmethod
111 def prompt_with_list(cls, list_title, list_items, can_choose_multiple=False, raw_input=raw_input): 90 def prompt_with_list(cls, list_title, list_items, can_choose_multiple=False, raw_input=raw_input):
112 print list_title 91 print list_title
113 i = 0 92 i = 0
114 for item in list_items: 93 for item in list_items:
115 i += 1 94 i += 1
116 print '%2d. %s' % (i, item) 95 print '%2d. %s' % (i, item)
117 return cls._wait_on_list_response(list_items, can_choose_multiple, raw_i nput) 96 return cls._wait_on_list_response(list_items, can_choose_multiple, raw_i nput)
118 97
119 def edit(self, files):
120 editor = os.environ.get('EDITOR') or 'vi'
121 args = shlex.split(editor)
122 # Note: Not thread safe: http://bugs.python.org/issue2320
123 subprocess.call(args + files)
124
125 def page(self, message):
126 pager = os.environ.get('PAGER') or 'less'
127 try:
128 # Note: Not thread safe: http://bugs.python.org/issue2320
129 child_process = subprocess.Popen([pager], stdin=subprocess.PIPE)
130 child_process.communicate(input=message)
131 except IOError:
132 pass
133
134 def confirm(self, message=None, default=DEFAULT_YES, raw_input=raw_input): 98 def confirm(self, message=None, default=DEFAULT_YES, raw_input=raw_input):
135 if not message: 99 if not message:
136 message = 'Continue?' 100 message = 'Continue?'
137 choice = {'y': 'Y/n', 'n': 'y/N'}[default] 101 choice = {'y': 'Y/n', 'n': 'y/N'}[default]
138 response = raw_input('%s [%s]: ' % (message, choice)) 102 response = raw_input('%s [%s]: ' % (message, choice))
139 if not response: 103 if not response:
140 response = default 104 response = default
141 return response.lower() == 'y' 105 return response.lower() == 'y'
142 106
143 def can_open_url(self): 107 def can_open_url(self):
144 try: 108 try:
145 webbrowser.get() 109 webbrowser.get()
146 return True 110 return True
147 except webbrowser.Error: 111 except webbrowser.Error:
148 return False 112 return False
149 113
150 def open_url(self, url): 114 def open_url(self, url):
151 if not self.can_open_url(): 115 if not self.can_open_url():
152 _log.warning('Failed to open %s', url) 116 _log.warning('Failed to open %s', url)
153 webbrowser.open(url) 117 webbrowser.open(url)
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/Tools/Scripts/webkitpy/common/system/user_mock.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698