libv8 5.3.332.38.5 → 5.6.326.50.0beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (352) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +0 -1
  3. data/CHANGELOG.md +2 -0
  4. data/ext/libv8/builder.rb +2 -2
  5. data/lib/libv8/version.rb +1 -1
  6. data/patches/0001-Build-a-standalone-static-library.patch +4 -4
  7. data/patches/0002-Don-t-compile-unnecessary-stuff.patch +16 -11
  8. data/patches/0003-Use-the-fPIC-flag-for-the-static-library.patch +4 -4
  9. data/patches/{0005-Do-not-embed-debug-symbols-in-macOS-libraries.patch → 0004-Do-not-embed-debug-symbols-in-macOS-libraries.patch} +4 -4
  10. data/vendor/depot_tools/.gitignore +4 -0
  11. data/vendor/depot_tools/OWNERS +0 -2
  12. data/vendor/depot_tools/PRESUBMIT.py +20 -23
  13. data/vendor/depot_tools/README.gclient.md +3 -3
  14. data/vendor/depot_tools/README.git-cl.md +13 -12
  15. data/vendor/depot_tools/README.md +2 -3
  16. data/vendor/depot_tools/WATCHLISTS +0 -1
  17. data/vendor/depot_tools/appengine_mapper.py +23 -0
  18. data/vendor/depot_tools/apply_issue.py +2 -8
  19. data/vendor/depot_tools/bootstrap/win/README.md +1 -8
  20. data/vendor/depot_tools/bootstrap/win/git_bootstrap.py +6 -16
  21. data/vendor/depot_tools/bootstrap/win/git_version.txt +1 -1
  22. data/vendor/depot_tools/bootstrap/win/git_version_bleeding_edge.txt +1 -1
  23. data/vendor/depot_tools/checkout.py +20 -433
  24. data/vendor/depot_tools/cipd +73 -0
  25. data/vendor/depot_tools/cipd.bat +12 -0
  26. data/vendor/depot_tools/cipd.ps1 +57 -0
  27. data/vendor/depot_tools/cipd_client_version +1 -0
  28. data/vendor/depot_tools/clang_format.py +9 -6
  29. data/vendor/depot_tools/clang_format_merge_driver +8 -0
  30. data/vendor/depot_tools/clang_format_merge_driver.bat +11 -0
  31. data/vendor/depot_tools/clang_format_merge_driver.py +67 -0
  32. data/vendor/depot_tools/codereview.settings +3 -2
  33. data/vendor/depot_tools/commit_queue.py +1 -1
  34. data/vendor/depot_tools/cpplint.py +2 -0
  35. data/vendor/depot_tools/fetch.py +1 -54
  36. data/vendor/depot_tools/fetch_configs/android.py +2 -2
  37. data/vendor/depot_tools/fetch_configs/breakpad.py +2 -3
  38. data/vendor/depot_tools/fetch_configs/chromium.py +2 -3
  39. data/vendor/depot_tools/fetch_configs/crashpad.py +2 -2
  40. data/vendor/depot_tools/fetch_configs/dart.py +2 -3
  41. data/vendor/depot_tools/fetch_configs/dartino.py +2 -3
  42. data/vendor/depot_tools/fetch_configs/dartium.py +2 -3
  43. data/vendor/depot_tools/fetch_configs/depot_tools.py +3 -6
  44. data/vendor/depot_tools/fetch_configs/gyp.py +2 -3
  45. data/vendor/depot_tools/fetch_configs/infra.py +2 -2
  46. data/vendor/depot_tools/fetch_configs/infra_internal.py +2 -2
  47. data/vendor/depot_tools/fetch_configs/ios.py +2 -2
  48. data/vendor/depot_tools/fetch_configs/ios_internal.py +2 -3
  49. data/vendor/depot_tools/fetch_configs/mojo.py +2 -3
  50. data/vendor/depot_tools/fetch_configs/nacl.py +2 -3
  51. data/vendor/depot_tools/fetch_configs/naclports.py +2 -3
  52. data/vendor/depot_tools/fetch_configs/pdfium.py +2 -2
  53. data/vendor/depot_tools/fetch_configs/skia.py +2 -2
  54. data/vendor/depot_tools/fetch_configs/skia_buildbot.py +2 -2
  55. data/vendor/depot_tools/fetch_configs/syzygy.py +2 -2
  56. data/vendor/depot_tools/fetch_configs/v8.py +2 -3
  57. data/vendor/depot_tools/fetch_configs/webrtc.py +5 -3
  58. data/vendor/depot_tools/fetch_configs/webrtc_android.py +2 -2
  59. data/vendor/depot_tools/fetch_configs/webrtc_ios.py +2 -2
  60. data/vendor/depot_tools/fix_encoding.py +6 -6
  61. data/vendor/depot_tools/gclient.py +136 -368
  62. data/vendor/depot_tools/gclient_scm.py +108 -647
  63. data/vendor/depot_tools/gclient_utils.py +22 -86
  64. data/vendor/depot_tools/gerrit_client.py +105 -0
  65. data/vendor/depot_tools/gerrit_util.py +174 -67
  66. data/vendor/depot_tools/git-crrev-parse +6 -7
  67. data/vendor/depot_tools/git-gs +1 -1
  68. data/vendor/depot_tools/git_cache.py +68 -18
  69. data/vendor/depot_tools/git_cherry_pick_upload.py +4 -4
  70. data/vendor/depot_tools/git_cl.py +1028 -961
  71. data/vendor/depot_tools/git_common.py +2 -3
  72. data/vendor/depot_tools/git_drover.py +0 -1
  73. data/vendor/depot_tools/git_footers.py +3 -43
  74. data/vendor/depot_tools/git_rebase_update.py +9 -1
  75. data/vendor/depot_tools/git_squash_branch.py +1 -1
  76. data/vendor/depot_tools/infra/config/cq.cfg +8 -1
  77. data/vendor/depot_tools/infra/config/recipes.cfg +1 -1
  78. data/vendor/depot_tools/man/html/depot_tools.html +3 -11
  79. data/vendor/depot_tools/man/html/depot_tools_tutorial.html +9 -9
  80. data/vendor/depot_tools/man/html/git-cherry-pick-upload.html +2 -2
  81. data/vendor/depot_tools/man/html/git-drover.html +17 -17
  82. data/vendor/depot_tools/man/html/git-footers.html +2 -2
  83. data/vendor/depot_tools/man/html/git-freeze.html +4 -4
  84. data/vendor/depot_tools/man/html/git-hyper-blame.html +2 -2
  85. data/vendor/depot_tools/man/html/git-map-branches.html +2 -2
  86. data/vendor/depot_tools/man/html/git-map.html +2 -2
  87. data/vendor/depot_tools/man/html/git-mark-merge-base.html +2 -2
  88. data/vendor/depot_tools/man/html/git-nav-downstream.html +2 -2
  89. data/vendor/depot_tools/man/html/git-nav-upstream.html +2 -2
  90. data/vendor/depot_tools/man/html/git-new-branch.html +2 -2
  91. data/vendor/depot_tools/man/html/git-rebase-update.html +2 -2
  92. data/vendor/depot_tools/man/html/git-rename-branch.html +2 -2
  93. data/vendor/depot_tools/man/html/git-reparent-branch.html +2 -2
  94. data/vendor/depot_tools/man/html/git-retry.html +3 -3
  95. data/vendor/depot_tools/man/html/git-squash-branch.html +3 -3
  96. data/vendor/depot_tools/man/html/git-thaw.html +2 -2
  97. data/vendor/depot_tools/man/html/git-upstream-diff.html +3 -3
  98. data/vendor/depot_tools/man/man1/git-cherry-pick-upload.1 +4 -4
  99. data/vendor/depot_tools/man/man1/git-drover.1 +19 -19
  100. data/vendor/depot_tools/man/man1/git-footers.1 +4 -4
  101. data/vendor/depot_tools/man/man1/git-freeze.1 +6 -6
  102. data/vendor/depot_tools/man/man1/git-hyper-blame.1 +4 -4
  103. data/vendor/depot_tools/man/man1/git-map-branches.1 +4 -4
  104. data/vendor/depot_tools/man/man1/git-map.1 +4 -4
  105. data/vendor/depot_tools/man/man1/git-mark-merge-base.1 +4 -4
  106. data/vendor/depot_tools/man/man1/git-nav-downstream.1 +4 -4
  107. data/vendor/depot_tools/man/man1/git-nav-upstream.1 +4 -4
  108. data/vendor/depot_tools/man/man1/git-new-branch.1 +4 -4
  109. data/vendor/depot_tools/man/man1/git-rebase-update.1 +4 -4
  110. data/vendor/depot_tools/man/man1/git-rename-branch.1 +4 -4
  111. data/vendor/depot_tools/man/man1/git-reparent-branch.1 +4 -4
  112. data/vendor/depot_tools/man/man1/git-retry.1 +5 -5
  113. data/vendor/depot_tools/man/man1/git-squash-branch.1 +5 -5
  114. data/vendor/depot_tools/man/man1/git-thaw.1 +4 -4
  115. data/vendor/depot_tools/man/man1/git-upstream-diff.1 +5 -5
  116. data/vendor/depot_tools/man/man7/depot_tools.7 +5 -10
  117. data/vendor/depot_tools/man/man7/depot_tools_tutorial.7 +4 -4
  118. data/vendor/depot_tools/man/src/depot_tools.txt +1 -1
  119. data/vendor/depot_tools/man/src/depot_tools_tutorial.txt +7 -7
  120. data/vendor/depot_tools/man/src/filter_demo_output.py +2 -2
  121. data/vendor/depot_tools/man/src/git-footers.demo.1.sh +1 -1
  122. data/vendor/depot_tools/man/src/git-retry.txt +1 -1
  123. data/vendor/depot_tools/man/src/git-squash-branch.txt +2 -2
  124. data/vendor/depot_tools/man/src/git-upstream-diff.txt +1 -1
  125. data/vendor/depot_tools/my_activity.py +6 -3
  126. data/vendor/depot_tools/my_reviews.py +1 -1
  127. data/vendor/depot_tools/ninja +2 -2
  128. data/vendor/depot_tools/ninja-linux32 +0 -0
  129. data/vendor/depot_tools/ninja-linux64 +0 -0
  130. data/vendor/depot_tools/ninja-mac +0 -0
  131. data/vendor/depot_tools/ninja.exe +0 -0
  132. data/vendor/depot_tools/owners.py +14 -3
  133. data/vendor/depot_tools/presubmit_canned_checks.py +46 -67
  134. data/vendor/depot_tools/presubmit_support.py +109 -371
  135. data/vendor/depot_tools/pylintrc +83 -56
  136. data/vendor/depot_tools/recipe_modules/OWNERS +1 -0
  137. data/vendor/depot_tools/recipe_modules/bot_update/__init__.py +18 -9
  138. data/vendor/depot_tools/recipe_modules/bot_update/api.py +56 -55
  139. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/basic.json +3 -7
  140. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/basic_output_manifest.json +3 -7
  141. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/basic_with_branch_heads.json +3 -7
  142. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/buildbot.json +52 -0
  143. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/clobber.json +19 -10
  144. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/gerrit_no_rebase_patch_ref.json +19 -10
  145. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/gerrit_no_reset.json +19 -10
  146. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/no_shallow.json +19 -10
  147. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/reset_root_solution_revision.json +19 -10
  148. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/trychange.json +3 -7
  149. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/trychange_oauth2.json +2 -54
  150. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/trychange_oauth2_buildbot.json +56 -0
  151. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/{forced.json → trychange_oauth2_json.json} +6 -9
  152. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/trychange_oauth2_json_win.json +54 -0
  153. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/tryjob.json +9 -9
  154. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/tryjob_fail.json +9 -9
  155. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/tryjob_fail_patch.json +9 -9
  156. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/tryjob_fail_patch_download.json +9 -9
  157. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/tryjob_gerrit_angle.json +20 -10
  158. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/tryjob_gerrit_angle_deprecated.json +59 -0
  159. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/tryjob_v8.json +9 -9
  160. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/tryjob_v8_head_by_default.json +20 -10
  161. data/vendor/depot_tools/recipe_modules/bot_update/example.py +45 -63
  162. data/vendor/depot_tools/recipe_modules/bot_update/resources/bot_update.py +210 -807
  163. data/vendor/depot_tools/recipe_modules/bot_update/test_api.py +34 -45
  164. data/vendor/depot_tools/recipe_modules/cipd/api.py +59 -84
  165. data/vendor/depot_tools/recipe_modules/cipd/example.expected/basic.json +71 -117
  166. data/vendor/depot_tools/recipe_modules/cipd/example.expected/describe-failed.json +14 -60
  167. data/vendor/depot_tools/recipe_modules/cipd/example.expected/describe-many-instances.json +71 -117
  168. data/vendor/depot_tools/recipe_modules/cipd/example.expected/mac64.json +71 -117
  169. data/vendor/depot_tools/recipe_modules/cipd/example.expected/win64.json +71 -117
  170. data/vendor/depot_tools/recipe_modules/cipd/example.py +2 -12
  171. data/vendor/depot_tools/recipe_modules/cipd/test_api.py +0 -9
  172. data/vendor/depot_tools/recipe_modules/depot_tools/api.py +6 -0
  173. data/vendor/depot_tools/recipe_modules/depot_tools/example.expected/basic.json +7 -0
  174. data/vendor/depot_tools/recipe_modules/depot_tools/example.expected/win.json +7 -0
  175. data/vendor/depot_tools/recipe_modules/depot_tools/example.py +3 -0
  176. data/vendor/depot_tools/recipe_modules/gclient/__init__.py +4 -0
  177. data/vendor/depot_tools/recipe_modules/gclient/api.py +9 -22
  178. data/vendor/depot_tools/recipe_modules/gclient/config.py +18 -5
  179. data/vendor/depot_tools/recipe_modules/gclient/example.expected/basic.json +14 -14
  180. data/vendor/depot_tools/recipe_modules/gclient/example.expected/buildbot.json +211 -0
  181. data/vendor/depot_tools/recipe_modules/gclient/example.expected/revision.json +16 -14
  182. data/vendor/depot_tools/recipe_modules/gclient/example.expected/tryserver.json +16 -14
  183. data/vendor/depot_tools/recipe_modules/gclient/example.py +13 -11
  184. data/vendor/depot_tools/recipe_modules/gerrit/__init__.py +6 -0
  185. data/vendor/depot_tools/recipe_modules/gerrit/api.py +63 -0
  186. data/vendor/depot_tools/recipe_modules/gerrit/example.expected/basic.json +64 -0
  187. data/vendor/depot_tools/recipe_modules/gerrit/example.py +35 -0
  188. data/vendor/depot_tools/recipe_modules/gerrit/test_api.py +24 -0
  189. data/vendor/depot_tools/recipe_modules/git/__init__.py +4 -0
  190. data/vendor/depot_tools/recipe_modules/git/api.py +155 -142
  191. data/vendor/depot_tools/recipe_modules/git/example.expected/basic.json +43 -17
  192. data/vendor/depot_tools/recipe_modules/git/example.expected/basic_branch.json +43 -17
  193. data/vendor/depot_tools/recipe_modules/git/example.expected/basic_file_name.json +43 -17
  194. data/vendor/depot_tools/recipe_modules/git/example.expected/basic_hash.json +43 -17
  195. data/vendor/depot_tools/recipe_modules/git/example.expected/basic_ref.json +43 -17
  196. data/vendor/depot_tools/recipe_modules/git/example.expected/basic_submodule_update_force.json +43 -17
  197. data/vendor/depot_tools/recipe_modules/git/example.expected/can_fail_build.json +13 -13
  198. data/vendor/depot_tools/recipe_modules/git/example.expected/cannot_fail_build.json +43 -17
  199. data/vendor/depot_tools/recipe_modules/git/example.expected/cat-file_test.json +45 -19
  200. data/vendor/depot_tools/recipe_modules/git/example.expected/count-objects_delta.json +45 -19
  201. data/vendor/depot_tools/recipe_modules/git/example.expected/count-objects_failed.json +43 -17
  202. data/vendor/depot_tools/recipe_modules/git/example.expected/count-objects_with_bad_output.json +43 -17
  203. data/vendor/depot_tools/recipe_modules/git/example.expected/count-objects_with_bad_output_fails_build.json +8 -8
  204. data/vendor/depot_tools/recipe_modules/git/example.expected/curl_trace_file.json +44 -18
  205. data/vendor/depot_tools/recipe_modules/git/example.expected/git-cache-checkout.json +48 -22
  206. data/vendor/depot_tools/recipe_modules/git/example.expected/platform_win.json +43 -17
  207. data/vendor/depot_tools/recipe_modules/git/example.expected/rebase_failed.json +42 -16
  208. data/vendor/depot_tools/recipe_modules/git/example.expected/remote_not_origin.json +43 -17
  209. data/vendor/depot_tools/recipe_modules/git/example.expected/set_got_revision.json +43 -17
  210. data/vendor/depot_tools/recipe_modules/git/example.py +9 -3
  211. data/vendor/depot_tools/recipe_modules/git_cl/__init__.py +4 -0
  212. data/vendor/depot_tools/recipe_modules/git_cl/api.py +8 -8
  213. data/vendor/depot_tools/recipe_modules/git_cl/example.py +1 -1
  214. data/vendor/depot_tools/recipe_modules/gsutil/__init__.py +4 -0
  215. data/vendor/depot_tools/recipe_modules/gsutil/api.py +196 -0
  216. data/vendor/depot_tools/recipe_modules/gsutil/example.expected/basic.json +186 -0
  217. data/vendor/depot_tools/recipe_modules/gsutil/example.py +77 -0
  218. data/vendor/depot_tools/recipe_modules/gsutil/resources/gsutil_smart_retry.py +69 -0
  219. data/vendor/depot_tools/recipe_modules/infra_paths/__init__.py +3 -0
  220. data/vendor/depot_tools/recipe_modules/infra_paths/api.py +20 -3
  221. data/vendor/depot_tools/recipe_modules/infra_paths/example.expected/basic.json +3 -1
  222. data/vendor/depot_tools/recipe_modules/infra_paths/example.expected/paths_buildbot_linux.json +3 -1
  223. data/vendor/depot_tools/recipe_modules/infra_paths/example.expected/paths_buildbot_mac.json +3 -1
  224. data/vendor/depot_tools/recipe_modules/infra_paths/example.expected/paths_buildbot_win.json +3 -1
  225. data/vendor/depot_tools/recipe_modules/infra_paths/example.expected/paths_kitchen_linux.json +3 -1
  226. data/vendor/depot_tools/recipe_modules/infra_paths/example.expected/paths_kitchen_mac.json +3 -1
  227. data/vendor/depot_tools/recipe_modules/infra_paths/example.expected/paths_kitchen_win.json +3 -1
  228. data/vendor/depot_tools/recipe_modules/infra_paths/example.expected/paths_swarmbucket_linux.json +3 -1
  229. data/vendor/depot_tools/recipe_modules/infra_paths/example.expected/paths_swarmbucket_mac.json +3 -1
  230. data/vendor/depot_tools/recipe_modules/infra_paths/example.expected/paths_swarmbucket_win.json +3 -1
  231. data/vendor/depot_tools/recipe_modules/infra_paths/example.py +6 -1
  232. data/vendor/depot_tools/recipe_modules/infra_paths/path_config.py +4 -6
  233. data/vendor/depot_tools/recipe_modules/rietveld/__init__.py +5 -0
  234. data/vendor/depot_tools/recipe_modules/rietveld/api.py +12 -9
  235. data/vendor/depot_tools/recipe_modules/rietveld/example.expected/basic.json +2 -24
  236. data/vendor/depot_tools/recipe_modules/rietveld/example.expected/buildbot.json +30 -0
  237. data/vendor/depot_tools/recipe_modules/rietveld/example.py +12 -6
  238. data/vendor/depot_tools/recipe_modules/tryserver/__init__.py +4 -0
  239. data/vendor/depot_tools/recipe_modules/tryserver/api.py +46 -70
  240. data/vendor/depot_tools/recipe_modules/tryserver/example.expected/set_failure_hash_with_no_steps.json +8 -0
  241. data/vendor/depot_tools/recipe_modules/tryserver/example.expected/{with_svn_patch.json → with_gerrit_patch.json} +1 -31
  242. data/vendor/depot_tools/recipe_modules/tryserver/example.expected/with_gerrit_patch_deprecated.json +39 -0
  243. data/vendor/depot_tools/recipe_modules/tryserver/example.expected/with_git_patch.json +2 -2
  244. data/vendor/depot_tools/recipe_modules/tryserver/example.expected/with_git_patch_luci.json +8 -0
  245. data/vendor/depot_tools/recipe_modules/tryserver/example.expected/with_rietveld_patch.json +3 -3
  246. data/vendor/depot_tools/recipe_modules/tryserver/example.expected/with_rietveld_patch_new.json +3 -3
  247. data/vendor/depot_tools/recipe_modules/tryserver/example.expected/with_wrong_patch.json +1 -1
  248. data/vendor/depot_tools/recipe_modules/tryserver/example.expected/with_wrong_patch_new.json +1 -1
  249. data/vendor/depot_tools/recipe_modules/tryserver/example.py +35 -5
  250. data/vendor/depot_tools/recipes.py +52 -28
  251. data/vendor/depot_tools/repo +216 -69
  252. data/vendor/depot_tools/rietveld.py +20 -15
  253. data/vendor/depot_tools/roll_dep.py +1 -1
  254. data/vendor/depot_tools/scm.py +11 -826
  255. data/vendor/depot_tools/subprocess2.py +5 -5
  256. data/vendor/depot_tools/third_party/cq_client/README.depot_tools.md +2 -0
  257. data/vendor/depot_tools/third_party/cq_client/README.md +5 -1
  258. data/vendor/depot_tools/third_party/cq_client/cq.pb.go +183 -104
  259. data/vendor/depot_tools/third_party/cq_client/cq.proto +43 -27
  260. data/vendor/depot_tools/third_party/cq_client/cq_pb2.py +95 -29
  261. data/vendor/depot_tools/third_party/cq_client/testdata/cq_both.cfg +67 -0
  262. data/vendor/depot_tools/third_party/cq_client/testdata/cq_gerrit.cfg +1 -2
  263. data/vendor/depot_tools/third_party/cq_client/testdata/cq_rietveld.cfg +0 -3
  264. data/vendor/depot_tools/third_party/upload.py +44 -24
  265. data/vendor/depot_tools/win_toolchain/get_toolchain_if_necessary.py +0 -5
  266. metadata +38 -93
  267. data/patches/0004-Reinterpret-thread-hash-for-FreeBSD-too.patch +0 -25
  268. data/vendor/depot_tools/git-auto-svn +0 -6
  269. data/vendor/depot_tools/git_auto_svn.py +0 -122
  270. data/vendor/depot_tools/man/html/git-auto-svn.html +0 -837
  271. data/vendor/depot_tools/man/man1/git-auto-svn.1 +0 -113
  272. data/vendor/depot_tools/man/src/_git-auto-svn_desc.helper.txt +0 -1
  273. data/vendor/depot_tools/man/src/git-auto-svn.txt +0 -69
  274. data/vendor/depot_tools/recipe_modules/bot_update/example.expected/off.json +0 -43
  275. data/vendor/depot_tools/recipe_modules/cipd/example.expected/install-failed.json +0 -31
  276. data/vendor/depot_tools/recipe_modules/cipd/resources/bootstrap.py +0 -218
  277. data/vendor/depot_tools/recipe_modules/tryserver/test_api.py +0 -7
  278. data/vendor/depot_tools/third_party/gsutil/CHECKSUM +0 -1
  279. data/vendor/depot_tools/third_party/gsutil/COPYING +0 -202
  280. data/vendor/depot_tools/third_party/gsutil/LICENSE.third_party +0 -295
  281. data/vendor/depot_tools/third_party/gsutil/MANIFEST.in +0 -5
  282. data/vendor/depot_tools/third_party/gsutil/README +0 -38
  283. data/vendor/depot_tools/third_party/gsutil/README.chromium +0 -25
  284. data/vendor/depot_tools/third_party/gsutil/README.pkg +0 -49
  285. data/vendor/depot_tools/third_party/gsutil/ReleaseNotes.txt +0 -825
  286. data/vendor/depot_tools/third_party/gsutil/VERSION +0 -1
  287. data/vendor/depot_tools/third_party/gsutil/gslib/README +0 -5
  288. data/vendor/depot_tools/third_party/gsutil/gslib/__init__.py +0 -22
  289. data/vendor/depot_tools/third_party/gsutil/gslib/addlhelp/__init__.py +0 -15
  290. data/vendor/depot_tools/third_party/gsutil/gslib/addlhelp/acls.py +0 -234
  291. data/vendor/depot_tools/third_party/gsutil/gslib/addlhelp/anon.py +0 -57
  292. data/vendor/depot_tools/third_party/gsutil/gslib/addlhelp/command_opts.py +0 -116
  293. data/vendor/depot_tools/third_party/gsutil/gslib/addlhelp/dev.py +0 -139
  294. data/vendor/depot_tools/third_party/gsutil/gslib/addlhelp/metadata.py +0 -186
  295. data/vendor/depot_tools/third_party/gsutil/gslib/addlhelp/naming.py +0 -173
  296. data/vendor/depot_tools/third_party/gsutil/gslib/addlhelp/prod.py +0 -160
  297. data/vendor/depot_tools/third_party/gsutil/gslib/addlhelp/projects.py +0 -130
  298. data/vendor/depot_tools/third_party/gsutil/gslib/addlhelp/subdirs.py +0 -110
  299. data/vendor/depot_tools/third_party/gsutil/gslib/addlhelp/support.py +0 -86
  300. data/vendor/depot_tools/third_party/gsutil/gslib/addlhelp/versioning.py +0 -242
  301. data/vendor/depot_tools/third_party/gsutil/gslib/addlhelp/wildcards.py +0 -170
  302. data/vendor/depot_tools/third_party/gsutil/gslib/bucket_listing_ref.py +0 -175
  303. data/vendor/depot_tools/third_party/gsutil/gslib/command.py +0 -725
  304. data/vendor/depot_tools/third_party/gsutil/gslib/command_runner.py +0 -102
  305. data/vendor/depot_tools/third_party/gsutil/gslib/commands/__init__.py +0 -15
  306. data/vendor/depot_tools/third_party/gsutil/gslib/commands/cat.py +0 -131
  307. data/vendor/depot_tools/third_party/gsutil/gslib/commands/chacl.py +0 -523
  308. data/vendor/depot_tools/third_party/gsutil/gslib/commands/config.py +0 -662
  309. data/vendor/depot_tools/third_party/gsutil/gslib/commands/cp.py +0 -1819
  310. data/vendor/depot_tools/third_party/gsutil/gslib/commands/disablelogging.py +0 -101
  311. data/vendor/depot_tools/third_party/gsutil/gslib/commands/enablelogging.py +0 -149
  312. data/vendor/depot_tools/third_party/gsutil/gslib/commands/getacl.py +0 -82
  313. data/vendor/depot_tools/third_party/gsutil/gslib/commands/getcors.py +0 -121
  314. data/vendor/depot_tools/third_party/gsutil/gslib/commands/getdefacl.py +0 -86
  315. data/vendor/depot_tools/third_party/gsutil/gslib/commands/getlogging.py +0 -137
  316. data/vendor/depot_tools/third_party/gsutil/gslib/commands/getversioning.py +0 -116
  317. data/vendor/depot_tools/third_party/gsutil/gslib/commands/getwebcfg.py +0 -122
  318. data/vendor/depot_tools/third_party/gsutil/gslib/commands/help.py +0 -218
  319. data/vendor/depot_tools/third_party/gsutil/gslib/commands/ls.py +0 -578
  320. data/vendor/depot_tools/third_party/gsutil/gslib/commands/mb.py +0 -172
  321. data/vendor/depot_tools/third_party/gsutil/gslib/commands/mv.py +0 -159
  322. data/vendor/depot_tools/third_party/gsutil/gslib/commands/perfdiag.py +0 -903
  323. data/vendor/depot_tools/third_party/gsutil/gslib/commands/rb.py +0 -113
  324. data/vendor/depot_tools/third_party/gsutil/gslib/commands/rm.py +0 -237
  325. data/vendor/depot_tools/third_party/gsutil/gslib/commands/setacl.py +0 -138
  326. data/vendor/depot_tools/third_party/gsutil/gslib/commands/setcors.py +0 -145
  327. data/vendor/depot_tools/third_party/gsutil/gslib/commands/setdefacl.py +0 -105
  328. data/vendor/depot_tools/third_party/gsutil/gslib/commands/setmeta.py +0 -420
  329. data/vendor/depot_tools/third_party/gsutil/gslib/commands/setversioning.py +0 -114
  330. data/vendor/depot_tools/third_party/gsutil/gslib/commands/setwebcfg.py +0 -190
  331. data/vendor/depot_tools/third_party/gsutil/gslib/commands/update.py +0 -305
  332. data/vendor/depot_tools/third_party/gsutil/gslib/commands/version.py +0 -150
  333. data/vendor/depot_tools/third_party/gsutil/gslib/exception.py +0 -76
  334. data/vendor/depot_tools/third_party/gsutil/gslib/help_provider.py +0 -81
  335. data/vendor/depot_tools/third_party/gsutil/gslib/name_expansion.py +0 -550
  336. data/vendor/depot_tools/third_party/gsutil/gslib/no_op_auth_plugin.py +0 -30
  337. data/vendor/depot_tools/third_party/gsutil/gslib/plurality_checkable_iterator.py +0 -56
  338. data/vendor/depot_tools/third_party/gsutil/gslib/project_id.py +0 -67
  339. data/vendor/depot_tools/third_party/gsutil/gslib/storage_uri_builder.py +0 -56
  340. data/vendor/depot_tools/third_party/gsutil/gslib/thread_pool.py +0 -79
  341. data/vendor/depot_tools/third_party/gsutil/gslib/util.py +0 -167
  342. data/vendor/depot_tools/third_party/gsutil/gslib/wildcard_iterator.py +0 -498
  343. data/vendor/depot_tools/third_party/gsutil/gsutil +0 -384
  344. data/vendor/depot_tools/third_party/gsutil/gsutil.spec.in +0 -75
  345. data/vendor/depot_tools/third_party/gsutil/oauth2_plugin/__init__.py +0 -22
  346. data/vendor/depot_tools/third_party/gsutil/oauth2_plugin/oauth2_client.py +0 -630
  347. data/vendor/depot_tools/third_party/gsutil/oauth2_plugin/oauth2_client_test.py +0 -374
  348. data/vendor/depot_tools/third_party/gsutil/oauth2_plugin/oauth2_helper.py +0 -103
  349. data/vendor/depot_tools/third_party/gsutil/oauth2_plugin/oauth2_plugin.py +0 -24
  350. data/vendor/depot_tools/third_party/gsutil/pkg_util.py +0 -60
  351. data/vendor/depot_tools/third_party/gsutil/plugins/__init__.py +0 -0
  352. data/vendor/depot_tools/third_party/gsutil/plugins/sso_auth.py +0 -105
