rigid 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (364) hide show
  1. checksums.yaml +7 -0
  2. data/bin/rigid +4 -0
  3. data/rigid +16 -0
  4. data/vendor/PyYAML-3.12.dist-info/DESCRIPTION.rst +12 -0
  5. data/vendor/PyYAML-3.12.dist-info/INSTALLER +1 -0
  6. data/vendor/PyYAML-3.12.dist-info/METADATA +35 -0
  7. data/vendor/PyYAML-3.12.dist-info/RECORD +42 -0
  8. data/vendor/PyYAML-3.12.dist-info/WHEEL +5 -0
  9. data/vendor/PyYAML-3.12.dist-info/metadata.json +1 -0
  10. data/vendor/PyYAML-3.12.dist-info/top_level.txt +2 -0
  11. data/vendor/_yaml.so +0 -0
  12. data/vendor/click/__init__.py +98 -0
  13. data/vendor/click/__init__.pyc +0 -0
  14. data/vendor/click/_bashcomplete.py +83 -0
  15. data/vendor/click/_bashcomplete.pyc +0 -0
  16. data/vendor/click/_compat.py +642 -0
  17. data/vendor/click/_compat.pyc +0 -0
  18. data/vendor/click/_termui_impl.py +547 -0
  19. data/vendor/click/_termui_impl.pyc +0 -0
  20. data/vendor/click/_textwrap.py +38 -0
  21. data/vendor/click/_textwrap.pyc +0 -0
  22. data/vendor/click/_unicodefun.py +119 -0
  23. data/vendor/click/_unicodefun.pyc +0 -0
  24. data/vendor/click/_winconsole.py +273 -0
  25. data/vendor/click/_winconsole.pyc +0 -0
  26. data/vendor/click/core.py +1738 -0
  27. data/vendor/click/core.pyc +0 -0
  28. data/vendor/click/decorators.py +304 -0
  29. data/vendor/click/decorators.pyc +0 -0
  30. data/vendor/click/exceptions.py +201 -0
  31. data/vendor/click/exceptions.pyc +0 -0
  32. data/vendor/click/formatting.py +256 -0
  33. data/vendor/click/formatting.pyc +0 -0
  34. data/vendor/click/globals.py +48 -0
  35. data/vendor/click/globals.pyc +0 -0
  36. data/vendor/click/parser.py +426 -0
  37. data/vendor/click/parser.pyc +0 -0
  38. data/vendor/click/termui.py +539 -0
  39. data/vendor/click/termui.pyc +0 -0
  40. data/vendor/click/testing.py +322 -0
  41. data/vendor/click/testing.pyc +0 -0
  42. data/vendor/click/types.py +550 -0
  43. data/vendor/click/types.pyc +0 -0
  44. data/vendor/click/utils.py +415 -0
  45. data/vendor/click/utils.pyc +0 -0
  46. data/vendor/click-6.6.dist-info/DESCRIPTION.rst +3 -0
  47. data/vendor/click-6.6.dist-info/INSTALLER +1 -0
  48. data/vendor/click-6.6.dist-info/METADATA +16 -0
  49. data/vendor/click-6.6.dist-info/RECORD +41 -0
  50. data/vendor/click-6.6.dist-info/WHEEL +6 -0
  51. data/vendor/click-6.6.dist-info/metadata.json +1 -0
  52. data/vendor/click-6.6.dist-info/top_level.txt +1 -0
  53. data/vendor/easy_install.py +5 -0
  54. data/vendor/easy_install.pyc +0 -0
  55. data/vendor/pip-9.0.1.dist-info/DESCRIPTION.rst +39 -0
  56. data/vendor/pip-9.0.1.dist-info/INSTALLER +1 -0
  57. data/vendor/pip-9.0.1.dist-info/METADATA +69 -0
  58. data/vendor/pip-9.0.1.dist-info/RECORD +501 -0
  59. data/vendor/pip-9.0.1.dist-info/WHEEL +6 -0
  60. data/vendor/pip-9.0.1.dist-info/entry_points.txt +5 -0
  61. data/vendor/pip-9.0.1.dist-info/metadata.json +1 -0
  62. data/vendor/pip-9.0.1.dist-info/top_level.txt +1 -0
  63. data/vendor/pkg_resources/__init__.py +3051 -0
  64. data/vendor/pkg_resources/__init__.pyc +0 -0
  65. data/vendor/pkg_resources/_vendor/__init__.py +0 -0
  66. data/vendor/pkg_resources/_vendor/__init__.pyc +0 -0
  67. data/vendor/pkg_resources/_vendor/appdirs.py +552 -0
  68. data/vendor/pkg_resources/_vendor/appdirs.pyc +0 -0
  69. data/vendor/pkg_resources/_vendor/packaging/__about__.py +21 -0
  70. data/vendor/pkg_resources/_vendor/packaging/__about__.pyc +0 -0
  71. data/vendor/pkg_resources/_vendor/packaging/__init__.py +14 -0
  72. data/vendor/pkg_resources/_vendor/packaging/__init__.pyc +0 -0
  73. data/vendor/pkg_resources/_vendor/packaging/_compat.py +30 -0
  74. data/vendor/pkg_resources/_vendor/packaging/_compat.pyc +0 -0
  75. data/vendor/pkg_resources/_vendor/packaging/_structures.py +68 -0
  76. data/vendor/pkg_resources/_vendor/packaging/_structures.pyc +0 -0
  77. data/vendor/pkg_resources/_vendor/packaging/markers.py +287 -0
  78. data/vendor/pkg_resources/_vendor/packaging/markers.pyc +0 -0
  79. data/vendor/pkg_resources/_vendor/packaging/requirements.py +127 -0
  80. data/vendor/pkg_resources/_vendor/packaging/requirements.pyc +0 -0
  81. data/vendor/pkg_resources/_vendor/packaging/specifiers.py +774 -0
  82. data/vendor/pkg_resources/_vendor/packaging/specifiers.pyc +0 -0
  83. data/vendor/pkg_resources/_vendor/packaging/utils.py +14 -0
  84. data/vendor/pkg_resources/_vendor/packaging/utils.pyc +0 -0
  85. data/vendor/pkg_resources/_vendor/packaging/version.py +393 -0
  86. data/vendor/pkg_resources/_vendor/packaging/version.pyc +0 -0
  87. data/vendor/pkg_resources/_vendor/pyparsing.py +5696 -0
  88. data/vendor/pkg_resources/_vendor/pyparsing.pyc +0 -0
  89. data/vendor/pkg_resources/_vendor/six.py +868 -0
  90. data/vendor/pkg_resources/_vendor/six.pyc +0 -0
  91. data/vendor/pkg_resources/extern/__init__.py +73 -0
  92. data/vendor/pkg_resources/extern/__init__.pyc +0 -0
  93. data/vendor/requests/__init__.py +86 -0
  94. data/vendor/requests/__init__.pyc +0 -0
  95. data/vendor/requests/adapters.py +503 -0
  96. data/vendor/requests/adapters.pyc +0 -0
  97. data/vendor/requests/api.py +148 -0
  98. data/vendor/requests/api.pyc +0 -0
  99. data/vendor/requests/auth.py +252 -0
  100. data/vendor/requests/auth.pyc +0 -0
  101. data/vendor/requests/cacert.pem +5616 -0
  102. data/vendor/requests/certs.py +25 -0
  103. data/vendor/requests/certs.pyc +0 -0
  104. data/vendor/requests/compat.py +66 -0
  105. data/vendor/requests/compat.pyc +0 -0
  106. data/vendor/requests/cookies.py +540 -0
  107. data/vendor/requests/cookies.pyc +0 -0
  108. data/vendor/requests/exceptions.py +114 -0
  109. data/vendor/requests/exceptions.pyc +0 -0
  110. data/vendor/requests/hooks.py +34 -0
  111. data/vendor/requests/hooks.pyc +0 -0
  112. data/vendor/requests/models.py +873 -0
  113. data/vendor/requests/models.pyc +0 -0
  114. data/vendor/requests/packages/__init__.py +36 -0
  115. data/vendor/requests/packages/__init__.pyc +0 -0
  116. data/vendor/requests/packages/chardet/__init__.py +32 -0
  117. data/vendor/requests/packages/chardet/__init__.pyc +0 -0
  118. data/vendor/requests/packages/chardet/big5freq.py +925 -0
  119. data/vendor/requests/packages/chardet/big5freq.pyc +0 -0
  120. data/vendor/requests/packages/chardet/big5prober.py +42 -0
  121. data/vendor/requests/packages/chardet/big5prober.pyc +0 -0
  122. data/vendor/requests/packages/chardet/chardetect.py +80 -0
  123. data/vendor/requests/packages/chardet/chardetect.pyc +0 -0
  124. data/vendor/requests/packages/chardet/chardistribution.py +231 -0
  125. data/vendor/requests/packages/chardet/chardistribution.pyc +0 -0
  126. data/vendor/requests/packages/chardet/charsetgroupprober.py +106 -0
  127. data/vendor/requests/packages/chardet/charsetgroupprober.pyc +0 -0
  128. data/vendor/requests/packages/chardet/charsetprober.py +62 -0
  129. data/vendor/requests/packages/chardet/charsetprober.pyc +0 -0
  130. data/vendor/requests/packages/chardet/codingstatemachine.py +61 -0
  131. data/vendor/requests/packages/chardet/codingstatemachine.pyc +0 -0
  132. data/vendor/requests/packages/chardet/compat.py +34 -0
  133. data/vendor/requests/packages/chardet/compat.pyc +0 -0
  134. data/vendor/requests/packages/chardet/constants.py +39 -0
  135. data/vendor/requests/packages/chardet/constants.pyc +0 -0
  136. data/vendor/requests/packages/chardet/cp949prober.py +44 -0
  137. data/vendor/requests/packages/chardet/cp949prober.pyc +0 -0
  138. data/vendor/requests/packages/chardet/escprober.py +86 -0
  139. data/vendor/requests/packages/chardet/escprober.pyc +0 -0
  140. data/vendor/requests/packages/chardet/escsm.py +242 -0
  141. data/vendor/requests/packages/chardet/escsm.pyc +0 -0
  142. data/vendor/requests/packages/chardet/eucjpprober.py +90 -0
  143. data/vendor/requests/packages/chardet/eucjpprober.pyc +0 -0
  144. data/vendor/requests/packages/chardet/euckrfreq.py +596 -0
  145. data/vendor/requests/packages/chardet/euckrfreq.pyc +0 -0
  146. data/vendor/requests/packages/chardet/euckrprober.py +42 -0
  147. data/vendor/requests/packages/chardet/euckrprober.pyc +0 -0
  148. data/vendor/requests/packages/chardet/euctwfreq.py +428 -0
  149. data/vendor/requests/packages/chardet/euctwfreq.pyc +0 -0
  150. data/vendor/requests/packages/chardet/euctwprober.py +41 -0
  151. data/vendor/requests/packages/chardet/euctwprober.pyc +0 -0
  152. data/vendor/requests/packages/chardet/gb2312freq.py +472 -0
  153. data/vendor/requests/packages/chardet/gb2312freq.pyc +0 -0
  154. data/vendor/requests/packages/chardet/gb2312prober.py +41 -0
  155. data/vendor/requests/packages/chardet/gb2312prober.pyc +0 -0
  156. data/vendor/requests/packages/chardet/hebrewprober.py +283 -0
  157. data/vendor/requests/packages/chardet/hebrewprober.pyc +0 -0
  158. data/vendor/requests/packages/chardet/jisfreq.py +569 -0
  159. data/vendor/requests/packages/chardet/jisfreq.pyc +0 -0
  160. data/vendor/requests/packages/chardet/jpcntx.py +227 -0
  161. data/vendor/requests/packages/chardet/jpcntx.pyc +0 -0
  162. data/vendor/requests/packages/chardet/langbulgarianmodel.py +229 -0
  163. data/vendor/requests/packages/chardet/langbulgarianmodel.pyc +0 -0
  164. data/vendor/requests/packages/chardet/langcyrillicmodel.py +329 -0
  165. data/vendor/requests/packages/chardet/langcyrillicmodel.pyc +0 -0
  166. data/vendor/requests/packages/chardet/langgreekmodel.py +225 -0
  167. data/vendor/requests/packages/chardet/langgreekmodel.pyc +0 -0
  168. data/vendor/requests/packages/chardet/langhebrewmodel.py +201 -0
  169. data/vendor/requests/packages/chardet/langhebrewmodel.pyc +0 -0
  170. data/vendor/requests/packages/chardet/langhungarianmodel.py +225 -0
  171. data/vendor/requests/packages/chardet/langhungarianmodel.pyc +0 -0
  172. data/vendor/requests/packages/chardet/langthaimodel.py +200 -0
  173. data/vendor/requests/packages/chardet/langthaimodel.pyc +0 -0
  174. data/vendor/requests/packages/chardet/latin1prober.py +139 -0
  175. data/vendor/requests/packages/chardet/latin1prober.pyc +0 -0
  176. data/vendor/requests/packages/chardet/mbcharsetprober.py +86 -0
  177. data/vendor/requests/packages/chardet/mbcharsetprober.pyc +0 -0
  178. data/vendor/requests/packages/chardet/mbcsgroupprober.py +54 -0
  179. data/vendor/requests/packages/chardet/mbcsgroupprober.pyc +0 -0
  180. data/vendor/requests/packages/chardet/mbcssm.py +572 -0
  181. data/vendor/requests/packages/chardet/mbcssm.pyc +0 -0
  182. data/vendor/requests/packages/chardet/sbcharsetprober.py +120 -0
  183. data/vendor/requests/packages/chardet/sbcharsetprober.pyc +0 -0
  184. data/vendor/requests/packages/chardet/sbcsgroupprober.py +69 -0
  185. data/vendor/requests/packages/chardet/sbcsgroupprober.pyc +0 -0
  186. data/vendor/requests/packages/chardet/sjisprober.py +91 -0
  187. data/vendor/requests/packages/chardet/sjisprober.pyc +0 -0
  188. data/vendor/requests/packages/chardet/universaldetector.py +170 -0
  189. data/vendor/requests/packages/chardet/universaldetector.pyc +0 -0
  190. data/vendor/requests/packages/chardet/utf8prober.py +76 -0
  191. data/vendor/requests/packages/chardet/utf8prober.pyc +0 -0
  192. data/vendor/requests/packages/urllib3/__init__.py +96 -0
  193. data/vendor/requests/packages/urllib3/__init__.pyc +0 -0
  194. data/vendor/requests/packages/urllib3/_collections.py +324 -0
  195. data/vendor/requests/packages/urllib3/_collections.pyc +0 -0
  196. data/vendor/requests/packages/urllib3/connection.py +330 -0
  197. data/vendor/requests/packages/urllib3/connection.pyc +0 -0
  198. data/vendor/requests/packages/urllib3/connectionpool.py +866 -0
  199. data/vendor/requests/packages/urllib3/connectionpool.pyc +0 -0
  200. data/vendor/requests/packages/urllib3/contrib/__init__.py +0 -0
  201. data/vendor/requests/packages/urllib3/contrib/__init__.pyc +0 -0
  202. data/vendor/requests/packages/urllib3/contrib/appengine.py +231 -0
  203. data/vendor/requests/packages/urllib3/contrib/appengine.pyc +0 -0
  204. data/vendor/requests/packages/urllib3/contrib/ntlmpool.py +115 -0
  205. data/vendor/requests/packages/urllib3/contrib/ntlmpool.pyc +0 -0
  206. data/vendor/requests/packages/urllib3/contrib/pyopenssl.py +358 -0
  207. data/vendor/requests/packages/urllib3/contrib/pyopenssl.pyc +0 -0
  208. data/vendor/requests/packages/urllib3/contrib/socks.py +172 -0
  209. data/vendor/requests/packages/urllib3/contrib/socks.pyc +0 -0
  210. data/vendor/requests/packages/urllib3/exceptions.py +209 -0
  211. data/vendor/requests/packages/urllib3/exceptions.pyc +0 -0
  212. data/vendor/requests/packages/urllib3/fields.py +178 -0
  213. data/vendor/requests/packages/urllib3/fields.pyc +0 -0
  214. data/vendor/requests/packages/urllib3/filepost.py +94 -0
  215. data/vendor/requests/packages/urllib3/filepost.pyc +0 -0
  216. data/vendor/requests/packages/urllib3/packages/__init__.py +5 -0
  217. data/vendor/requests/packages/urllib3/packages/__init__.pyc +0 -0
  218. data/vendor/requests/packages/urllib3/packages/ordered_dict.py +259 -0
  219. data/vendor/requests/packages/urllib3/packages/ordered_dict.pyc +0 -0
  220. data/vendor/requests/packages/urllib3/packages/six.py +868 -0
  221. data/vendor/requests/packages/urllib3/packages/six.pyc +0 -0
  222. data/vendor/requests/packages/urllib3/packages/ssl_match_hostname/__init__.py +13 -0
  223. data/vendor/requests/packages/urllib3/packages/ssl_match_hostname/__init__.pyc +0 -0
  224. data/vendor/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.py +105 -0
  225. data/vendor/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.pyc +0 -0
  226. data/vendor/requests/packages/urllib3/poolmanager.py +367 -0
  227. data/vendor/requests/packages/urllib3/poolmanager.pyc +0 -0
  228. data/vendor/requests/packages/urllib3/request.py +151 -0
  229. data/vendor/requests/packages/urllib3/request.pyc +0 -0
  230. data/vendor/requests/packages/urllib3/response.py +530 -0
  231. data/vendor/requests/packages/urllib3/response.pyc +0 -0
  232. data/vendor/requests/packages/urllib3/util/__init__.py +46 -0
  233. data/vendor/requests/packages/urllib3/util/__init__.pyc +0 -0
  234. data/vendor/requests/packages/urllib3/util/connection.py +144 -0
  235. data/vendor/requests/packages/urllib3/util/connection.pyc +0 -0
  236. data/vendor/requests/packages/urllib3/util/request.py +72 -0
  237. data/vendor/requests/packages/urllib3/util/request.pyc +0 -0
  238. data/vendor/requests/packages/urllib3/util/response.py +74 -0
  239. data/vendor/requests/packages/urllib3/util/response.pyc +0 -0
  240. data/vendor/requests/packages/urllib3/util/retry.py +300 -0
  241. data/vendor/requests/packages/urllib3/util/retry.pyc +0 -0
  242. data/vendor/requests/packages/urllib3/util/ssl_.py +320 -0
  243. data/vendor/requests/packages/urllib3/util/ssl_.pyc +0 -0
  244. data/vendor/requests/packages/urllib3/util/timeout.py +242 -0
  245. data/vendor/requests/packages/urllib3/util/timeout.pyc +0 -0
  246. data/vendor/requests/packages/urllib3/util/url.py +217 -0
  247. data/vendor/requests/packages/urllib3/util/url.pyc +0 -0
  248. data/vendor/requests/sessions.py +712 -0
  249. data/vendor/requests/sessions.pyc +0 -0
  250. data/vendor/requests/status_codes.py +91 -0
  251. data/vendor/requests/status_codes.pyc +0 -0
  252. data/vendor/requests/structures.py +105 -0
  253. data/vendor/requests/structures.pyc +0 -0
  254. data/vendor/requests/utils.py +817 -0
  255. data/vendor/requests/utils.pyc +0 -0
  256. data/vendor/requests-2.11.1.dist-info/DESCRIPTION.rst +1294 -0
  257. data/vendor/requests-2.11.1.dist-info/INSTALLER +1 -0
  258. data/vendor/requests-2.11.1.dist-info/METADATA +1323 -0
  259. data/vendor/requests-2.11.1.dist-info/RECORD +170 -0
  260. data/vendor/requests-2.11.1.dist-info/WHEEL +6 -0
  261. data/vendor/requests-2.11.1.dist-info/metadata.json +1 -0
  262. data/vendor/requests-2.11.1.dist-info/top_level.txt +1 -0
  263. data/vendor/rigid/__init__.py +1 -0
  264. data/vendor/rigid/__init__.pyc +0 -0
  265. data/vendor/rigid/api.py +129 -0
  266. data/vendor/rigid/api.pyc +0 -0
  267. data/vendor/rigid/commands/__init__.py +260 -0
  268. data/vendor/rigid/commands/__init__.pyc +0 -0
  269. data/vendor/rigid/commands/deploy.py +0 -0
  270. data/vendor/rigid/commands/deploy.pyc +0 -0
  271. data/vendor/rigid/deploy.py +70 -0
  272. data/vendor/rigid/deploy.pyc +0 -0
  273. data/vendor/rigid/file_scanner.py +63 -0
  274. data/vendor/rigid/file_scanner.pyc +0 -0
  275. data/vendor/rigid/utils.py +17 -0
  276. data/vendor/rigid/utils.pyc +0 -0
  277. data/vendor/rigid-0.2.0.dist-info/DESCRIPTION.rst +3 -0
  278. data/vendor/rigid-0.2.0.dist-info/INSTALLER +1 -0
  279. data/vendor/rigid-0.2.0.dist-info/METADATA +23 -0
  280. data/vendor/rigid-0.2.0.dist-info/RECORD +49 -0
  281. data/vendor/rigid-0.2.0.dist-info/WHEEL +5 -0
  282. data/vendor/rigid-0.2.0.dist-info/entry_points.txt +3 -0
  283. data/vendor/rigid-0.2.0.dist-info/metadata.json +1 -0
  284. data/vendor/rigid-0.2.0.dist-info/top_level.txt +2 -0
  285. data/vendor/setuptools-28.8.0.dist-info/DESCRIPTION.rst +243 -0
  286. data/vendor/setuptools-28.8.0.dist-info/INSTALLER +1 -0
  287. data/vendor/setuptools-28.8.0.dist-info/METADATA +272 -0
  288. data/vendor/setuptools-28.8.0.dist-info/RECORD +143 -0
  289. data/vendor/setuptools-28.8.0.dist-info/WHEEL +6 -0
  290. data/vendor/setuptools-28.8.0.dist-info/dependency_links.txt +2 -0
  291. data/vendor/setuptools-28.8.0.dist-info/entry_points.txt +63 -0
  292. data/vendor/setuptools-28.8.0.dist-info/metadata.json +1 -0
  293. data/vendor/setuptools-28.8.0.dist-info/top_level.txt +3 -0
  294. data/vendor/setuptools-28.8.0.dist-info/zip-safe +1 -0
  295. data/vendor/tests/__init__.py +0 -0
  296. data/vendor/tests/__init__.pyc +0 -0
  297. data/vendor/tests/integration/__init__.py +0 -0
  298. data/vendor/tests/integration/__init__.pyc +0 -0
  299. data/vendor/tests/integration/test_app.py +63 -0
  300. data/vendor/tests/integration/test_app.pyc +0 -0
  301. data/vendor/tests/integration/test_apps.py +27 -0
  302. data/vendor/tests/integration/test_apps.pyc +0 -0
  303. data/vendor/tests/integration/test_deploy.py +128 -0
  304. data/vendor/tests/integration/test_deploy.pyc +0 -0
  305. data/vendor/tests/integration/test_domains.py +35 -0
  306. data/vendor/tests/integration/test_domains.pyc +0 -0
  307. data/vendor/tests/integration/test_login.py +37 -0
  308. data/vendor/tests/integration/test_login.pyc +0 -0
  309. data/vendor/tests/integration/test_promote.py +24 -0
  310. data/vendor/tests/integration/test_promote.pyc +0 -0
  311. data/vendor/tests/integration/test_token.py +33 -0
  312. data/vendor/tests/integration/test_token.pyc +0 -0
  313. data/vendor/tests/integration/test_whoami.py +24 -0
  314. data/vendor/tests/integration/test_whoami.pyc +0 -0
  315. data/vendor/tests/test_deploy.py +33 -0
  316. data/vendor/tests/test_deploy.pyc +0 -0
  317. data/vendor/tests/test_file_scanner.py +89 -0
  318. data/vendor/tests/test_file_scanner.pyc +0 -0
  319. data/vendor/tests/utils.py +78 -0
  320. data/vendor/tests/utils.pyc +0 -0
  321. data/vendor/wheel-0.30.0a0.dist-info/DESCRIPTION.rst +325 -0
  322. data/vendor/wheel-0.30.0a0.dist-info/INSTALLER +1 -0
  323. data/vendor/wheel-0.30.0a0.dist-info/LICENSE.txt +22 -0
  324. data/vendor/wheel-0.30.0a0.dist-info/METADATA +357 -0
  325. data/vendor/wheel-0.30.0a0.dist-info/RECORD +86 -0
  326. data/vendor/wheel-0.30.0a0.dist-info/WHEEL +6 -0
  327. data/vendor/wheel-0.30.0a0.dist-info/entry_points.txt +6 -0
  328. data/vendor/wheel-0.30.0a0.dist-info/metadata.json +1 -0
  329. data/vendor/wheel-0.30.0a0.dist-info/top_level.txt +1 -0
  330. data/vendor/yaml/__init__.py +315 -0
  331. data/vendor/yaml/__init__.pyc +0 -0
  332. data/vendor/yaml/composer.py +139 -0
  333. data/vendor/yaml/composer.pyc +0 -0
  334. data/vendor/yaml/constructor.py +675 -0
  335. data/vendor/yaml/constructor.pyc +0 -0
  336. data/vendor/yaml/cyaml.py +85 -0
  337. data/vendor/yaml/cyaml.pyc +0 -0
  338. data/vendor/yaml/dumper.py +62 -0
  339. data/vendor/yaml/dumper.pyc +0 -0
  340. data/vendor/yaml/emitter.py +1140 -0
  341. data/vendor/yaml/emitter.pyc +0 -0
  342. data/vendor/yaml/error.py +75 -0
  343. data/vendor/yaml/error.pyc +0 -0
  344. data/vendor/yaml/events.py +86 -0
  345. data/vendor/yaml/events.pyc +0 -0
  346. data/vendor/yaml/loader.py +40 -0
  347. data/vendor/yaml/loader.pyc +0 -0
  348. data/vendor/yaml/nodes.py +49 -0
  349. data/vendor/yaml/nodes.pyc +0 -0
  350. data/vendor/yaml/parser.py +589 -0
  351. data/vendor/yaml/parser.pyc +0 -0
  352. data/vendor/yaml/reader.py +190 -0
  353. data/vendor/yaml/reader.pyc +0 -0
  354. data/vendor/yaml/representer.py +486 -0
  355. data/vendor/yaml/representer.pyc +0 -0
  356. data/vendor/yaml/resolver.py +227 -0
  357. data/vendor/yaml/resolver.pyc +0 -0
  358. data/vendor/yaml/scanner.py +1453 -0
  359. data/vendor/yaml/scanner.pyc +0 -0
  360. data/vendor/yaml/serializer.py +111 -0
  361. data/vendor/yaml/serializer.pyc +0 -0
  362. data/vendor/yaml/tokens.py +104 -0
  363. data/vendor/yaml/tokens.pyc +0 -0
  364. metadata +407 -0