@@ -1,218 +0,0 @@
1
- # Copyright 2011 Google Inc. All Rights Reserved.
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
- import gslib
16
- import itertools
17
- import os
18
- import re
19
- import struct
20
- import sys
21
-
22
- from gslib.command import Command
23
- from gslib.command import COMMAND_NAME
24
- from gslib.command import COMMAND_NAME_ALIASES
25
- from gslib.command import CONFIG_REQUIRED
26
- from gslib.command import FILE_URIS_OK
27
- from gslib.command import MAX_ARGS
28
- from gslib.command import MIN_ARGS
29
- from gslib.command import PROVIDER_URIS_OK
30
- from gslib.command import SUPPORTED_SUB_ARGS
31
- from gslib.command import URIS_START_ARG
32
- from gslib.exception import CommandException
33
- from gslib.help_provider import ALL_HELP_TYPES
34
- from gslib.help_provider import HELP_NAME
35
- from gslib.help_provider import HELP_NAME_ALIASES
36
- from gslib.help_provider import HELP_ONE_LINE_SUMMARY
37
- from gslib.help_provider import HelpProvider
38
- from gslib.help_provider import HELP_TEXT
39
- from gslib.help_provider import HelpType
40
- from gslib.help_provider import HELP_TYPE
41
- from gslib.help_provider import MAX_HELP_NAME_LEN
42
- from subprocess import PIPE
43
- from subprocess import Popen
44
-
45
- _detailed_help_text = ("""
46
- <B>SYNOPSIS</B>
47
- gsutil help [command or topic]
48
-
49
-
50
- <B>DESCRIPTION</B>
51
- Running:
52
- gsutil help
53
- will provide a summary of all commands and additional topics on which
54
- help is available.
55
-
56
- Running:
57
- gsutil help command or topic
58
- will provide help about the specified command or topic.
59
-
60
- If you set the PAGER environment variable to the path to a pager program
61
- (such as /bin/less on Linux), long help sections will be piped through
62
- the specified pager.
63
- """)
64
-
65
- top_level_usage_string = (
66
- "Usage: gsutil [-d][-D] [-h header]... [-m] [command [opts...] args...]"
67
- )
68
-
69
- class HelpCommand(Command):
70
- """Implementation of gsutil help command."""
71
-
72
- # Command specification (processed by parent class).
73
- command_spec = {
74
- # Name of command.
75
- COMMAND_NAME : 'help',
76
- # List of command name aliases.
77
- COMMAND_NAME_ALIASES : ['?', 'man'],
78
- # Min number of args required by this command.
79
- MIN_ARGS : 0,
80
- # Max number of args required by this command, or NO_MAX.
81
- MAX_ARGS : 1,
82
- # Getopt-style string specifying acceptable sub args.
83
- SUPPORTED_SUB_ARGS : '',
84
- # True if file URIs acceptable for this command.
85
- FILE_URIS_OK : True,
86
- # True if provider-only URIs acceptable for this command.
87
- PROVIDER_URIS_OK : False,
88
- # Index in args of first URI arg.
89
- URIS_START_ARG : 0,
90
- # True if must configure gsutil before running command.
91
- CONFIG_REQUIRED : False,
92
- }
93
- help_spec = {
94
- # Name of command or auxiliary help info for which this help applies.
95
- HELP_NAME : 'help',
96
- # List of help name aliases.
97
- HELP_NAME_ALIASES : ['?'],
98
- # Type of help:
99
- HELP_TYPE : HelpType.COMMAND_HELP,
100
- # One line summary of this help.
101
- HELP_ONE_LINE_SUMMARY : 'Get help about commands and topics',
102
- # The full help text.
103
- HELP_TEXT : _detailed_help_text,
104
- }
105
-
106
- # Command entry point.
107
- def RunCommand(self):
108
- (help_type_map, help_name_map) = self._LoadHelpMaps()
109
- output = []
110
- if not len(self.args):
111
- output.append('%s\nAvailable commands:\n' % top_level_usage_string)
112
- format_str = ' %-' + str(MAX_HELP_NAME_LEN) + 's%s\n'
113
- for help_prov in sorted(help_type_map[HelpType.COMMAND_HELP],
114
- key=lambda hp: hp.help_spec[HELP_NAME]):
115
- output.append(format_str % (help_prov.help_spec[HELP_NAME],
116
- help_prov.help_spec[HELP_ONE_LINE_SUMMARY]))
117
- output.append('\nAdditional help topics:\n')
118
- for help_prov in sorted(help_type_map[HelpType.ADDITIONAL_HELP],
119
- key=lambda hp: hp.help_spec[HELP_NAME]):
120
- output.append(format_str % (help_prov.help_spec[HELP_NAME],
121
- help_prov.help_spec[HELP_ONE_LINE_SUMMARY]))
122
- output.append('\nUse gsutil help <command or topic> for detailed help.')
123
- else:
124
- arg = self.args[0]
125
- if arg not in help_name_map:
126
- output.append('No help available for "%s"' % arg)
127
- else:
128
- help_prov = help_name_map[self.args[0]]
129
- output.append('<B>NAME</B>\n')
130
- output.append(' %s - %s\n' % (
131
- help_prov.help_spec[HELP_NAME],
132
- help_prov.help_spec[HELP_ONE_LINE_SUMMARY]))
133
- output.append('\n\n')
134
- output.append(help_prov.help_spec[HELP_TEXT].strip('\n'))
135
- self._OutputHelp(''.join(output))
136
- return 0
137
-
138
- def _OutputHelp(self, str):
139
- """Outputs simply formatted string, paginating if long and PAGER defined"""
140
- # Replace <B> and </B> with terminal formatting strings.
141
- str = re.sub('<B>', '\033[1m', str)
142
- str = re.sub('</B>', '\033[0;0m', str)
143
- num_lines = len(str.split('\n'))
144
- if 'PAGER' in os.environ and num_lines >= self.getTermLines():
145
- # Use -r option for less to make bolding work right.
146
- pager = os.environ['PAGER'].split(' ')
147
- if pager[0].endswith('less'):
148
- pager.append('-r')
149
- try:
150
- Popen(pager, stdin=PIPE).communicate(input=str)
151
- except OSError, e:
152
- raise CommandException('Unable to open pager (%s): %s' %
153
- (' '.join(pager), e))
154
- else:
155
- print str
156
-
157
- _DEFAULT_LINES = 25
158
-
159
- def getTermLines(self):
160
- """Returns number of terminal lines"""
161
- # fcntl isn't supported in Windows.
162
- try:
163
- import fcntl
164
- import termios
165
- except ImportError:
166
- return self._DEFAULT_LINES
167
- def ioctl_GWINSZ(fd):
168
- try:
169
- return struct.unpack(
170
- 'hh', fcntl.ioctl(fd, termios.TIOCGWINSZ, '1234'))[0]
171
- except:
172
- return 0 # Failure (so will retry on different file descriptor below).
173
- # Try to find a valid number of lines from termio for stdin, stdout,
174
- # or stderr, in that order.
175
- ioc = ioctl_GWINSZ(0) or ioctl_GWINSZ(1) or ioctl_GWINSZ(2)
176
- if not ioc:
177
- try:
178
- fd = os.open(os.ctermid(), os.O_RDONLY)
179
- ioc = ioctl_GWINSZ(fd)
180
- os.close(fd)
181
- except:
182
- pass
183
- if not ioc:
184
- ioc = os.environ.get('LINES', self._DEFAULT_LINES)
185
- return int(ioc)
186
-
187
- def _LoadHelpMaps(self):
188
- """Returns tuple (help type -> [HelpProviders],
189
- help name->HelpProvider dict,
190
- )."""
191
- # Walk gslib/commands and gslib/addlhelp to find all HelpProviders.
192
- for f in os.listdir(os.path.join(self.gsutil_bin_dir, 'gslib', 'commands')):
193
- # Handles no-extension files, etc.
194
- (module_name, ext) = os.path.splitext(f)
195
- if ext == '.py':
196
- __import__('gslib.commands.%s' % module_name)
197
- for f in os.listdir(os.path.join(self.gsutil_bin_dir, 'gslib', 'addlhelp')):
198
- (module_name, ext) = os.path.splitext(f)
199
- if ext == '.py':
200
- __import__('gslib.addlhelp.%s' % module_name)
201
- help_type_map = {}
202
- help_name_map = {}
203
- for s in gslib.help_provider.ALL_HELP_TYPES:
204
- help_type_map[s] = []
205
- # Only include HelpProvider subclasses in the dict.
206
- for help_prov in itertools.chain(
207
- HelpProvider.__subclasses__(), Command.__subclasses__()):
208
- if help_prov is Command:
209
- # Skip the Command base class itself; we just want its subclasses,
210
- # where the help command text lives (in addition to non-Command
211
- # HelpProviders, like naming.py).
212
- continue
213
- gslib.help_provider.SanityCheck(help_prov, help_name_map)
214
- help_name_map[help_prov.help_spec[HELP_NAME]] = help_prov
215
- for help_name_aliases in help_prov.help_spec[HELP_NAME_ALIASES]:
216
- help_name_map[help_name_aliases] = help_prov
217
- help_type_map[help_prov.help_spec[HELP_TYPE]].append(help_prov)
218
- return (help_type_map, help_name_map)
@@ -1,578 +0,0 @@
1
- # Copyright 2011 Google Inc. All Rights Reserved.
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
- from boto.s3.deletemarker import DeleteMarker
16
- from gslib.bucket_listing_ref import BucketListingRef
17
- from gslib.command import Command
18
- from gslib.command import COMMAND_NAME
19
- from gslib.command import COMMAND_NAME_ALIASES
20
- from gslib.command import CONFIG_REQUIRED
21
- from gslib.command import FILE_URIS_OK
22
- from gslib.command import MAX_ARGS
23
- from gslib.command import MIN_ARGS
24
- from gslib.command import PROVIDER_URIS_OK
25
- from gslib.command import SUPPORTED_SUB_ARGS
26
- from gslib.command import URIS_START_ARG
27
- from gslib.exception import CommandException
28
- from gslib.help_provider import HELP_NAME
29
- from gslib.help_provider import HELP_NAME_ALIASES
30
- from gslib.help_provider import HELP_ONE_LINE_SUMMARY
31
- from gslib.help_provider import HELP_TEXT
32
- from gslib.help_provider import HelpType
33
- from gslib.help_provider import HELP_TYPE
34
- from gslib.plurality_checkable_iterator import PluralityCheckableIterator
35
- from gslib.util import ListingStyle
36
- from gslib.util import MakeHumanReadable
37
- from gslib.util import NO_MAX
38
- from gslib.wildcard_iterator import ContainsWildcard
39
- import boto
40
-
41
- _detailed_help_text = ("""
42
- <B>SYNOPSIS</B>
43
- gsutil ls [-a] [-b] [-l] [-L] [-R] [-p proj_id] uri...
44
-
45
-
46
- <B>LISTING PROVIDERS, BUCKETS, SUBDIRECTORIES, AND OBJECTS</B>
47
- If you run gsutil ls without URIs, it lists all of the Google Cloud Storage
48
- buckets under your default project ID:
49
-
50
- gsutil ls
51
-
52
- (For details about projects, see "gsutil help projects" and also the -p
53
- option in the OPTIONS section below.)
54
-
55
- If you specify one or more provider URIs, gsutil ls will list buckets at
56
- each listed provider:
57
-
58
- gsutil ls gs://
59
-
60
- If you specify bucket URIs, gsutil ls will list objects at the top level of
61
- each bucket, along with the names of each subdirectory. For example:
62
-
63
- gsutil ls gs://bucket
64
-
65
- might produce output like:
66
-
67
- gs://bucket/obj1.htm
68
- gs://bucket/obj2.htm
69
- gs://bucket/images1/
70
- gs://bucket/images2/
71
-
72
- The "/" at the end of the last 2 URIs tells you they are subdirectories,
73
- which you can list using:
74
-
75
- gsutil ls gs://bucket/images*
76
-
77
- If you specify object URIs, gsutil ls will list the specified objects. For
78
- example:
79
-
80
- gsutil ls gs://bucket/*.txt
81
-
82
- will list all files whose name matches the above wildcard at the top level
83
- of the bucket.
84
-
85
- See "gsutil help wildcards" for more details on working with wildcards.
86
-
87
-
88
- <B>DIRECTORY BY DIRECTORY, FLAT, and RECURSIVE LISTINGS</B>
89
- Listing a bucket or subdirectory (as illustrated near the end of the previous
90
- section) only shows the objects and names of subdirectories it contains. You
91
- can list all objects in a bucket by using the -R option. For example:
92
-
93
- gsutil ls -R gs://bucket
94
-
95
- will list the top-level objects and buckets, then the objects and
96
- buckets under gs://bucket/images1, then those under gs://bucket/images2, etc.
97
-
98
- If you want to see all objects in the bucket in one "flat" listing use the
99
- recursive ("**") wildcard, like:
100
-
101
- gsutil ls -R gs://bucket/**
102
-
103
- or, for a flat listing of a subdirectory:
104
-
105
- gsutil ls -R gs://bucket/dir/**
106
-
107
-
108
- <B>LISTING OBJECT DETAILS</B>
109
- If you specify the -l option, gsutil will output additional information
110
- about each matching provider, bucket, subdirectory, or object. For example,
111
-
112
- gsutil ls -l gs://bucket/*.txt
113
-
114
- will print the object size, creation time stamp, and name of each matching
115
- object, along with the total count and sum of sizes of all matching objects:
116
-
117
- 2276224 2012-03-02T19:25:17 gs://bucket/obj1
118
- 3914624 2012-03-02T19:30:27 gs://bucket/obj2
119
- TOTAL: 2 objects, 6190848 bytes (5.9 MB)
120
-
121
- Note that the total listed in parentheses above is in mebibytes (or gibibytes,
122
- tebibytes, etc.), which corresponds to the unit of billing measurement for
123
- Google Cloud Storage.
124
-
125
- You can get a listing of all the objects in the top-level bucket directory
126
- (along with the total count and sum of sizes) using a command like:
127
-
128
- gsutil ls -l gs://bucket
129
-
130
- To print additional detail about objects and buckets use the gsutil ls -L
131
- option. For example:
132
-
133
- gsutil ls -L gs://bucket/obj1
134
-
135
- will print something like:
136
-
137
- gs://bucket/obj1:
138
- Creation Time: Fri, 02 Mar 2012 19:25:17 GMT
139
- Size: 2276224
140
- Cache-Control: private, max-age=0
141
- Content-Type: application/x-executable
142
- ETag: 5ca6796417570a586723b7344afffc81
143
- ACL: <Owner:00b4903a97163d99003117abe64d292561d2b4074fc90ce5c0e35ac45f66ad70, <<UserById: 00b4903a97163d99003117abe64d292561d2b4074fc90ce5c0e35ac45f66ad70>: u'FULL_CONTROL'>>
144
- TOTAL: 1 objects, 2276224 bytes (2.17 MB)
145
-
146
- Note that the -L option is slower and more costly to use than the -l option,
147
- because it makes a bucket listing request followed by a HEAD request for
148
- each individual object (rather than just parsing the information it needs
149
- out of a single bucket listing, the way the -l option does).
150
-
151
- See also "gsutil help getacl" for getting a more readable version of the ACL.
152
-
153
-
154
- <B>LISTING BUCKET DETAILS</B>
155
- If you want to see information about the bucket itself, use the -b
156
- option. For example:
157
-
158
- gsutil ls -L -b gs://bucket
159
-
160
- will print something like:
161
-
162
- gs://bucket/ :
163
- 24 objects, 29.83 KB
164
- StorageClass: STANDARD
165
- LocationConstraint: US
166
- Versioning enabled: True
167
- ACL: <Owner:00b4903a9740e42c29800f53bd5a9a62a2f96eb3f64a4313a115df3f3a776bf7, <<GroupById: 00b4903a9740e42c29800f53bd5a9a62a2f96eb3f64a4313a115df3f3a776bf7>: u'FULL_CONTROL'>>
168
- Default ACL: <>
169
- TOTAL: 24 objects, 30544 bytes (29.83 KB)
170
-
171
-
172
- <B>OPTIONS</B>
173
- -l Prints long listing (owner, length).
174
-
175
- -L Prints even more detail than -l. This is a separate option because
176
- it makes additional service requests (so, takes longer and adds
177
- requests costs).
178
-
179
- -b Prints info about the bucket when used with a bucket URI.
180
-
181
- -p proj_id Specifies the project ID to use for listing buckets.
182
-
183
- -R, -r Requests a recursive listing.
184
-
185
- -a Includes non-current object versions / generations in the listing
186
- (only useful with a versioning-enabled bucket). If combined with
187
- -l option also prints meta-generation for each listed object.
188
- """)
189
-
190
-
191
- class LsCommand(Command):
192
- """Implementation of gsutil ls command."""
193
-
194
- # Command specification (processed by parent class).
195
- command_spec = {
196
- # Name of command.
197
- COMMAND_NAME : 'ls',
198
- # List of command name aliases.
199
- COMMAND_NAME_ALIASES : ['dir', 'list'],
200
- # Min number of args required by this command.
201
- MIN_ARGS : 0,
202
- # Max number of args required by this command, or NO_MAX.
203
- MAX_ARGS : NO_MAX,
204
- # Getopt-style string specifying acceptable sub args.
205
- SUPPORTED_SUB_ARGS : 'ablLp:rR',
206
- # True if file URIs acceptable for this command.
207
- FILE_URIS_OK : False,
208
- # True if provider-only URIs acceptable for this command.
209
- PROVIDER_URIS_OK : True,
210
- # Index in args of first URI arg.
211
- URIS_START_ARG : 0,
212
- # True if must configure gsutil before running command.
213
- CONFIG_REQUIRED : True,
214
- }
215
- help_spec = {
216
- # Name of command or auxiliary help info for which this help applies.
217
- HELP_NAME : 'ls',
218
- # List of help name aliases.
219
- HELP_NAME_ALIASES : ['dir', 'list'],
220
- # Type of help:
221
- HELP_TYPE : HelpType.COMMAND_HELP,
222
- # One line summary of this help.
223
- HELP_ONE_LINE_SUMMARY : 'List providers, buckets, or objects',
224
- # The full help text.
225
- HELP_TEXT : _detailed_help_text,
226
- }
227
-
228
- def _PrintBucketInfo(self, bucket_uri, listing_style):
229
- """Print listing info for given bucket.
230
-
231
- Args:
232
- bucket_uri: StorageUri being listed.
233
- listing_style: ListingStyle enum describing type of output desired.
234
-
235
- Returns:
236
- Tuple (total objects, total bytes) in the bucket.
237
- """
238
- bucket_objs = 0
239
- bucket_bytes = 0
240
- if listing_style == ListingStyle.SHORT:
241
- print bucket_uri
242
- else:
243
- for obj in self.WildcardIterator(
244
- bucket_uri.clone_replace_name('**')).IterKeys():
245
- bucket_objs += 1
246
- bucket_bytes += obj.size
247
- if listing_style == ListingStyle.LONG:
248
- print '%s : %s objects, %s' % (
249
- bucket_uri, bucket_objs, MakeHumanReadable(bucket_bytes))
250
- else: # listing_style == ListingStyle.LONG_LONG:
251
- location_constraint = bucket_uri.get_location(validate=False,
252
- headers=self.headers)
253
- location_output = ''
254
- if location_constraint:
255
- location_output = '\n\tLocationConstraint: %s' % location_constraint
256
- storage_class = bucket_uri.get_storage_class(validate=False,
257
- headers=self.headers)
258
- self.proj_id_handler.FillInProjectHeaderIfNeeded(
259
- 'get_acl', bucket_uri, self.headers)
260
- print('%s :\n\t%d objects, %s\n\tStorageClass: %s%s\n'
261
- '\tVersioning enabled: %s\n\tACL: %s\n'
262
- '\tDefault ACL: %s' % (
263
- bucket_uri, bucket_objs, MakeHumanReadable(bucket_bytes),
264
- storage_class, location_output,
265
- bucket_uri.get_versioning_config(),
266
- bucket_uri.get_acl(False, self.headers),
267
- bucket_uri.get_def_acl(False, self.headers)))
268
- return (bucket_objs, bucket_bytes)
269
-
270
- def _UriStrForObj(self, uri, obj):
271
- """Constructs a URI string for the given object.
272
-
273
- For example if we were iterating gs://*, obj could be an object in one
274
- of the user's buckets enumerated by the ls command.
275
-
276
- Args:
277
- uri: base StorageUri being iterated.
278
- obj: object (Key) being listed.
279
-
280
- Returns:
281
- URI string.
282
- """
283
- version_info = ''
284
- if self.all_versions:
285
- if uri.get_provider().name == 'google' and obj.generation:
286
- version_info = '#%s' % obj.generation
287
- elif uri.get_provider().name == 'aws' and obj.version_id:
288
- if isinstance(obj, DeleteMarker):
289
- version_info = '#<DeleteMarker>' + str(obj.version_id)
290
- else:
291
- version_info = '#' + str(obj.version_id)
292
- else:
293
- version_info = ''
294
- return '%s://%s/%s%s' % (uri.scheme, obj.bucket.name, obj.name,
295
- version_info)
296
-
297
- def _PrintInfoAboutBucketListingRef(self, bucket_listing_ref, listing_style):
298
- """Print listing info for given bucket_listing_ref.
299
-
300
- Args:
301
- bucket_listing_ref: BucketListing being listed.
302
- listing_style: ListingStyle enum describing type of output desired.
303
-
304
- Returns:
305
- Tuple (number of objects,
306
- object length, if listing_style is one of the long listing formats)
307
-
308
- Raises:
309
- Exception: if calling bug encountered.
310
- """
311
- uri = bucket_listing_ref.GetUri()
312
- obj = bucket_listing_ref.GetKey()
313
- uri_str = self._UriStrForObj(uri, obj)
314
- if listing_style == ListingStyle.SHORT:
315
- print uri_str.encode('utf-8')
316
- return (1, 0)
317
- elif listing_style == ListingStyle.LONG:
318
- # Exclude timestamp fractional secs (example: 2010-08-23T12:46:54.187Z).
319
- timestamp = obj.last_modified[:19].decode('utf8').encode('ascii')
320
- if not isinstance(obj, DeleteMarker):
321
- if self.all_versions:
322
- print '%10s %s %s meta_generation=%s' % (
323
- obj.size, timestamp, uri_str.encode('utf-8'), obj.meta_generation)
324
- else:
325
- print '%10s %s %s' % (obj.size, timestamp, uri_str.encode('utf-8'))
326
- return (1, obj.size)
327
- else:
328
- if self.all_versions:
329
- print '%10s %s %s meta_generation=%s' % (
330
- 0, timestamp, uri_str.encode('utf-8'), obj.meta_generation)
331
- else:
332
- print '%10s %s %s' % (0, timestamp, uri_str.encode('utf-8'))
333
- return (0, 1)
334
- elif listing_style == ListingStyle.LONG_LONG:
335
- # Run in a try/except clause so we can continue listings past
336
- # access-denied errors (which can happen because user may have READ
337
- # permission on object and thus see the bucket listing data, but lack
338
- # FULL_CONTROL over individual objects and thus not be able to read
339
- # their ACLs).
340
- try:
341
- print '%s:' % uri_str.encode('utf-8')
342
- suri = self.suri_builder.StorageUri(uri_str)
343
- obj = suri.get_key(False)
344
- print '\tCreation time:\t%s' % obj.last_modified
345
- if obj.cache_control:
346
- print '\tCache-Control:\t%s' % obj.cache_control
347
- if obj.content_disposition:
348
- print '\tContent-Disposition:\t%s' % obj.content_disposition
349
- if obj.content_encoding:
350
- print '\tContent-Encoding:\t%s' % obj.content_encoding
351
- if obj.content_language:
352
- print '\tContent-Language:\t%s' % obj.content_language
353
- print '\tContent-Length:\t%s' % obj.size
354
- print '\tContent-Type:\t%s' % obj.content_type
355
- if obj.metadata:
356
- prefix = uri.get_provider().metadata_prefix
357
- for name in obj.metadata:
358
- print '\t%s%s:\t%s' % (prefix, name, obj.metadata[name])
359
- print '\tETag:\t\t%s' % obj.etag.strip('"\'')
360
- print '\tACL:\t\t%s' % (suri.get_acl(False, self.headers))
361
- return (1, obj.size)
362
- except boto.exception.GSResponseError as e:
363
- if e.status == 403:
364
- print ('\tACL:\t\tACCESS DENIED. Note: you need FULL_CONTROL '
365
- 'permission\n\t\t\ton the object to read its ACL.')
366
- return (1, obj.size)
367
- else:
368
- raise e
369
- else:
370
- raise Exception('Unexpected ListingStyle(%s)' % listing_style)
371
-
372
- def _ExpandUriAndPrintInfo(self, uri, listing_style, should_recurse=False):
373
- """
374
- Expands wildcards and directories/buckets for uri as needed, and
375
- calls _PrintInfoAboutBucketListingRef() on each.
376
-
377
- Args:
378
- uri: StorageUri being listed.
379
- listing_style: ListingStyle enum describing type of output desired.
380
- should_recurse: bool indicator of whether to expand recursively.
381
-
382
- Returns:
383
- Tuple (number of matching objects, number of bytes across these objects).
384
- """
385
- # We do a two-level loop, with the outer loop iterating level-by-level from
386
- # blrs_to_expand, and the inner loop iterating the matches at the current
387
- # level, printing them, and adding any new subdirs that need expanding to
388
- # blrs_to_expand (to be picked up in the next outer loop iteration).
389
- blrs_to_expand = [BucketListingRef(uri)]
390
- num_objs = 0
391
- num_bytes = 0
392
- expanding_top_level = True
393
- printed_one = False
394
- num_expanded_blrs = 0
395
- while len(blrs_to_expand):
396
- if printed_one:
397
- print
398
- blr = blrs_to_expand.pop(0)
399
- if blr.HasKey():
400
- blr_iterator = iter([blr])
401
- elif blr.HasPrefix():
402
- # Bucket subdir from a previous iteration. Print "header" line only if
403
- # we're listing more than one subdir (or if it's a recursive listing),
404
- # to be consistent with the way UNIX ls works.
405
- if num_expanded_blrs > 1 or should_recurse:
406
- print '%s:' % blr.GetUriString().encode('utf-8')
407
- printed_one = True
408
- blr_iterator = self.WildcardIterator('%s/*' %
409
- blr.GetRStrippedUriString(),
410
- all_versions=self.all_versions)
411
- elif blr.NamesBucket():
412
- blr_iterator = self.WildcardIterator('%s*' % blr.GetUriString(),
413
- all_versions=self.all_versions)
414
- else:
415
- # This BLR didn't come from a bucket listing. This case happens for
416
- # BLR's instantiated from a user-provided URI.
417
- blr_iterator = PluralityCheckableIterator(
418
- _UriOnlyBlrExpansionIterator(
419
- self, blr, all_versions=self.all_versions))
420
- if blr_iterator.is_empty() and not ContainsWildcard(uri):
421
- raise CommandException('No such object %s' % uri)
422
- for cur_blr in blr_iterator:
423
- num_expanded_blrs = num_expanded_blrs + 1
424
- if cur_blr.HasKey():
425
- # Object listing.
426
- (no, nb) = self._PrintInfoAboutBucketListingRef(
427
- cur_blr, listing_style)
428
- num_objs += no
429
- num_bytes += nb
430
- printed_one = True
431
- else:
432
- # Subdir listing. If we're at the top level of a bucket subdir
433
- # listing don't print the list here (corresponding to how UNIX ls
434
- # dir just prints its contents, not the name followed by its
435
- # contents).
436
- if (expanding_top_level and not uri.names_bucket()) or should_recurse:
437
- if cur_blr.GetUriString().endswith('//'):
438
- # Expand gs://bucket// into gs://bucket//* so we don't infinite
439
- # loop. This case happens when user has uploaded an object whose
440
- # name begins with a /.
441
- cur_blr = BucketListingRef(self.suri_builder.StorageUri(
442
- '%s*' % cur_blr.GetUriString()), None, None, cur_blr.headers)
443
- blrs_to_expand.append(cur_blr)
444
- # Don't include the subdir name in the output if we're doing a
445
- # recursive listing, as it will be printed as 'subdir:' when we get
446
- # to the prefix expansion, the next iteration of the main loop.
447
- else:
448
- if listing_style == ListingStyle.LONG:
449
- print '%-33s%s' % (
450
- '', cur_blr.GetUriString().encode('utf-8'))
451
- else:
452
- print cur_blr.GetUriString().encode('utf-8')
453
- expanding_top_level = False
454
- return (num_objs, num_bytes)
455
-
456
- # Command entry point.
457
- def RunCommand(self):
458
- got_nomatch_errors = False
459
- listing_style = ListingStyle.SHORT
460
- get_bucket_info = False
461
- self.recursion_requested = False
462
- self.all_versions = False
463
- if self.sub_opts:
464
- for o, a in self.sub_opts:
465
- if o == '-a':
466
- self.all_versions = True
467
- elif o == '-b':
468
- get_bucket_info = True
469
- elif o == '-l':
470
- listing_style = ListingStyle.LONG
471
- elif o == '-L':
472
- listing_style = ListingStyle.LONG_LONG
473
- elif o == '-p':
474
- self.proj_id_handler.SetProjectId(a)
475
- elif o == '-r' or o == '-R':
476
- self.recursion_requested = True
477
-
478
- if not self.args:
479
- # default to listing all gs buckets
480
- self.args = ['gs://']
481
-
482
- total_objs = 0
483
- total_bytes = 0
484
- for uri_str in self.args:
485
- uri = self.suri_builder.StorageUri(uri_str)
486
- self.proj_id_handler.FillInProjectHeaderIfNeeded('ls', uri, self.headers)
487
-
488
- if uri.names_provider():
489
- # Provider URI: use bucket wildcard to list buckets.
490
- for uri in self.WildcardIterator('%s://*' % uri.scheme).IterUris():
491
- (bucket_objs, bucket_bytes) = self._PrintBucketInfo(uri,
492
- listing_style)
493
- total_bytes += bucket_bytes
494
- total_objs += bucket_objs
495
- elif uri.names_bucket():
496
- # Bucket URI -> list the object(s) in that bucket.
497
- if get_bucket_info:
498
- # ls -b bucket listing request: List info about bucket(s).
499
- for uri in self.WildcardIterator(uri).IterUris():
500
- (bucket_objs, bucket_bytes) = self._PrintBucketInfo(uri,
501
- listing_style)
502
- total_bytes += bucket_bytes
503
- total_objs += bucket_objs
504
- else:
505
- # Not -b request: List objects in the bucket(s).
506
- (no, nb) = self._ExpandUriAndPrintInfo(uri, listing_style,
507
- should_recurse=self.recursion_requested)
508
- if no == 0 and ContainsWildcard(uri):
509
- got_nomatch_errors = True
510
- total_objs += no
511
- total_bytes += nb
512
- else:
513
- # URI names an object or object subdir -> list matching object(s) /
514
- # subdirs.
515
- (exp_objs, exp_bytes) = self._ExpandUriAndPrintInfo(uri, listing_style,
516
- should_recurse=self.recursion_requested)
517
- if exp_objs == 0 and ContainsWildcard(uri):
518
- got_nomatch_errors = True
519
- total_bytes += exp_bytes
520
- total_objs += exp_objs
521
-
522
- if total_objs and listing_style != ListingStyle.SHORT:
523
- print ('TOTAL: %d objects, %d bytes (%s)' %
524
- (total_objs, total_bytes, MakeHumanReadable(float(total_bytes))))
525
- if got_nomatch_errors:
526
- raise CommandException('One or more URIs matched no objects.')
527
-
528
- return 0
529
-
530
-
531
- class _UriOnlyBlrExpansionIterator:
532
- """
533
- Iterator that expands a BucketListingRef that contains only a URI (i.e.,
534
- didn't come from a bucket listing), yielding BucketListingRefs to which it
535
- expands. This case happens for BLR's instantiated from a user-provided URI.
536
-
537
- Note that we can't use NameExpansionIterator here because it produces an
538
- iteration over the full object names (e.g., expanding "gs://bucket" to
539
- "gs://bucket/dir/o1" and "gs://bucket/dir/o2"), while for the ls command
540
- we need also to see the intermediate directories (like "gs://bucket/dir").
541
- """
542
- def __init__(self, command_instance, blr, all_versions=False):
543
- self.command_instance = command_instance
544
- self.blr = blr
545
- self.all_versions=all_versions
546
-
547
- def __iter__(self):
548
- """
549
- Args:
550
- command_instance: calling instance of Command class.
551
- blr: BucketListingRef to expand.
552
-
553
- Yields:
554
- List of BucketListingRef to which it expands.
555
- """
556
- # Do a delimited wildcard expansion so we get any matches along with
557
- # whether they are keys or prefixes. That way if bucket contains a key
558
- # 'abcd' and another key 'abce/x.txt' the expansion will return two BLRs,
559
- # the first with HasKey()=True and the second with HasPrefix()=True.
560
- rstripped_versionless_uri_str = self.blr.GetRStrippedUriString()
561
- if ContainsWildcard(rstripped_versionless_uri_str):
562
- for blr in self.command_instance.WildcardIterator(
563
- rstripped_versionless_uri_str, all_versions=self.all_versions):
564
- yield blr
565
- return
566
- # Build a wildcard to expand so CloudWildcardIterator will not just treat it
567
- # as a key and yield the result without doing a bucket listing.
568
- for blr in self.command_instance.WildcardIterator(
569
- rstripped_versionless_uri_str + '*', all_versions=self.all_versions):
570
- # Find the originally specified BucketListingRef in the expanded list (if
571
- # present). Don't just use the expanded list, because it would also
572
- # include objects whose name prefix matches the blr name (because of the
573
- # wildcard match we did above). Note that there can be multiple matches,
574
- # for the case where there's both an object and a subdirectory with the
575
- # same name.
576
- if (blr.GetRStrippedUriString()
577
- == rstripped_versionless_uri_str):
578
- yield blr