@@ -0,0 +1,170 @@
1
+ requests/__init__.py,sha256=Ux4f4IDgg6CeBgQthcFexd1CBlFxz5fegPiRLjynEEw,2197
2
+ requests/adapters.py,sha256=DJdgax91PyS2s6_oZPELbuLWNlM2xGguNu62sqcOUik,19740
3
+ requests/api.py,sha256=PgminOpD8hLLKLNs0RWLKr1HpNc4Qxr_6uen8q2c9CI,5794
4
+ requests/auth.py,sha256=eBLtJlcTZxRG7xKXCvGQBLO9a-PxFgMf2qTUbtZwMJM,8175
5
+ requests/cacert.pem,sha256=5xzWFRrSP0ZsXiW6emg8UQ_w497lT4qWCv32OO8R1ME,344712
6
+ requests/certs.py,sha256=Aa-oStu9f2lVi8VM9Aw1xaAtTIz7bhu5CGKNPEW1waM,625
7
+ requests/compat.py,sha256=hASxD1xa4BrmTqLuUTlWhb5n21VAueqRBk9rJ6ZHarQ,1568
8
+ requests/cookies.py,sha256=awMI0hm3SKheMEDTqO8AIadc2XmnCGKPCTNw_4hlM3Q,18208
9
+ requests/exceptions.py,sha256=x-MGvDASYKSstuCNYTA5IT_EAcxTp5knE3WPMrgkrlI,2860
10
+ requests/hooks.py,sha256=HXAHoC1FNTFRZX6-lNdvPM7Tst4kvGwYTN-AOKRxoRU,767
11
+ requests/models.py,sha256=YHuL2khGDFxeWc-NMJIcfFqvYJ0dKs1mXfj1Fuff1J8,30532
12
+ requests/sessions.py,sha256=H7HpKRLKeu1MSH5W1-PI2GMCFLN4bz5i3OFqjjgzE5k,25609
13
+ requests/status_codes.py,sha256=uwVHcMPkHV3FElDLlnDTH3KULZIAGxaovbBxrjWm8N0,3316
14
+ requests/structures.py,sha256=yexCvWbX40M6E8mLQOpAGZZ-ZoAnyaT2dni-Bp-b42g,3012
15
+ requests/utils.py,sha256=dc8LZv6SJWD_ABHa_iuldmSt4eAlv2BNYGPFI2CRSaQ,24162
16
+ requests/packages/__init__.py,sha256=CVheqNRcXIkAi5037RhxeqbAqd0QhrK1o9R9kS2xvuI,1384
17
+ requests/packages/chardet/__init__.py,sha256=XuTKCYOR7JwsoHxqZTYH86LVyMDbDI3s1s0W_qoGEBM,1295
18
+ requests/packages/chardet/big5freq.py,sha256=D8oTdz-GM7Jg8TsaWJDm65vM_OLHC3xub6qUJ3rOgsQ,82594
19
+ requests/packages/chardet/big5prober.py,sha256=XX96C--6WKYW36mL-z7pJSAtc169Z8ZImByCP4pEN9A,1684
20
+ requests/packages/chardet/chardetect.py,sha256=f4299UZG6uWd3i3r_N0OdrFj2sA9JFI54PAmDLAFmWA,2504
21
+ requests/packages/chardet/chardistribution.py,sha256=cUARQFr1oTLXeJCDQrDRkUP778AvSMzhSCnG8VLCV58,9226
22
+ requests/packages/chardet/charsetgroupprober.py,sha256=0lKk7VE516fgMw119tNefFqLOxKfIE9WfdkpIT69OKU,3791
23
+ requests/packages/chardet/charsetprober.py,sha256=Z48o2KiOj23FNqYH8FqzhH5m1qdm3rI8DcTm2Yqtklg,1902
24
+ requests/packages/chardet/codingstatemachine.py,sha256=E85rYhHVMw9xDEJVgiQhp0OnLGr6i2r8_7QOWMKTH08,2318
25
+ requests/packages/chardet/compat.py,sha256=5mm6yrHwef1JEG5OxkPJlSq5lkjLVpEGh3iPgFBkpkM,1157
26
+ requests/packages/chardet/constants.py,sha256=-UnY8U7EP7z9fTyd09yq35BEkSFEAUAiv9ohd1DW1s4,1335
27
+ requests/packages/chardet/cp949prober.py,sha256=FMvdLyB7fejPXRsTbca7LK1P3RUvvssmjUNyaEfz8zY,1782
28
+ requests/packages/chardet/escprober.py,sha256=q5TcQKeVq31WxrW7Sv8yjpZkjEoaHO8S92EJZ9hodys,3187
29
+ requests/packages/chardet/escsm.py,sha256=7iljEKN8lXTh8JFXPUSwlibMno6R6ksq4evLxbkzfro,7839
30
+ requests/packages/chardet/eucjpprober.py,sha256=5IpfSEjAb7h3hcGMd6dkU80O900C2N6xku28rdYFKuc,3678
31
+ requests/packages/chardet/euckrfreq.py,sha256=T5saK5mImySG5ygQPtsp6o2uKulouCwYm2ElOyFkJqU,45978
32
+ requests/packages/chardet/euckrprober.py,sha256=Wo7dnZ5Erw_nB4H-m5alMiOxOuJUmGHlwCSaGqExDZA,1675
33
+ requests/packages/chardet/euctwfreq.py,sha256=G_I0BW9i1w0ONeeUwIYqV7_U09buIHdqh-wNHVaql7I,34872
34
+ requests/packages/chardet/euctwprober.py,sha256=upS2P6GuT5ujOxXYw-RJLcT7A4PTuo27KGUKU4UZpIQ,1676
35
+ requests/packages/chardet/gb2312freq.py,sha256=M2gFdo_qQ_BslStEchrPW5CrPEZEacC0uyDLw4ok-kY,36011
36
+ requests/packages/chardet/gb2312prober.py,sha256=VWnjoRa83Y6V6oczMaxyUr0uy48iCnC2nzk9zfEIRHc,1681
37
+ requests/packages/chardet/hebrewprober.py,sha256=8pdoUfsVXf_L4BnJde_BewS6H2yInV5688eu0nFhLHY,13359
38
+ requests/packages/chardet/jisfreq.py,sha256=ZcL4R5ekHHbP2KCYGakVMBsiKqZZZAABzhwi-uRkOps,47315
39
+ requests/packages/chardet/jpcntx.py,sha256=yftmp0QaF6RJO5SJs8I7LU5AF4rwP23ebeCQL4BM1OY,19348
40
+ requests/packages/chardet/langbulgarianmodel.py,sha256=ZyPsA796MSVhYdfWhMCgKWckupAKAnKqWcE3Cl3ej6o,12784
41
+ requests/packages/chardet/langcyrillicmodel.py,sha256=fkcd5OvogUp-GrNDWAZPgkYsSRCD2omotAEvqjlmLKE,17725
42
+ requests/packages/chardet/langgreekmodel.py,sha256=QHMy31CH_ot67UCtmurCEKqKx2WwoaKrw2YCYYBK2Lw,12628
43
+ requests/packages/chardet/langhebrewmodel.py,sha256=4ASl5vzKJPng4H278VHKtRYC03TpQpenlHTcsmZH1rE,11318
44
+ requests/packages/chardet/langhungarianmodel.py,sha256=SXwuUzh49_cBeMXhshRHdrhlkz0T8_pZWV_pdqBKNFk,12536
45
+ requests/packages/chardet/langthaimodel.py,sha256=-k7djh3dGKngAGnt3WfuoJN7acDcWcmHAPojhaUd7q4,11275
46
+ requests/packages/chardet/latin1prober.py,sha256=238JHOxH8aRudJY2NmeSv5s7i0Qe3GuklIU3HlYybvg,5232
47
+ requests/packages/chardet/mbcharsetprober.py,sha256=9rOCjDVsmSMp6e7q2syqak22j7lrbUZhJhMee2gbVL0,3268
48
+ requests/packages/chardet/mbcsgroupprober.py,sha256=SHRzNPLpDXfMJLA8phCHVU0WgqbgDCNxDQMolGX_7yk,1967
49
+ requests/packages/chardet/mbcssm.py,sha256=IKwJXyxu34n6NojmxVxC60MLFtJKm-hIfxaFEnb3uBA,19590
50
+ requests/packages/chardet/sbcharsetprober.py,sha256=Xq0lODqJnDgxglBiQI4BqTFiPbn63-0a5XNA5-hVu7U,4793
51
+ requests/packages/chardet/sbcsgroupprober.py,sha256=8hLyH8RAG-aohBo7o_KciWVgRo42ZE_zEtuNG1JMRYI,3291
52
+ requests/packages/chardet/sjisprober.py,sha256=UYOmiMDzttYIkSDoOB08UEagivJpUXz4tuWiWzTiOr8,3764
53
+ requests/packages/chardet/universaldetector.py,sha256=h-E2x6XSCzlNjycYWG0Fe4Cf1SGdaIzUNu2HCphpMZA,6840
54
+ requests/packages/chardet/utf8prober.py,sha256=7tdNZGrJY7jZUBD483GGMkiP0Tx8Fp-cGvWHoAsilHg,2652
55
+ requests/packages/urllib3/__init__.py,sha256=EF9pbHgMzqQek2Y6EZ82A8B6wETFeW7bK0K-HoZ3Ffo,2852
56
+ requests/packages/urllib3/_collections.py,sha256=RP-cHyTx4AgYwvoETK8q1IVRbWFJnE0VV692ZHSbU68,10553
57
+ requests/packages/urllib3/connection.py,sha256=QCmkelYgtbc06DfJtgs22na78kRTLCTbLb-OSWLbt-A,11617
58
+ requests/packages/urllib3/connectionpool.py,sha256=fls19n1Y4jnwOBsZz_9F01i08xH2gZXEIyyDmWd-mKU,33591
59
+ requests/packages/urllib3/exceptions.py,sha256=zGjhZCR1wefEnCN5b7WouQ3UhXesJ2bRKYIeWusaFJs,5599
60
+ requests/packages/urllib3/fields.py,sha256=WUMvCLvnw7XemBq6AmCgNPJwyIJL_vWaMHaA2FLlscM,5931
61
+ requests/packages/urllib3/filepost.py,sha256=NvLlFsdt8ih_Q4S2ekQF3CJG0nOXs32YI-G04_AdT2g,2320
62
+ requests/packages/urllib3/poolmanager.py,sha256=9Uf0fUk0aR_s1auXgwceoN2gbaIQ08lrum_cGEA9-_U,13092
63
+ requests/packages/urllib3/request.py,sha256=jET7OvA3FSjxABBRGhCyMdPvM9XuJA6df9gRhkJiJiY,5988
64
+ requests/packages/urllib3/response.py,sha256=wxJSV_6pyh6Cgx7XFVGpNhpZCbh4eL7lCSFaU4ixXXc,18615
65
+ requests/packages/urllib3/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
66
+ requests/packages/urllib3/contrib/appengine.py,sha256=NdN_xOgDLMadUPe_dN3wdan_DH9-fxVNqFgq19tbqQs,7937
67
+ requests/packages/urllib3/contrib/ntlmpool.py,sha256=r-vMDMXAGbix9a7-IhbKVTATmAst-5g4hKYOLf8Kd5M,4531
68
+ requests/packages/urllib3/contrib/pyopenssl.py,sha256=JsdAh0gL4XvQzhOEBRoFtJN91qLf1LFIDEFZs95445I,11778
69
+ requests/packages/urllib3/contrib/socks.py,sha256=uPHtE6R8uyUbD9R8l2wO80c87WDGZ9rou3kNOwV74eA,5668
70
+ requests/packages/urllib3/packages/__init__.py,sha256=nlChrGzkjCkmhCX9HrF_qHPUgosfsPQkVIJxiiLhk9g,109
71
+ requests/packages/urllib3/packages/ordered_dict.py,sha256=VQaPONfhVMsb8B63Xg7ZOydJqIE_jzeMhVN3Pec6ogw,8935
72
+ requests/packages/urllib3/packages/six.py,sha256=A6hdJZVjI3t_geebZ9BzUvwRrIXo0lfwzQlM2LcKyas,30098
73
+ requests/packages/urllib3/packages/ssl_match_hostname/__init__.py,sha256=cOWMIn1orgJoA35p6pSzO_-Dc6iOX9Dhl6D2sL9b_2o,460
74
+ requests/packages/urllib3/packages/ssl_match_hostname/_implementation.py,sha256=fK28k37hL7-D79v9iM2fHgNK9Q1Pw0M7qVRL4rkfFjQ,3778
75
+ requests/packages/urllib3/util/__init__.py,sha256=n2QE9_0Bb6u8tf7LUc4qKe8V-Hz9G8lEOc9j_30Q8d0,892
76
+ requests/packages/urllib3/util/connection.py,sha256=7B5Mmepg5Xd399VKE__VHxD2ObapYFrB3mWJ_EnIebs,4744
77
+ requests/packages/urllib3/util/request.py,sha256=ZMDewRK-mjlK72szGIIjzYnLIn-zPP0WgJUMjKeZ6Tg,2128
78
+ requests/packages/urllib3/util/response.py,sha256=1UFd5TIp9MyBp4xgnZoyQZscZVPPr0tWRaXNR5w_vds,2165
79
+ requests/packages/urllib3/util/retry.py,sha256=5eA3GHR_L14qz66NU6gr-v5VbKYsvdEqOvCcsx1oLKo,10664
80
+ requests/packages/urllib3/util/ssl_.py,sha256=7xR_jvQLTQA1U006wJ1bl2KuLGnD1qQvUcFM2uysedw,11622
81
+ requests/packages/urllib3/util/timeout.py,sha256=ioAIYptFyBG7eU_r8_ZmO45hpj1dJE6WCvrGR9dNFjs,9596
82
+ requests/packages/urllib3/util/url.py,sha256=EcX4ZfmgKWcqM4sY9FlC-yN4y_snuURPV0TpUPHNjnc,5879
83
+ requests-2.11.1.dist-info/DESCRIPTION.rst,sha256=izJPhJJj7bDM4YCqiCwWSn8gZeAbpyiwbSOPpZOPN_I,38378
84
+ requests-2.11.1.dist-info/METADATA,sha256=IE22qy-BM0SnsaOanuGMKZQ58XRWkLkkGiAlYiglzD4,39530
85
+ requests-2.11.1.dist-info/RECORD,,
86
+ requests-2.11.1.dist-info/WHEEL,sha256=GrqQvamwgBV4nLoJe0vhYRSWzWsx7xjlt74FT0SWYfE,110
87
+ requests-2.11.1.dist-info/metadata.json,sha256=a2O5XY2AiRqLEb16gYs0-rwVSQnUJl64yWUozD9CEaI,1281
88
+ requests-2.11.1.dist-info/top_level.txt,sha256=fMSVmHfb5rbGOo6xv-O_tUX6j-WyixssE-SnwcDRxNQ,9
89
+ requests-2.11.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
90
+ requests/packages/chardet/sbcsgroupprober.pyc,,
91
+ requests/status_codes.pyc,,
92
+ requests/packages/chardet/mbcsgroupprober.pyc,,
93
+ requests/certs.pyc,,
94
+ requests/packages/chardet/langhebrewmodel.pyc,,
95
+ requests/packages/chardet/euctwfreq.pyc,,
96
+ requests/packages/urllib3/contrib/pyopenssl.pyc,,
97
+ requests/packages/urllib3/util/__init__.pyc,,
98
+ requests/packages/chardet/latin1prober.pyc,,
99
+ requests/api.pyc,,
100
+ requests/packages/chardet/big5prober.pyc,,
101
+ requests/packages/urllib3/contrib/__init__.pyc,,
102
+ requests/packages/chardet/constants.pyc,,
103
+ requests/packages/chardet/eucjpprober.pyc,,
104
+ requests/packages/chardet/euckrfreq.pyc,,
105
+ requests/packages/chardet/codingstatemachine.pyc,,
106
+ requests/compat.pyc,,
107
+ requests/packages/urllib3/packages/six.pyc,,
108
+ requests/structures.pyc,,
109
+ requests/sessions.pyc,,
110
+ requests/models.pyc,,
111
+ requests/packages/urllib3/packages/ssl_match_hostname/_implementation.pyc,,
112
+ requests/packages/chardet/universaldetector.pyc,,
113
+ requests/packages/chardet/escsm.pyc,,
114
+ requests/packages/chardet/jpcntx.pyc,,
115
+ requests/packages/urllib3/util/retry.pyc,,
116
+ requests/packages/chardet/chardetect.pyc,,
117
+ requests/packages/chardet/gb2312freq.pyc,,
118
+ requests/packages/urllib3/util/ssl_.pyc,,
119
+ requests/packages/urllib3/util/request.pyc,,
120
+ requests/packages/urllib3/poolmanager.pyc,,
121
+ requests/packages/chardet/jisfreq.pyc,,
122
+ requests/auth.pyc,,
123
+ requests/packages/chardet/big5freq.pyc,,
124
+ requests/adapters.pyc,,
125
+ requests/packages/chardet/charsetprober.pyc,,
126
+ requests/packages/urllib3/request.pyc,,
127
+ requests/packages/urllib3/fields.pyc,,
128
+ requests/packages/urllib3/util/url.pyc,,
129
+ requests/packages/chardet/chardistribution.pyc,,
130
+ requests/hooks.pyc,,
131
+ requests/packages/urllib3/filepost.pyc,,
132
+ requests/packages/chardet/langthaimodel.pyc,,
133
+ requests/packages/chardet/charsetgroupprober.pyc,,
134
+ requests/packages/urllib3/packages/__init__.pyc,,
135
+ requests/packages/urllib3/contrib/socks.pyc,,
136
+ requests/packages/chardet/compat.pyc,,
137
+ requests/packages/chardet/utf8prober.pyc,,
138
+ requests/packages/urllib3/util/response.pyc,,
139
+ requests/packages/chardet/sbcharsetprober.pyc,,
140
+ requests/packages/chardet/gb2312prober.pyc,,
141
+ requests/packages/chardet/mbcharsetprober.pyc,,
142
+ requests/packages/chardet/langbulgarianmodel.pyc,,
143
+ requests/utils.pyc,,
144
+ requests/packages/__init__.pyc,,
145
+ requests/packages/chardet/__init__.pyc,,
146
+ requests/packages/urllib3/connection.pyc,,
147
+ requests/packages/urllib3/util/connection.pyc,,
148
+ requests/packages/chardet/sjisprober.pyc,,
149
+ requests/packages/chardet/langcyrillicmodel.pyc,,
150
+ requests/packages/urllib3/contrib/appengine.pyc,,
151
+ requests/packages/chardet/langgreekmodel.pyc,,
152
+ requests/packages/urllib3/packages/ssl_match_hostname/__init__.pyc,,
153
+ requests/packages/urllib3/util/timeout.pyc,,
154
+ requests/packages/chardet/langhungarianmodel.pyc,,
155
+ requests/packages/urllib3/_collections.pyc,,
156
+ requests/packages/chardet/euckrprober.pyc,,
157
+ requests/packages/chardet/cp949prober.pyc,,
158
+ requests/packages/chardet/mbcssm.pyc,,
159
+ requests/packages/urllib3/packages/ordered_dict.pyc,,
160
+ requests/packages/urllib3/contrib/ntlmpool.pyc,,
161
+ requests/cookies.pyc,,
162
+ requests/packages/chardet/hebrewprober.pyc,,
163
+ requests/packages/urllib3/exceptions.pyc,,
164
+ requests/packages/urllib3/__init__.pyc,,
165
+ requests/packages/chardet/escprober.pyc,,
166
+ requests/packages/urllib3/response.pyc,,
167
+ requests/packages/urllib3/connectionpool.pyc,,
168
+ requests/__init__.pyc,,
169
+ requests/exceptions.pyc,,
170
+ requests/packages/chardet/euctwprober.pyc,,
@@ -0,0 +1,6 @@
1
+ Wheel-Version: 1.0
2
+ Generator: bdist_wheel (0.26.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py2-none-any
5
+ Tag: py3-none-any
6
+
@@ -0,0 +1 @@
1
+ {"generator": "bdist_wheel (0.26.0)", "summary": "Python HTTP for Humans.", "classifiers": ["Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Natural Language :: English", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy"], "extensions": {"python.details": {"project_urls": {"Home": "http://python-requests.org"}, "contacts": [{"email": "me@kennethreitz.com", "name": "Kenneth Reitz", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}}}, "license": "Apache 2.0", "metadata_version": "2.0", "name": "requests", "extras": ["security", "socks"], "run_requires": [{"requires": ["PySocks (>=1.5.6)"], "extra": "socks"}, {"requires": ["ndg-httpsclient", "pyOpenSSL (>=0.13)", "pyasn1"], "extra": "security"}], "version": "2.11.1", "test_requires": [{"requires": ["pytest (>=2.8.0)", "pytest-cov", "pytest-httpbin (==0.0.7)"]}]}
@@ -0,0 +1 @@
1
+ requests
@@ -0,0 +1 @@
1
+ __version__ = '0.2.0'
Binary file
@@ -0,0 +1,129 @@
1
+ import os
2
+ import sys
3
+ import platform
4
+ import urlparse
5
+ import requests
6
+ import click
7
+
8
+ from rigid import __version__
9
+
10
+ DEFAULT_API_BASE = 'https://rigid-api.herokuapp.com'
11
+
12
+
13
+ class Client(object):
14
+ def __init__(self, base=None):
15
+ python_version = '{}.{}.{}'.format(sys.version_info.major, sys.version_info.minor, sys.version_info.micro)
16
+ self.base = base or os.environ.get('RIGID_API', DEFAULT_API_BASE)
17
+ self.session = requests.Session()
18
+ self.session.headers.update({'User-Agent': 'Rigid/{} Python/{} {}/{}'.format(__version__, python_version, platform.system(), platform.release())})
19
+
20
+ token = None
21
+
22
+ path = os.path.expanduser('~/.rigid/credentials')
23
+ if os.path.exists(path):
24
+ with open(path) as fp:
25
+ token = fp.read().strip()
26
+
27
+ if 'RIGID_TOKEN' in os.environ:
28
+ token = os.environ['RIGID_TOKEN']
29
+
30
+ if token:
31
+ self.session.headers.update({'Authorization': 'Bearer {}'.format(token)})
32
+
33
+ @property
34
+ def host(self):
35
+ return urlparse.urlparse(self.base).hostname
36
+
37
+ def url(self, *components):
38
+ return '/'.join([self.base] + list(components))
39
+
40
+ def validate(self, response):
41
+ if response.status_code == 401:
42
+ exception = click.ClickException('You are not logged in. Use `rigid login` to get started.')
43
+ exception.response = response
44
+ raise exception
45
+
46
+ if 400 <= response.status_code < 600:
47
+ try:
48
+ payload = response.json()
49
+ except:
50
+ payload = None
51
+
52
+ if isinstance(payload, list):
53
+ exception = click.ClickException('\n'.join(payload))
54
+ exception.response = response
55
+ raise exception
56
+
57
+ if payload and 'detail' in payload:
58
+ exception = click.ClickException(payload['detail'])
59
+ exception.response = response
60
+ raise exception
61
+
62
+ if payload and len(payload):
63
+ payload = map(lambda item: [item[0], ', '.join(item[1])], payload.items())
64
+ reasons = map('{0[0]}: {0[1]}'.format, payload)
65
+ exception = click.ClickException('\n'.join(reasons))
66
+ exception.response = response
67
+ raise exception
68
+
69
+ response.raise_for_status()
70
+
71
+ def user(self):
72
+ response = self.session.get(self.url('user'))
73
+ self.validate(response)
74
+ return response.json()
75
+
76
+ def token(self, auth=None, scopes=None):
77
+ payload = {}
78
+ if scopes:
79
+ payload['scopes'] = scopes
80
+
81
+ response = self.session.post(self.url('authorizations'), json=payload, auth=auth)
82
+ self.validate(response)
83
+ return response.json()['token']
84
+
85
+ # Applications
86
+
87
+ def apps(self):
88
+ response = self.session.get(self.url('apps'))
89
+ self.validate(response)
90
+ return response.json()
91
+
92
+ def app(self, name):
93
+ response = self.session.get(self.url('apps', name))
94
+ self.validate(response)
95
+ return response.json()
96
+
97
+ def create_app(self, name=None):
98
+ payload = None
99
+ if name:
100
+ payload = {'name': name}
101
+
102
+ response = self.session.post(self.url('apps'), json=payload)
103
+ self.validate(response)
104
+ return response.json()
105
+
106
+ def delete_app(self, name):
107
+ response = self.session.delete(self.url('apps', name))
108
+ self.validate(response)
109
+
110
+ def promote(self, app, alias, version, config=None):
111
+ payload = {
112
+ 'version': version,
113
+ }
114
+
115
+ if config:
116
+ payload['config'] = config
117
+
118
+ response = self.session.put(self.url('apps', app, 'aliases', alias), json=payload)
119
+ self.validate(response)
120
+ return response.json()
121
+
122
+ def add_domain(self, app, alias, domain):
123
+ response = self.session.post(self.url('apps', app, 'aliases', alias, 'domains'), json={'domain': domain})
124
+ self.validate(response)
125
+ return response.json()
126
+
127
+ def remove_domain(self, app, alias, domain):
128
+ response = self.session.delete(self.url('apps', app, 'aliases', alias, 'domains', domain))
129
+ self.validate(response)
Binary file
@@ -0,0 +1,260 @@
1
+ import os
2
+ import time
3
+ import netrc
4
+
5
+ import click
6
+ import requests
7
+ import yaml
8
+
9
+ from rigid import __version__
10
+ from rigid.api import Client
11
+ from rigid.deploy import Deploy
12
+
13
+
14
+ def load_config(config_file, alias):
15
+ config = None
16
+
17
+ if not config_file:
18
+ if os.path.exists('.rigid-{}.yaml'.format(alias)):
19
+ config_file = '.rigid-{}.yaml'.format(alias)
20
+ elif os.path.exists('.rigid.yaml'):
21
+ config_file = '.rigid.yaml'
22
+
23
+ if config_file:
24
+ with open(config_file) as fp:
25
+ config = yaml.safe_load(fp)
26
+
27
+ return config
28
+
29
+
30
+ @click.group()
31
+ @click.version_option(__version__)
32
+ @click.pass_context
33
+ def cli(ctx):
34
+ ctx.obj = Client()
35
+
36
+
37
+ @cli.command('login')
38
+ @click.pass_context
39
+ def login(ctx):
40
+ """Login with your Rigid credentials"""
41
+
42
+ click.echo('Enter your Rigid credentials.')
43
+
44
+ email = click.prompt('Email', type=str)
45
+ password = click.prompt('Password', type=str, hide_input=True)
46
+
47
+ try:
48
+ token = ctx.obj.token(auth=(email, password))
49
+ except click.ClickException as e:
50
+ if e.response.status_code == 401:
51
+ raise click.ClickException('Invalid Credentials')
52
+
53
+ raise
54
+
55
+ path = os.path.expanduser('~/.rigid')
56
+
57
+ try:
58
+ os.mkdir(path)
59
+ except:
60
+ pass
61
+
62
+ with open(os.path.join(path, 'credentials'), 'w') as fp:
63
+ fp.write(token)
64
+
65
+
66
+ @cli.command('logout')
67
+ def logout():
68
+ path = os.path.expanduser('~/.rigid')
69
+ os.remove(os.path.join(path, 'credentials'))
70
+
71
+
72
+ @cli.command('whoami')
73
+ @click.pass_context
74
+ def whoami(ctx):
75
+ """Show your Rigid login"""
76
+ click.echo(ctx.obj.user()['email'])
77
+
78
+
79
+ @cli.command('token')
80
+ @click.option('--scope', '-s', multiple=True)
81
+ @click.pass_context
82
+ def token(ctx, scope):
83
+ """Generate an authentication token"""
84
+ click.echo(ctx.obj.token(scopes=scope))
85
+
86
+
87
+ @cli.command('app')
88
+ @click.argument('app')
89
+ @click.option('--create', is_flag=True)
90
+ @click.option('--delete', is_flag=True)
91
+ @click.pass_context
92
+ def app(ctx, app, create, delete):
93
+ """View or manage a specific application"""
94
+
95
+ if create:
96
+ payload = ctx.obj.create_app(app)
97
+ click.echo('{name} ({web_url}) has been created.'.format(**payload))
98
+ return
99
+
100
+ if delete:
101
+ click.confirm('Are you sure you want to delete {}?'.format(app), abort=True)
102
+ ctx.obj.delete_app(app)
103
+ click.echo('{} has been deleted.'.format(app))
104
+ return
105
+
106
+ payload = ctx.obj.app(app)
107
+
108
+ click.echo('{} - {}'.format(payload['name'], payload['web_url']))
109
+
110
+ if 'versions' in payload:
111
+ click.echo()
112
+ click.echo('Versions')
113
+
114
+ for version in payload['versions']:
115
+ click.echo('- ' + version['uuid'])
116
+
117
+ if 'aliases' in payload:
118
+ click.echo()
119
+ click.echo('Aliases')
120
+
121
+ for alias in payload['aliases']:
122
+ name = alias['name']
123
+ version = alias.get('version', None)
124
+ web_url = alias.get('web_url', None)
125
+ domains = alias.get('domains', None)
126
+
127
+ click.echo('- Name: {}'.format(name))
128
+
129
+ if web_url:
130
+ click.echo(' URL: {}'.format(web_url))
131
+
132
+ if version:
133
+ click.echo(' Version: {}'.format(version))
134
+
135
+ if domains:
136
+ click.echo(' Domains:')
137
+
138
+ for domain in domains:
139
+ click.echo(' - {}'.format(domain['domain']))
140
+
141
+
142
+ @cli.command('apps')
143
+ @click.pass_context
144
+ def apps(ctx):
145
+ """List your Rigid apps"""
146
+
147
+ apps = ctx.obj.apps()
148
+
149
+ for app in apps:
150
+ click.echo(app['name'])
151
+
152
+ if len(apps) == 0:
153
+ click.echo("You don't have any apps yet.")
154
+
155
+
156
+ @cli.command('deploy')
157
+ @click.argument('source', type=click.Path(exists=True))
158
+ @click.option('--app', '-a', required=False)
159
+ @click.option('--alias', default='production')
160
+ @click.option('--create', default=False, is_flag=True)
161
+ @click.option('--config', type=click.Path(exists=True))
162
+ @click.option('--verbose', default=False, is_flag=True)
163
+ @click.pass_context
164
+ def deploy(ctx, source, app, alias, create, config, verbose):
165
+ """Deploy a new version"""
166
+
167
+ if app is None and not create:
168
+ raise click.MissingParameter(param_type='option "--app" / "-a"')
169
+
170
+ config = load_config(config, alias)
171
+ deploy = Deploy(ctx.obj, source)
172
+
173
+ if create:
174
+ new_app = ctx.obj.create_app(app)
175
+ app = new_app['name']
176
+ click.echo('Application {} has been created.'.format(app))
177
+ else:
178
+ deploy.validate(app)
179
+
180
+ if verbose:
181
+ files = deploy.collect_files()
182
+ click.echo('{} source files:'.format(len(files)))
183
+
184
+ for name in files:
185
+ click.echo('- {}'.format(name))
186
+
187
+ uploader, length = deploy.upload(app)
188
+
189
+ with click.progressbar(length=length, label='Uploading Source') as progress:
190
+ source_uuid = uploader(progress.update)
191
+
192
+ version_uuid = deploy.upload_version(app, source_uuid)
193
+
194
+ click.echo('Version {} has been created'.format(version_uuid))
195
+
196
+ with click.progressbar(length=100, label='Promoting to {}'.format(alias)) as progress:
197
+ counter = 0
198
+
199
+ while True:
200
+ try:
201
+ ctx.obj.promote(app, alias, version_uuid, config)
202
+ break
203
+ except click.ClickException as e:
204
+ progress.update(1)
205
+
206
+ if hasattr(e, 'response') and e.response.status_code == 400:
207
+ payload = e.response.json()
208
+
209
+ if len(payload) == 1 and 'version' in payload:
210
+ pass
211
+ else:
212
+ raise
213
+ else:
214
+ raise
215
+
216
+ counter += 1
217
+ time.sleep(2)
218
+
219
+ if counter % 2:
220
+ time.sleep(2)
221
+
222
+ click.echo('{} ({}) has been deployed.'.format(app, alias))
223
+
224
+
225
+ @cli.command('domains')
226
+ @click.option('--app', '-a', required=True)
227
+ @click.option('--alias', default='production')
228
+ @click.argument('domain')
229
+ @click.option('--add', is_flag=True)
230
+ @click.option('--remove', is_flag=True)
231
+ @click.pass_context
232
+ def domains(ctx, app, alias, domain, add, remove):
233
+ """
234
+ Manage custom domains for an app
235
+ """
236
+
237
+ if not add and not remove:
238
+ raise click.ClickException('--add or --remove must be provided')
239
+
240
+ if add:
241
+ ctx.obj.add_domain(app, alias, domain)
242
+ click.echo('{} has been added to {}.'.format(domain, app))
243
+
244
+ if remove:
245
+ ctx.obj.remove_domain(app, alias, domain)
246
+ click.echo('{} has been removed from {}.'.format(domain, app))
247
+
248
+
249
+ @cli.command('promote')
250
+ @click.option('--app', '-a', required=True)
251
+ @click.option('--alias', default='production')
252
+ @click.option('--config', type=click.Path(exists=True))
253
+ @click.argument('version')
254
+ @click.pass_context
255
+ def promote(ctx, app, alias, config, version):
256
+ """Promote a version to an alias."""
257
+
258
+ config = load_config(config, alias)
259
+ payload = ctx.obj.promote(app, alias, version, config)
260
+ click.echo('{}/{} is now running {}.'.format(app, alias, payload['version']))
Binary file
File without changes
Binary file
@@ -0,0 +1,70 @@
1
+ import os
2
+ import tempfile
3
+ from rigid.utils import ObservedFileWrapper
4
+
5
+ import requests
6
+
7
+ from rigid.file_scanner import scan, tar, Skipper
8
+
9
+
10
+ class Deploy(object):
11
+ def __init__(self, client, source):
12
+ self.client = client
13
+ self.source = source
14
+
15
+ def collect_files(self):
16
+ ignore_file = '.rignore'
17
+ ignore_path = os.path.join(self.source, ignore_file)
18
+
19
+ if os.path.exists(ignore_path):
20
+ skipper = Skipper.open(ignore_path)
21
+ skipper.rules.append(ignore_file)
22
+ else:
23
+ skipper = Skipper([])
24
+
25
+ return filter(skipper, scan(self.source))
26
+
27
+ def create_tarball(self, path):
28
+ tar(path, self.collect_files(), self.source)
29
+
30
+ def validate(self, app):
31
+ response = self.client.session.head(self.client.url('apps', app))
32
+ self.client.validate(response)
33
+
34
+ def create_source(self):
35
+ response = self.client.session.post(self.client.url('sources'))
36
+ self.client.validate(response)
37
+ payload = response.json()
38
+ return (payload['uuid'], payload['upload'])
39
+
40
+ def upload_source(self, method, url, path, updater):
41
+ with open(path, 'rb') as fd:
42
+ fd = ObservedFileWrapper(fd, updater)
43
+ response = requests.request(method, url, data=fd)
44
+ response.raise_for_status()
45
+
46
+ def create_version(self, url, source_uuid):
47
+ response = self.client.session.post(url, json={'source': source_uuid})
48
+ self.client.validate(response)
49
+ json = response.json()
50
+ return (json['uuid'])
51
+
52
+ # API
53
+
54
+ def upload(self, app):
55
+ fd = tempfile.NamedTemporaryFile()
56
+ self.create_tarball(fd.name)
57
+ source_uuid, source_upload = self.create_source()
58
+ size = os.fstat(fd.fileno()).st_size
59
+
60
+ def func(updater):
61
+ self.upload_source(source_upload['method'], source_upload['url'], fd.name, updater)
62
+ fd.close()
63
+ return source_uuid
64
+
65
+ return (func, size)
66
+
67
+ def upload_version(self, app, source_uuid):
68
+ url = self.client.url('apps', app, 'versions')
69
+ version_uuid = self.create_version(url, source_uuid)
70
+ return version_uuid
Binary file