ufo 5.0.7 → 6.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (457) hide show
  1. checksums.yaml +4 -4
  2. data/.cody/README.md +19 -0
  3. data/.cody/acceptance/bin/build.sh +90 -0
  4. data/.cody/acceptance/buildspec.yml +10 -0
  5. data/.cody/acceptance/project.rb +11 -0
  6. data/.cody/acceptance/role.rb +28 -0
  7. data/.cody/shared/script/install/ufo.sh +40 -0
  8. data/.cody/shared/script/install.sh +5 -0
  9. data/.github/workflows/main.yml +28 -0
  10. data/CHANGELOG.md +4 -1
  11. data/Gemfile +0 -2
  12. data/README.md +1 -32
  13. data/lib/templates/docker/Dockerfile +4 -0
  14. data/lib/templates/helper/%underscore_name%_helper.rb.tt +6 -0
  15. data/lib/templates/init/.ufo/config/web/base.rb +6 -0
  16. data/lib/templates/init/.ufo/config/web/dev.rb +6 -0
  17. data/lib/templates/init/.ufo/config/web/prod.rb +6 -0
  18. data/lib/templates/init/.ufo/config.rb.tt +39 -0
  19. data/lib/templates/init/.ufo/resources/iam_roles/execution_role.rb +23 -0
  20. data/lib/templates/init/.ufo/resources/iam_roles/task_role.rb +20 -0
  21. data/lib/templates/init/.ufo/resources/task_definitions/web.yml +29 -0
  22. data/lib/templates/init/.ufo/vars/base.rb +20 -0
  23. data/lib/templates/init/.ufo/vars/dev.rb +4 -0
  24. data/lib/templates/init/.ufo/vars/prod.rb +4 -0
  25. data/lib/ufo/aws_services.rb +118 -0
  26. data/lib/ufo/booter.rb +27 -0
  27. data/lib/ufo/cfn/base.rb +7 -0
  28. data/lib/ufo/cfn/deploy.rb +54 -0
  29. data/lib/ufo/{stack → cfn/stack}/builder/base.rb +12 -23
  30. data/lib/ufo/cfn/stack/builder/conditions.rb +25 -0
  31. data/lib/ufo/{stack → cfn/stack}/builder/outputs.rb +2 -2
  32. data/lib/ufo/cfn/stack/builder/parameters.rb +34 -0
  33. data/lib/ufo/cfn/stack/builder/resources/base.rb +4 -0
  34. data/lib/ufo/cfn/stack/builder/resources/dns.rb +47 -0
  35. data/lib/ufo/{stack/builder/resources/ecs.rb → cfn/stack/builder/resources/ecs_service.rb} +11 -10
  36. data/lib/ufo/cfn/stack/builder/resources/elb.rb +35 -0
  37. data/lib/ufo/cfn/stack/builder/resources/iam_roles/base.rb +32 -0
  38. data/lib/ufo/cfn/stack/builder/resources/iam_roles/execution_role.rb +4 -0
  39. data/lib/ufo/cfn/stack/builder/resources/iam_roles/task_role.rb +4 -0
  40. data/lib/ufo/cfn/stack/builder/resources/listener.rb +65 -0
  41. data/lib/ufo/cfn/stack/builder/resources/listener_ssl.rb +44 -0
  42. data/lib/ufo/cfn/stack/builder/resources/scaling/base.rb +5 -0
  43. data/lib/ufo/cfn/stack/builder/resources/scaling/policy.rb +27 -0
  44. data/lib/ufo/cfn/stack/builder/resources/scaling/role.rb +33 -0
  45. data/lib/ufo/cfn/stack/builder/resources/scaling/target.rb +22 -0
  46. data/lib/ufo/cfn/stack/builder/resources/security_group/base.rb +4 -0
  47. data/lib/ufo/{stack → cfn/stack}/builder/resources/security_group/ecs.rb +4 -4
  48. data/lib/ufo/{stack → cfn/stack}/builder/resources/security_group/ecs_rule.rb +2 -2
  49. data/lib/ufo/{stack → cfn/stack}/builder/resources/security_group/elb.rb +5 -6
  50. data/lib/ufo/{stack → cfn/stack}/builder/resources/target_group.rb +4 -4
  51. data/lib/ufo/{stack → cfn/stack}/builder/resources/task_definition/reconstructor.rb +4 -4
  52. data/lib/ufo/{stack → cfn/stack}/builder/resources/task_definition.rb +4 -4
  53. data/lib/ufo/cfn/stack/builder/resources.rb +24 -0
  54. data/lib/ufo/cfn/stack/builder.rb +30 -0
  55. data/lib/ufo/{stack → cfn/stack}/custom_properties.rb +21 -5
  56. data/lib/ufo/cfn/stack/params.rb +51 -0
  57. data/lib/ufo/{stack → cfn/stack}/status.rb +2 -2
  58. data/lib/ufo/cfn/stack/template.rb +8 -0
  59. data/lib/ufo/cfn/stack/vars.rb +110 -0
  60. data/lib/ufo/cfn/stack/vpc.rb +31 -0
  61. data/lib/ufo/cfn/stack.rb +175 -0
  62. data/lib/ufo/cli/base.rb +18 -0
  63. data/lib/ufo/cli/build.rb +30 -0
  64. data/lib/ufo/cli/cancel.rb +18 -0
  65. data/lib/ufo/cli/central/update.rb +80 -0
  66. data/lib/ufo/cli/central.rb +12 -0
  67. data/lib/ufo/cli/clean.rb +17 -0
  68. data/lib/ufo/cli/destroy.rb +31 -0
  69. data/lib/ufo/{docker.rb → cli/docker.rb} +18 -18
  70. data/lib/ufo/cli/exec.rb +82 -0
  71. data/lib/ufo/cli/help/central/update.md +20 -0
  72. data/lib/ufo/{help → cli/help}/completion.md +0 -0
  73. data/lib/ufo/{help → cli/help}/completion_script.md +0 -0
  74. data/lib/ufo/cli/help/destroy.md +9 -0
  75. data/lib/ufo/cli/help/docker/base.md +39 -0
  76. data/lib/ufo/{help → cli/help}/docker/build.md +9 -9
  77. data/lib/ufo/{help → cli/help}/docker/clean.md +8 -8
  78. data/lib/ufo/{help → cli/help}/docker/compile.md +0 -0
  79. data/lib/ufo/cli/help/docker/name.md +16 -0
  80. data/lib/ufo/{help → cli/help}/docker/push.md +0 -0
  81. data/lib/ufo/cli/help/docker.md +6 -0
  82. data/lib/ufo/{help → cli/help}/help.md +1 -1
  83. data/lib/ufo/cli/help/init.md +27 -0
  84. data/lib/ufo/{help → cli/help}/logs.md +5 -4
  85. data/lib/ufo/cli/help/ps.md +12 -0
  86. data/lib/ufo/cli/help/releases.md +15 -0
  87. data/lib/ufo/cli/help/rollback.md +40 -0
  88. data/lib/ufo/cli/help/scale.md +7 -0
  89. data/lib/ufo/cli/help/ship.md +41 -0
  90. data/lib/ufo/cli/help/stop.md +3 -0
  91. data/lib/ufo/cli/help.rb +62 -0
  92. data/lib/ufo/{logs.rb → cli/logs.rb} +13 -6
  93. data/lib/ufo/cli/new/concerns.rb +16 -0
  94. data/lib/ufo/cli/new/helper.rb +24 -0
  95. data/lib/ufo/cli/new/init.rb +68 -0
  96. data/lib/ufo/{sequence.rb → cli/new/sequence.rb} +26 -4
  97. data/lib/ufo/cli/new.rb +10 -0
  98. data/lib/ufo/cli/opts.rb +35 -0
  99. data/lib/ufo/{ps → cli/ps}/task.rb +22 -29
  100. data/lib/ufo/cli/ps.rb +190 -0
  101. data/lib/ufo/{releases.rb → cli/releases.rb} +4 -4
  102. data/lib/ufo/{rollback.rb → cli/rollback.rb} +24 -12
  103. data/lib/ufo/cli/scale.rb +76 -0
  104. data/lib/ufo/cli/ship.rb +28 -0
  105. data/lib/ufo/cli/status.rb +8 -0
  106. data/lib/ufo/cli/stop.rb +49 -0
  107. data/lib/ufo/{tasks.rb → cli/tasks.rb} +2 -2
  108. data/lib/ufo/{upgrade.rb → cli/upgrade.rb} +2 -2
  109. data/lib/ufo/cli.rb +82 -172
  110. data/lib/ufo/command.rb +56 -1
  111. data/lib/ufo/concerns/autoscaling.rb +11 -0
  112. data/lib/ufo/concerns/names.rb +9 -0
  113. data/lib/ufo/concerns.rb +26 -0
  114. data/lib/ufo/config/inits.rb +13 -0
  115. data/lib/ufo/config.rb +187 -0
  116. data/lib/ufo/core.rb +32 -44
  117. data/lib/ufo/docker/builder.rb +44 -40
  118. data/lib/ufo/docker/cleaner.rb +9 -12
  119. data/lib/ufo/docker/compiler.rb +10 -4
  120. data/lib/ufo/docker/concerns.rb +7 -0
  121. data/lib/ufo/docker/dockerfile.rb +13 -9
  122. data/lib/ufo/docker/pusher.rb +13 -25
  123. data/lib/ufo/docker/state.rb +63 -0
  124. data/lib/ufo/ecr/auth.rb +8 -7
  125. data/lib/ufo/ecr/cleaner.rb +10 -14
  126. data/lib/ufo/ext/core/module.rb +31 -0
  127. data/lib/ufo/ext/core/nil_class.rb +11 -0
  128. data/lib/ufo/ext.rb +2 -0
  129. data/lib/ufo/{role → iam_role}/builder.rb +1 -1
  130. data/lib/ufo/{role → iam_role}/dsl.rb +8 -2
  131. data/lib/ufo/{role → iam_role}/registry.rb +1 -1
  132. data/lib/ufo/info.rb +22 -4
  133. data/lib/ufo/layering/layer.rb +95 -0
  134. data/lib/ufo/layering.rb +23 -0
  135. data/lib/ufo/log_group.rb +18 -10
  136. data/lib/ufo/logger/formatter.rb +13 -0
  137. data/lib/ufo/logger.rb +32 -0
  138. data/lib/ufo/names.rb +69 -0
  139. data/lib/ufo/param.rb +2 -1
  140. data/lib/ufo/task_definition/builder.rb +7 -0
  141. data/lib/ufo/task_definition/context.rb +45 -0
  142. data/lib/ufo/task_definition/erb/base.rb +18 -0
  143. data/lib/ufo/task_definition/erb/json.rb +28 -0
  144. data/lib/ufo/task_definition/erb/yaml.rb +18 -0
  145. data/lib/ufo/task_definition/erb.rb +78 -0
  146. data/lib/ufo/task_definition/helpers/aws_data_helper.rb +18 -0
  147. data/lib/ufo/task_definition/helpers/core.rb +50 -0
  148. data/lib/ufo/task_definition/helpers/ssm/fetcher.rb +39 -0
  149. data/lib/ufo/task_definition/helpers/ssm.rb +8 -0
  150. data/lib/ufo/task_definition/helpers/stack_output.rb +23 -0
  151. data/lib/ufo/{dsl/helper → task_definition/helpers}/vars.rb +40 -19
  152. data/lib/ufo/task_definition/helpers/vpc.rb +48 -0
  153. data/lib/ufo/task_definition/helpers.rb +5 -0
  154. data/lib/ufo/task_definition.rb +19 -0
  155. data/lib/ufo/upgrade/upgrade3.rb +1 -1
  156. data/lib/ufo/upgrade/upgrade4.rb +3 -3
  157. data/lib/ufo/utils/execute.rb +30 -0
  158. data/lib/ufo/utils/logging.rb +7 -0
  159. data/lib/ufo/utils/pretty.rb +18 -0
  160. data/lib/ufo/utils/squeezer.rb +1 -1
  161. data/lib/ufo/utils/sure.rb +23 -0
  162. data/lib/ufo/version.rb +1 -1
  163. data/lib/ufo/yaml/loader.rb +48 -0
  164. data/lib/ufo/yaml/validator.rb +51 -0
  165. data/lib/ufo/yaml.rb +13 -0
  166. data/lib/ufo.rb +12 -2
  167. data/spec/spec_helper.rb +4 -26
  168. data/spec/{lib → ufo}/ecr_auth_spec.rb +0 -0
  169. data/spec/{lib → ufo}/ecr_cleaner_spec.rb +0 -2
  170. data/spec/{lib/role → ufo/iam_role}/builder_spec.rb +5 -5
  171. data/spec/{lib/role → ufo/iam_role}/dsl_spec.rb +3 -3
  172. data/spec/{lib → ufo}/logs_spec.rb +2 -2
  173. data/ufo.gemspec +9 -3
  174. metadata +244 -341
  175. data/.circleci/bin/commit_docs.sh +0 -26
  176. data/.circleci/config.yml +0 -78
  177. data/.gitmodules +0 -0
  178. data/docs/.gitignore +0 -5
  179. data/docs/CNAME +0 -1
  180. data/docs/Gemfile +0 -4
  181. data/docs/LICENSE +0 -21
  182. data/docs/README.md +0 -20
  183. data/docs/_config.yml +0 -75
  184. data/docs/_docs/aws-ecs-task-execution-role.md +0 -28
  185. data/docs/_docs/conventions.md +0 -47
  186. data/docs/_docs/extras/codebuild-iam-role.md +0 -46
  187. data/docs/_docs/extras/dockerfile-erb.md +0 -60
  188. data/docs/_docs/extras/ecs-network-mode.md +0 -37
  189. data/docs/_docs/extras/load-balancer.md +0 -83
  190. data/docs/_docs/extras/minimal-deploy-iam.md +0 -79
  191. data/docs/_docs/extras/notification-arns.md +0 -21
  192. data/docs/_docs/extras/redirection-support.md +0 -27
  193. data/docs/_docs/extras/route53-support.md +0 -27
  194. data/docs/_docs/extras/security-groups.md +0 -36
  195. data/docs/_docs/extras/ssl-support.md +0 -20
  196. data/docs/_docs/faq.md +0 -100
  197. data/docs/_docs/fargate.md +0 -5
  198. data/docs/_docs/helpers.md +0 -24
  199. data/docs/_docs/iam-roles.md +0 -112
  200. data/docs/_docs/install.md +0 -25
  201. data/docs/_docs/more/auto-completion.md +0 -24
  202. data/docs/_docs/more/automated-cleanup.md +0 -14
  203. data/docs/_docs/more/customize-cloudformation.md +0 -35
  204. data/docs/_docs/more/migrations.md +0 -25
  205. data/docs/_docs/more/run-in-pieces.md +0 -30
  206. data/docs/_docs/more/single-task.md +0 -25
  207. data/docs/_docs/more/stuck-cloudformation.md +0 -29
  208. data/docs/_docs/more/why-cloudformation.md +0 -21
  209. data/docs/_docs/next-steps.md +0 -16
  210. data/docs/_docs/quick-start-ec2.md +0 -86
  211. data/docs/_docs/secrets.md +0 -135
  212. data/docs/_docs/settings/aws_profile.md +0 -36
  213. data/docs/_docs/settings/cfn.md +0 -12
  214. data/docs/_docs/settings/cluster.md +0 -66
  215. data/docs/_docs/settings/manage-security-groups.md +0 -24
  216. data/docs/_docs/settings/network.md +0 -45
  217. data/docs/_docs/settings.md +0 -55
  218. data/docs/_docs/ssl_errors.md +0 -40
  219. data/docs/_docs/structure.md +0 -41
  220. data/docs/_docs/tutorial-ufo-docker-build.md +0 -61
  221. data/docs/_docs/tutorial-ufo-init.md +0 -86
  222. data/docs/_docs/tutorial-ufo-ship.md +0 -95
  223. data/docs/_docs/tutorial-ufo-ships.md +0 -38
  224. data/docs/_docs/tutorial-ufo-tasks-build.md +0 -177
  225. data/docs/_docs/tutorial.md +0 -14
  226. data/docs/_docs/ufo-current.md +0 -49
  227. data/docs/_docs/ufo-env-extra.md +0 -22
  228. data/docs/_docs/ufo-env.md +0 -46
  229. data/docs/_docs/ufo-logs.md +0 -49
  230. data/docs/_docs/ufo-task-params.md +0 -43
  231. data/docs/_docs/ufo-tasks-register.md +0 -21
  232. data/docs/_docs/upgrading/upgrade4.5.md +0 -52
  233. data/docs/_docs/upgrading/upgrade4.md +0 -48
  234. data/docs/_docs/upgrading/upgrade5.md +0 -19
  235. data/docs/_docs/upgrading.md +0 -13
  236. data/docs/_docs/variables.md +0 -55
  237. data/docs/_includes/about.html +0 -19
  238. data/docs/_includes/banner/foot.html +0 -2
  239. data/docs/_includes/banner/head.html +0 -5
  240. data/docs/_includes/cfn-customize.md +0 -53
  241. data/docs/_includes/commands.html +0 -80
  242. data/docs/_includes/contact.html +0 -17
  243. data/docs/_includes/contact_disqus.html +0 -16
  244. data/docs/_includes/contact_static.html +0 -17
  245. data/docs/_includes/content.html +0 -26
  246. data/docs/_includes/css/bootstrap.min.css +0 -7
  247. data/docs/_includes/css/main.css +0 -501
  248. data/docs/_includes/css/quotes.css +0 -102
  249. data/docs/_includes/css/syntax.css +0 -65
  250. data/docs/_includes/css/table.css +0 -53
  251. data/docs/_includes/css/timeline.css +0 -201
  252. data/docs/_includes/css/ufo.css +0 -218
  253. data/docs/_includes/edit-on-github.html +0 -11
  254. data/docs/_includes/example.html +0 -63
  255. data/docs/_includes/footer.html +0 -44
  256. data/docs/_includes/google_analytics.html +0 -10
  257. data/docs/_includes/head.html +0 -32
  258. data/docs/_includes/header.html +0 -15
  259. data/docs/_includes/js.html +0 -32
  260. data/docs/_includes/js_disqus.html +0 -21
  261. data/docs/_includes/modals.html +0 -40
  262. data/docs/_includes/nav.html +0 -27
  263. data/docs/_includes/prev_next.md +0 -19
  264. data/docs/_includes/quotes.html +0 -19
  265. data/docs/_includes/reference.md +0 -5
  266. data/docs/_includes/repo_push_access.md +0 -11
  267. data/docs/_includes/subnav.html +0 -78
  268. data/docs/_includes/summary.html +0 -22
  269. data/docs/_includes/ufo-ship-options.md +0 -12
  270. data/docs/_includes/uses.html +0 -19
  271. data/docs/_layouts/default.html +0 -13
  272. data/docs/_layouts/style.css +0 -6
  273. data/docs/_reference/ufo-apps.md +0 -37
  274. data/docs/_reference/ufo-cancel.md +0 -24
  275. data/docs/_reference/ufo-completion.md +0 -46
  276. data/docs/_reference/ufo-completion_script.md +0 -27
  277. data/docs/_reference/ufo-current.md +0 -93
  278. data/docs/_reference/ufo-deploy.md +0 -76
  279. data/docs/_reference/ufo-destroy.md +0 -36
  280. data/docs/_reference/ufo-docker-base.md +0 -71
  281. data/docs/_reference/ufo-docker-build.md +0 -91
  282. data/docs/_reference/ufo-docker-clean.md +0 -44
  283. data/docs/_reference/ufo-docker-compile.md +0 -19
  284. data/docs/_reference/ufo-docker-help.md +0 -15
  285. data/docs/_reference/ufo-docker-name.md +0 -37
  286. data/docs/_reference/ufo-docker-push.md +0 -49
  287. data/docs/_reference/ufo-docker.md +0 -38
  288. data/docs/_reference/ufo-init.md +0 -125
  289. data/docs/_reference/ufo-logs.md +0 -40
  290. data/docs/_reference/ufo-network-help.md +0 -15
  291. data/docs/_reference/ufo-network-init.md +0 -39
  292. data/docs/_reference/ufo-network.md +0 -26
  293. data/docs/_reference/ufo-ps.md +0 -56
  294. data/docs/_reference/ufo-releases.md +0 -40
  295. data/docs/_reference/ufo-resources.md +0 -44
  296. data/docs/_reference/ufo-rollback.md +0 -61
  297. data/docs/_reference/ufo-scale.md +0 -50
  298. data/docs/_reference/ufo-ship.md +0 -129
  299. data/docs/_reference/ufo-ships.md +0 -68
  300. data/docs/_reference/ufo-status.md +0 -23
  301. data/docs/_reference/ufo-stop.md +0 -31
  302. data/docs/_reference/ufo-task.md +0 -56
  303. data/docs/_reference/ufo-tasks-build.md +0 -178
  304. data/docs/_reference/ufo-tasks-help.md +0 -15
  305. data/docs/_reference/ufo-tasks-register.md +0 -29
  306. data/docs/_reference/ufo-tasks.md +0 -35
  307. data/docs/_reference/ufo-upgrade-help.md +0 -15
  308. data/docs/_reference/ufo-upgrade-v2to3.md +0 -15
  309. data/docs/_reference/ufo-upgrade-v33to34.md +0 -15
  310. data/docs/_reference/ufo-upgrade-v3to4.md +0 -27
  311. data/docs/_reference/ufo-upgrade-v43to45.md +0 -15
  312. data/docs/_reference/ufo-upgrade.md +0 -29
  313. data/docs/_reference/ufo-version.md +0 -23
  314. data/docs/articles.md +0 -14
  315. data/docs/bin/web +0 -4
  316. data/docs/css/font-awesome/css/font-awesome.css +0 -1566
  317. data/docs/css/font-awesome/css/font-awesome.min.css +0 -4
  318. data/docs/css/font-awesome/fonts/FontAwesome.otf +0 -0
  319. data/docs/css/font-awesome/fonts/fontawesome-webfont.eot +0 -0
  320. data/docs/css/font-awesome/fonts/fontawesome-webfont.svg +0 -504
  321. data/docs/css/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
  322. data/docs/css/font-awesome/fonts/fontawesome-webfont.woff +0 -0
  323. data/docs/docs.md +0 -29
  324. data/docs/img/docs/cloudformation-resources.png +0 -0
  325. data/docs/img/logos/boltops-logo-full.png +0 -0
  326. data/docs/img/logos/boltops-logo.png +0 -0
  327. data/docs/img/logos/ufo-logo-2.png +0 -0
  328. data/docs/img/logos/ufo-logo.png +0 -0
  329. data/docs/img/logos/ufo-site-header.png +0 -0
  330. data/docs/img/logos/ufo.jpg +0 -0
  331. data/docs/img/tutorials/ecs-console-task-definitions.png +0 -0
  332. data/docs/img/tutorials/ecs-console-ufo-ship.png +0 -0
  333. data/docs/img/tutorials/ecs-console-ufo-ships.png +0 -0
  334. data/docs/index.html +0 -10
  335. data/docs/js/bootstrap.js +0 -2114
  336. data/docs/js/bootstrap.min.js +0 -6
  337. data/docs/js/cbpAnimatedHeader.js +0 -44
  338. data/docs/js/cbpAnimatedHeader.min.js +0 -11
  339. data/docs/js/classie.js +0 -80
  340. data/docs/js/contact_me.js +0 -70
  341. data/docs/js/contact_me_static.js +0 -23
  342. data/docs/js/freelancer.js +0 -37
  343. data/docs/js/jqBootstrapValidation.js +0 -912
  344. data/docs/js/jquery-1.11.0.js +0 -4
  345. data/docs/js/jquery.easing.min.js +0 -44
  346. data/docs/js/nav.js +0 -53
  347. data/docs/quick-start.md +0 -133
  348. data/docs/reference.md +0 -29
  349. data/docs/style.css +0 -3
  350. data/docs/utils/ssl-doctor.rb +0 -89
  351. data/docs/utils/test-aws-api-access.rb +0 -11
  352. data/docs/utils/update-cert-chains.sh +0 -11
  353. data/lib/template/.env +0 -3
  354. data/lib/template/.secrets +0 -5
  355. data/lib/template/.ufo/iam_roles/execution_role.rb +0 -7
  356. data/lib/template/.ufo/iam_roles/task_role.rb +0 -21
  357. data/lib/template/.ufo/params.yml.tt +0 -27
  358. data/lib/template/.ufo/settings/cfn/default.yml.tt +0 -72
  359. data/lib/template/.ufo/settings/network/default.yml.tt +0 -26
  360. data/lib/template/.ufo/settings.yml.tt +0 -26
  361. data/lib/template/.ufo/task_definitions.rb.tt +0 -61
  362. data/lib/template/.ufo/templates/fargate.json.erb +0 -39
  363. data/lib/template/.ufo/templates/main.json.erb +0 -43
  364. data/lib/template/.ufo/variables/base.rb.tt +0 -19
  365. data/lib/template/.ufo/variables/development.rb +0 -8
  366. data/lib/template/.ufo/variables/production.rb +0 -7
  367. data/lib/template/Dockerfile +0 -15
  368. data/lib/template/bin/deploy.tt +0 -7
  369. data/lib/ufo/apps/cfn_map.rb +0 -70
  370. data/lib/ufo/apps/cluster.rb +0 -24
  371. data/lib/ufo/apps/service.rb +0 -56
  372. data/lib/ufo/apps.rb +0 -56
  373. data/lib/ufo/aws_service.rb +0 -36
  374. data/lib/ufo/base.rb +0 -35
  375. data/lib/ufo/cancel.rb +0 -23
  376. data/lib/ufo/current.rb +0 -104
  377. data/lib/ufo/default/settings.yml +0 -24
  378. data/lib/ufo/default/templates/main.json.erb +0 -39
  379. data/lib/ufo/destroy.rb +0 -41
  380. data/lib/ufo/docker/variables.rb +0 -26
  381. data/lib/ufo/dsl/helper.rb +0 -79
  382. data/lib/ufo/dsl/outputter.rb +0 -43
  383. data/lib/ufo/dsl/task_definition.rb +0 -108
  384. data/lib/ufo/dsl.rb +0 -96
  385. data/lib/ufo/help/apps.md +0 -12
  386. data/lib/ufo/help/balancer.md +0 -3
  387. data/lib/ufo/help/completions.md +0 -16
  388. data/lib/ufo/help/completions_script.md +0 -1
  389. data/lib/ufo/help/current.md +0 -65
  390. data/lib/ufo/help/deploy.md +0 -38
  391. data/lib/ufo/help/destroy.md +0 -9
  392. data/lib/ufo/help/docker/base.md +0 -49
  393. data/lib/ufo/help/docker/name.md +0 -16
  394. data/lib/ufo/help/docker.md +0 -6
  395. data/lib/ufo/help/init.md +0 -91
  396. data/lib/ufo/help/network/init.md +0 -13
  397. data/lib/ufo/help/ps.md +0 -27
  398. data/lib/ufo/help/releases.md +0 -16
  399. data/lib/ufo/help/resources.md +0 -20
  400. data/lib/ufo/help/rollback.md +0 -35
  401. data/lib/ufo/help/scale.md +0 -26
  402. data/lib/ufo/help/ship.md +0 -95
  403. data/lib/ufo/help/ships.md +0 -35
  404. data/lib/ufo/help/stop.md +0 -7
  405. data/lib/ufo/help/task.md +0 -27
  406. data/lib/ufo/help/tasks/build.md +0 -158
  407. data/lib/ufo/help/tasks/register.md +0 -14
  408. data/lib/ufo/help/tasks.md +0 -7
  409. data/lib/ufo/help/upgrade/v3to4.md +0 -3
  410. data/lib/ufo/help.rb +0 -9
  411. data/lib/ufo/init.rb +0 -119
  412. data/lib/ufo/network/fetch.rb +0 -48
  413. data/lib/ufo/network/helper.rb +0 -23
  414. data/lib/ufo/network/init.rb +0 -26
  415. data/lib/ufo/network.rb +0 -21
  416. data/lib/ufo/ps.rb +0 -129
  417. data/lib/ufo/scale.rb +0 -28
  418. data/lib/ufo/setting/profile.rb +0 -44
  419. data/lib/ufo/setting/security_groups.rb +0 -22
  420. data/lib/ufo/setting.rb +0 -75
  421. data/lib/ufo/settings.rb +0 -20
  422. data/lib/ufo/ship.rb +0 -103
  423. data/lib/ufo/stack/builder/conditions.rb +0 -23
  424. data/lib/ufo/stack/builder/parameters.rb +0 -45
  425. data/lib/ufo/stack/builder/resources/base.rb +0 -4
  426. data/lib/ufo/stack/builder/resources/dns.rb +0 -17
  427. data/lib/ufo/stack/builder/resources/elb.rb +0 -45
  428. data/lib/ufo/stack/builder/resources/listener.rb +0 -42
  429. data/lib/ufo/stack/builder/resources/listener_ssl.rb +0 -16
  430. data/lib/ufo/stack/builder/resources/roles/base.rb +0 -22
  431. data/lib/ufo/stack/builder/resources/roles/execution_role.rb +0 -4
  432. data/lib/ufo/stack/builder/resources/roles/task_role.rb +0 -4
  433. data/lib/ufo/stack/builder/resources/security_group/base.rb +0 -4
  434. data/lib/ufo/stack/builder/resources.rb +0 -20
  435. data/lib/ufo/stack/builder.rb +0 -26
  436. data/lib/ufo/stack/context.rb +0 -253
  437. data/lib/ufo/stack/helper.rb +0 -55
  438. data/lib/ufo/stack/template_body.rb +0 -13
  439. data/lib/ufo/stack.rb +0 -213
  440. data/lib/ufo/status.rb +0 -56
  441. data/lib/ufo/stop.rb +0 -49
  442. data/lib/ufo/task.rb +0 -225
  443. data/lib/ufo/tasks/builder.rb +0 -40
  444. data/lib/ufo/tasks/register.rb +0 -90
  445. data/lib/ufo/template_scope.rb +0 -57
  446. data/lib/ufo/util.rb +0 -69
  447. data/spec/lib/apps_spec.rb +0 -20
  448. data/spec/lib/builder_spec.rb +0 -23
  449. data/spec/lib/cli_spec.rb +0 -73
  450. data/spec/lib/completion_spec.rb +0 -18
  451. data/spec/lib/ps_spec.rb +0 -14
  452. data/spec/lib/register_spec.rb +0 -49
  453. data/spec/lib/setting_spec.rb +0 -18
  454. data/spec/lib/ship_spec.rb +0 -46
  455. data/spec/lib/stack/status_spec.rb +0 -76
  456. data/spec/lib/stop_spec.rb +0 -13
  457. data/spec/lib/task_spec.rb +0 -54
@@ -1,912 +0,0 @@
1
- /* jqBootstrapValidation
2
- * A plugin for automating validation on Twitter Bootstrap formatted forms.
3
- *
4
- * v1.3.6
5
- *
6
- * License: MIT <http://opensource.org/licenses/mit-license.php> - see LICENSE file
7
- *
8
- * http://ReactiveRaven.github.com/jqBootstrapValidation/
9
- */
10
-
11
- (function( $ ){
12
-
13
- var createdElements = [];
14
-
15
- var defaults = {
16
- options: {
17
- prependExistingHelpBlock: false,
18
- sniffHtml: true, // sniff for 'required', 'maxlength', etc
19
- preventSubmit: true, // stop the form submit event from firing if validation fails
20
- submitError: false, // function called if there is an error when trying to submit
21
- submitSuccess: false, // function called just before a successful submit event is sent to the server
22
- semanticallyStrict: false, // set to true to tidy up generated HTML output
23
- autoAdd: {
24
- helpBlocks: true
25
- },
26
- filter: function () {
27
- // return $(this).is(":visible"); // only validate elements you can see
28
- return true; // validate everything
29
- }
30
- },
31
- methods: {
32
- init : function( options ) {
33
-
34
- var settings = $.extend(true, {}, defaults);
35
-
36
- settings.options = $.extend(true, settings.options, options);
37
-
38
- var $siblingElements = this;
39
-
40
- var uniqueForms = $.unique(
41
- $siblingElements.map( function () {
42
- return $(this).parents("form")[0];
43
- }).toArray()
44
- );
45
-
46
- $(uniqueForms).bind("submit", function (e) {
47
- var $form = $(this);
48
- var warningsFound = 0;
49
- var $inputs = $form.find("input,textarea,select").not("[type=submit],[type=image]").filter(settings.options.filter);
50
- $inputs.trigger("submit.validation").trigger("validationLostFocus.validation");
51
-
52
- $inputs.each(function (i, el) {
53
- var $this = $(el),
54
- $controlGroup = $this.parents(".control-group").first();
55
- if (
56
- $controlGroup.hasClass("warning")
57
- ) {
58
- $controlGroup.removeClass("warning").addClass("error");
59
- warningsFound++;
60
- }
61
- });
62
-
63
- $inputs.trigger("validationLostFocus.validation");
64
-
65
- if (warningsFound) {
66
- if (settings.options.preventSubmit) {
67
- e.preventDefault();
68
- }
69
- $form.addClass("error");
70
- if ($.isFunction(settings.options.submitError)) {
71
- settings.options.submitError($form, e, $inputs.jqBootstrapValidation("collectErrors", true));
72
- }
73
- } else {
74
- $form.removeClass("error");
75
- if ($.isFunction(settings.options.submitSuccess)) {
76
- settings.options.submitSuccess($form, e);
77
- }
78
- }
79
- });
80
-
81
- return this.each(function(){
82
-
83
- // Get references to everything we're interested in
84
- var $this = $(this),
85
- $controlGroup = $this.parents(".control-group").first(),
86
- $helpBlock = $controlGroup.find(".help-block").first(),
87
- $form = $this.parents("form").first(),
88
- validatorNames = [];
89
-
90
- // create message container if not exists
91
- if (!$helpBlock.length && settings.options.autoAdd && settings.options.autoAdd.helpBlocks) {
92
- $helpBlock = $('<div class="help-block" />');
93
- $controlGroup.find('.controls').append($helpBlock);
94
- createdElements.push($helpBlock[0]);
95
- }
96
-
97
- // =============================================================
98
- // SNIFF HTML FOR VALIDATORS
99
- // =============================================================
100
-
101
- // *snort sniff snuffle*
102
-
103
- if (settings.options.sniffHtml) {
104
- var message = "";
105
- // ---------------------------------------------------------
106
- // PATTERN
107
- // ---------------------------------------------------------
108
- if ($this.attr("pattern") !== undefined) {
109
- message = "Not in the expected format<!-- data-validation-pattern-message to override -->";
110
- if ($this.data("validationPatternMessage")) {
111
- message = $this.data("validationPatternMessage");
112
- }
113
- $this.data("validationPatternMessage", message);
114
- $this.data("validationPatternRegex", $this.attr("pattern"));
115
- }
116
- // ---------------------------------------------------------
117
- // MAX
118
- // ---------------------------------------------------------
119
- if ($this.attr("max") !== undefined || $this.attr("aria-valuemax") !== undefined) {
120
- var max = ($this.attr("max") !== undefined ? $this.attr("max") : $this.attr("aria-valuemax"));
121
- message = "Too high: Maximum of '" + max + "'<!-- data-validation-max-message to override -->";
122
- if ($this.data("validationMaxMessage")) {
123
- message = $this.data("validationMaxMessage");
124
- }
125
- $this.data("validationMaxMessage", message);
126
- $this.data("validationMaxMax", max);
127
- }
128
- // ---------------------------------------------------------
129
- // MIN
130
- // ---------------------------------------------------------
131
- if ($this.attr("min") !== undefined || $this.attr("aria-valuemin") !== undefined) {
132
- var min = ($this.attr("min") !== undefined ? $this.attr("min") : $this.attr("aria-valuemin"));
133
- message = "Too low: Minimum of '" + min + "'<!-- data-validation-min-message to override -->";
134
- if ($this.data("validationMinMessage")) {
135
- message = $this.data("validationMinMessage");
136
- }
137
- $this.data("validationMinMessage", message);
138
- $this.data("validationMinMin", min);
139
- }
140
- // ---------------------------------------------------------
141
- // MAXLENGTH
142
- // ---------------------------------------------------------
143
- if ($this.attr("maxlength") !== undefined) {
144
- message = "Too long: Maximum of '" + $this.attr("maxlength") + "' characters<!-- data-validation-maxlength-message to override -->";
145
- if ($this.data("validationMaxlengthMessage")) {
146
- message = $this.data("validationMaxlengthMessage");
147
- }
148
- $this.data("validationMaxlengthMessage", message);
149
- $this.data("validationMaxlengthMaxlength", $this.attr("maxlength"));
150
- }
151
- // ---------------------------------------------------------
152
- // MINLENGTH
153
- // ---------------------------------------------------------
154
- if ($this.attr("minlength") !== undefined) {
155
- message = "Too short: Minimum of '" + $this.attr("minlength") + "' characters<!-- data-validation-minlength-message to override -->";
156
- if ($this.data("validationMinlengthMessage")) {
157
- message = $this.data("validationMinlengthMessage");
158
- }
159
- $this.data("validationMinlengthMessage", message);
160
- $this.data("validationMinlengthMinlength", $this.attr("minlength"));
161
- }
162
- // ---------------------------------------------------------
163
- // REQUIRED
164
- // ---------------------------------------------------------
165
- if ($this.attr("required") !== undefined || $this.attr("aria-required") !== undefined) {
166
- message = settings.builtInValidators.required.message;
167
- if ($this.data("validationRequiredMessage")) {
168
- message = $this.data("validationRequiredMessage");
169
- }
170
- $this.data("validationRequiredMessage", message);
171
- }
172
- // ---------------------------------------------------------
173
- // NUMBER
174
- // ---------------------------------------------------------
175
- if ($this.attr("type") !== undefined && $this.attr("type").toLowerCase() === "number") {
176
- message = settings.builtInValidators.number.message;
177
- if ($this.data("validationNumberMessage")) {
178
- message = $this.data("validationNumberMessage");
179
- }
180
- $this.data("validationNumberMessage", message);
181
- }
182
- // ---------------------------------------------------------
183
- // EMAIL
184
- // ---------------------------------------------------------
185
- if ($this.attr("type") !== undefined && $this.attr("type").toLowerCase() === "email") {
186
- message = "Not a valid email address<!-- data-validation-validemail-message to override -->";
187
- if ($this.data("validationValidemailMessage")) {
188
- message = $this.data("validationValidemailMessage");
189
- } else if ($this.data("validationEmailMessage")) {
190
- message = $this.data("validationEmailMessage");
191
- }
192
- $this.data("validationValidemailMessage", message);
193
- }
194
- // ---------------------------------------------------------
195
- // MINCHECKED
196
- // ---------------------------------------------------------
197
- if ($this.attr("minchecked") !== undefined) {
198
- message = "Not enough options checked; Minimum of '" + $this.attr("minchecked") + "' required<!-- data-validation-minchecked-message to override -->";
199
- if ($this.data("validationMincheckedMessage")) {
200
- message = $this.data("validationMincheckedMessage");
201
- }
202
- $this.data("validationMincheckedMessage", message);
203
- $this.data("validationMincheckedMinchecked", $this.attr("minchecked"));
204
- }
205
- // ---------------------------------------------------------
206
- // MAXCHECKED
207
- // ---------------------------------------------------------
208
- if ($this.attr("maxchecked") !== undefined) {
209
- message = "Too many options checked; Maximum of '" + $this.attr("maxchecked") + "' required<!-- data-validation-maxchecked-message to override -->";
210
- if ($this.data("validationMaxcheckedMessage")) {
211
- message = $this.data("validationMaxcheckedMessage");
212
- }
213
- $this.data("validationMaxcheckedMessage", message);
214
- $this.data("validationMaxcheckedMaxchecked", $this.attr("maxchecked"));
215
- }
216
- }
217
-
218
- // =============================================================
219
- // COLLECT VALIDATOR NAMES
220
- // =============================================================
221
-
222
- // Get named validators
223
- if ($this.data("validation") !== undefined) {
224
- validatorNames = $this.data("validation").split(",");
225
- }
226
-
227
- // Get extra ones defined on the element's data attributes
228
- $.each($this.data(), function (i, el) {
229
- var parts = i.replace(/([A-Z])/g, ",$1").split(",");
230
- if (parts[0] === "validation" && parts[1]) {
231
- validatorNames.push(parts[1]);
232
- }
233
- });
234
-
235
- // =============================================================
236
- // NORMALISE VALIDATOR NAMES
237
- // =============================================================
238
-
239
- var validatorNamesToInspect = validatorNames;
240
- var newValidatorNamesToInspect = [];
241
-
242
- do // repeatedly expand 'shortcut' validators into their real validators
243
- {
244
- // Uppercase only the first letter of each name
245
- $.each(validatorNames, function (i, el) {
246
- validatorNames[i] = formatValidatorName(el);
247
- });
248
-
249
- // Remove duplicate validator names
250
- validatorNames = $.unique(validatorNames);
251
-
252
- // Pull out the new validator names from each shortcut
253
- newValidatorNamesToInspect = [];
254
- $.each(validatorNamesToInspect, function(i, el) {
255
- if ($this.data("validation" + el + "Shortcut") !== undefined) {
256
- // Are these custom validators?
257
- // Pull them out!
258
- $.each($this.data("validation" + el + "Shortcut").split(","), function(i2, el2) {
259
- newValidatorNamesToInspect.push(el2);
260
- });
261
- } else if (settings.builtInValidators[el.toLowerCase()]) {
262
- // Is this a recognised built-in?
263
- // Pull it out!
264
- var validator = settings.builtInValidators[el.toLowerCase()];
265
- if (validator.type.toLowerCase() === "shortcut") {
266
- $.each(validator.shortcut.split(","), function (i, el) {
267
- el = formatValidatorName(el);
268
- newValidatorNamesToInspect.push(el);
269
- validatorNames.push(el);
270
- });
271
- }
272
- }
273
- });
274
-
275
- validatorNamesToInspect = newValidatorNamesToInspect;
276
-
277
- } while (validatorNamesToInspect.length > 0)
278
-
279
- // =============================================================
280
- // SET UP VALIDATOR ARRAYS
281
- // =============================================================
282
-
283
- var validators = {};
284
-
285
- $.each(validatorNames, function (i, el) {
286
- // Set up the 'override' message
287
- var message = $this.data("validation" + el + "Message");
288
- var hasOverrideMessage = (message !== undefined);
289
- var foundValidator = false;
290
- message =
291
- (
292
- message
293
- ? message
294
- : "'" + el + "' validation failed <!-- Add attribute 'data-validation-" + el.toLowerCase() + "-message' to input to change this message -->"
295
- )
296
- ;
297
-
298
- $.each(
299
- settings.validatorTypes,
300
- function (validatorType, validatorTemplate) {
301
- if (validators[validatorType] === undefined) {
302
- validators[validatorType] = [];
303
- }
304
- if (!foundValidator && $this.data("validation" + el + formatValidatorName(validatorTemplate.name)) !== undefined) {
305
- validators[validatorType].push(
306
- $.extend(
307
- true,
308
- {
309
- name: formatValidatorName(validatorTemplate.name),
310
- message: message
311
- },
312
- validatorTemplate.init($this, el)
313
- )
314
- );
315
- foundValidator = true;
316
- }
317
- }
318
- );
319
-
320
- if (!foundValidator && settings.builtInValidators[el.toLowerCase()]) {
321
-
322
- var validator = $.extend(true, {}, settings.builtInValidators[el.toLowerCase()]);
323
- if (hasOverrideMessage) {
324
- validator.message = message;
325
- }
326
- var validatorType = validator.type.toLowerCase();
327
-
328
- if (validatorType === "shortcut") {
329
- foundValidator = true;
330
- } else {
331
- $.each(
332
- settings.validatorTypes,
333
- function (validatorTemplateType, validatorTemplate) {
334
- if (validators[validatorTemplateType] === undefined) {
335
- validators[validatorTemplateType] = [];
336
- }
337
- if (!foundValidator && validatorType === validatorTemplateType.toLowerCase()) {
338
- $this.data("validation" + el + formatValidatorName(validatorTemplate.name), validator[validatorTemplate.name.toLowerCase()]);
339
- validators[validatorType].push(
340
- $.extend(
341
- validator,
342
- validatorTemplate.init($this, el)
343
- )
344
- );
345
- foundValidator = true;
346
- }
347
- }
348
- );
349
- }
350
- }
351
-
352
- if (! foundValidator) {
353
- $.error("Cannot find validation info for '" + el + "'");
354
- }
355
- });
356
-
357
- // =============================================================
358
- // STORE FALLBACK VALUES
359
- // =============================================================
360
-
361
- $helpBlock.data(
362
- "original-contents",
363
- (
364
- $helpBlock.data("original-contents")
365
- ? $helpBlock.data("original-contents")
366
- : $helpBlock.html()
367
- )
368
- );
369
-
370
- $helpBlock.data(
371
- "original-role",
372
- (
373
- $helpBlock.data("original-role")
374
- ? $helpBlock.data("original-role")
375
- : $helpBlock.attr("role")
376
- )
377
- );
378
-
379
- $controlGroup.data(
380
- "original-classes",
381
- (
382
- $controlGroup.data("original-clases")
383
- ? $controlGroup.data("original-classes")
384
- : $controlGroup.attr("class")
385
- )
386
- );
387
-
388
- $this.data(
389
- "original-aria-invalid",
390
- (
391
- $this.data("original-aria-invalid")
392
- ? $this.data("original-aria-invalid")
393
- : $this.attr("aria-invalid")
394
- )
395
- );
396
-
397
- // =============================================================
398
- // VALIDATION
399
- // =============================================================
400
-
401
- $this.bind(
402
- "validation.validation",
403
- function (event, params) {
404
-
405
- var value = getValue($this);
406
-
407
- // Get a list of the errors to apply
408
- var errorsFound = [];
409
-
410
- $.each(validators, function (validatorType, validatorTypeArray) {
411
- if (value || value.length || (params && params.includeEmpty) || (!!settings.validatorTypes[validatorType].blockSubmit && params && !!params.submitting)) {
412
- $.each(validatorTypeArray, function (i, validator) {
413
- if (settings.validatorTypes[validatorType].validate($this, value, validator)) {
414
- errorsFound.push(validator.message);
415
- }
416
- });
417
- }
418
- });
419
-
420
- return errorsFound;
421
- }
422
- );
423
-
424
- $this.bind(
425
- "getValidators.validation",
426
- function () {
427
- return validators;
428
- }
429
- );
430
-
431
- // =============================================================
432
- // WATCH FOR CHANGES
433
- // =============================================================
434
- $this.bind(
435
- "submit.validation",
436
- function () {
437
- return $this.triggerHandler("change.validation", {submitting: true});
438
- }
439
- );
440
- $this.bind(
441
- [
442
- "keyup",
443
- "focus",
444
- "blur",
445
- "click",
446
- "keydown",
447
- "keypress",
448
- "change"
449
- ].join(".validation ") + ".validation",
450
- function (e, params) {
451
-
452
- var value = getValue($this);
453
-
454
- var errorsFound = [];
455
-
456
- $controlGroup.find("input,textarea,select").each(function (i, el) {
457
- var oldCount = errorsFound.length;
458
- $.each($(el).triggerHandler("validation.validation", params), function (j, message) {
459
- errorsFound.push(message);
460
- });
461
- if (errorsFound.length > oldCount) {
462
- $(el).attr("aria-invalid", "true");
463
- } else {
464
- var original = $this.data("original-aria-invalid");
465
- $(el).attr("aria-invalid", (original !== undefined ? original : false));
466
- }
467
- });
468
-
469
- $form.find("input,select,textarea").not($this).not("[name=\"" + $this.attr("name") + "\"]").trigger("validationLostFocus.validation");
470
-
471
- errorsFound = $.unique(errorsFound.sort());
472
-
473
- // Were there any errors?
474
- if (errorsFound.length) {
475
- // Better flag it up as a warning.
476
- $controlGroup.removeClass("success error").addClass("warning");
477
-
478
- // How many errors did we find?
479
- if (settings.options.semanticallyStrict && errorsFound.length === 1) {
480
- // Only one? Being strict? Just output it.
481
- $helpBlock.html(errorsFound[0] +
482
- ( settings.options.prependExistingHelpBlock ? $helpBlock.data("original-contents") : "" ));
483
- } else {
484
- // Multiple? Being sloppy? Glue them together into an UL.
485
- $helpBlock.html("<ul role=\"alert\"><li>" + errorsFound.join("</li><li>") + "</li></ul>" +
486
- ( settings.options.prependExistingHelpBlock ? $helpBlock.data("original-contents") : "" ));
487
- }
488
- } else {
489
- $controlGroup.removeClass("warning error success");
490
- if (value.length > 0) {
491
- $controlGroup.addClass("success");
492
- }
493
- $helpBlock.html($helpBlock.data("original-contents"));
494
- }
495
-
496
- if (e.type === "blur") {
497
- $controlGroup.removeClass("success");
498
- }
499
- }
500
- );
501
- $this.bind("validationLostFocus.validation", function () {
502
- $controlGroup.removeClass("success");
503
- });
504
- });
505
- },
506
- destroy : function( ) {
507
-
508
- return this.each(
509
- function() {
510
-
511
- var
512
- $this = $(this),
513
- $controlGroup = $this.parents(".control-group").first(),
514
- $helpBlock = $controlGroup.find(".help-block").first();
515
-
516
- // remove our events
517
- $this.unbind('.validation'); // events are namespaced.
518
- // reset help text
519
- $helpBlock.html($helpBlock.data("original-contents"));
520
- // reset classes
521
- $controlGroup.attr("class", $controlGroup.data("original-classes"));
522
- // reset aria
523
- $this.attr("aria-invalid", $this.data("original-aria-invalid"));
524
- // reset role
525
- $helpBlock.attr("role", $this.data("original-role"));
526
- // remove all elements we created
527
- if (createdElements.indexOf($helpBlock[0]) > -1) {
528
- $helpBlock.remove();
529
- }
530
-
531
- }
532
- );
533
-
534
- },
535
- collectErrors : function(includeEmpty) {
536
-
537
- var errorMessages = {};
538
- this.each(function (i, el) {
539
- var $el = $(el);
540
- var name = $el.attr("name");
541
- var errors = $el.triggerHandler("validation.validation", {includeEmpty: true});
542
- errorMessages[name] = $.extend(true, errors, errorMessages[name]);
543
- });
544
-
545
- $.each(errorMessages, function (i, el) {
546
- if (el.length === 0) {
547
- delete errorMessages[i];
548
- }
549
- });
550
-
551
- return errorMessages;
552
-
553
- },
554
- hasErrors: function() {
555
-
556
- var errorMessages = [];
557
-
558
- this.each(function (i, el) {
559
- errorMessages = errorMessages.concat(
560
- $(el).triggerHandler("getValidators.validation") ? $(el).triggerHandler("validation.validation", {submitting: true}) : []
561
- );
562
- });
563
-
564
- return (errorMessages.length > 0);
565
- },
566
- override : function (newDefaults) {
567
- defaults = $.extend(true, defaults, newDefaults);
568
- }
569
- },
570
- validatorTypes: {
571
- callback: {
572
- name: "callback",
573
- init: function ($this, name) {
574
- return {
575
- validatorName: name,
576
- callback: $this.data("validation" + name + "Callback"),
577
- lastValue: $this.val(),
578
- lastValid: true,
579
- lastFinished: true
580
- };
581
- },
582
- validate: function ($this, value, validator) {
583
- if (validator.lastValue === value && validator.lastFinished) {
584
- return !validator.lastValid;
585
- }
586
-
587
- if (validator.lastFinished === true)
588
- {
589
- validator.lastValue = value;
590
- validator.lastValid = true;
591
- validator.lastFinished = false;
592
-
593
- var rrjqbvValidator = validator;
594
- var rrjqbvThis = $this;
595
- executeFunctionByName(
596
- validator.callback,
597
- window,
598
- $this,
599
- value,
600
- function (data) {
601
- if (rrjqbvValidator.lastValue === data.value) {
602
- rrjqbvValidator.lastValid = data.valid;
603
- if (data.message) {
604
- rrjqbvValidator.message = data.message;
605
- }
606
- rrjqbvValidator.lastFinished = true;
607
- rrjqbvThis.data("validation" + rrjqbvValidator.validatorName + "Message", rrjqbvValidator.message);
608
- // Timeout is set to avoid problems with the events being considered 'already fired'
609
- setTimeout(function () {
610
- rrjqbvThis.trigger("change.validation");
611
- }, 1); // doesn't need a long timeout, just long enough for the event bubble to burst
612
- }
613
- }
614
- );
615
- }
616
-
617
- return false;
618
-
619
- }
620
- },
621
- ajax: {
622
- name: "ajax",
623
- init: function ($this, name) {
624
- return {
625
- validatorName: name,
626
- url: $this.data("validation" + name + "Ajax"),
627
- lastValue: $this.val(),
628
- lastValid: true,
629
- lastFinished: true
630
- };
631
- },
632
- validate: function ($this, value, validator) {
633
- if (""+validator.lastValue === ""+value && validator.lastFinished === true) {
634
- return validator.lastValid === false;
635
- }
636
-
637
- if (validator.lastFinished === true)
638
- {
639
- validator.lastValue = value;
640
- validator.lastValid = true;
641
- validator.lastFinished = false;
642
- $.ajax({
643
- url: validator.url,
644
- data: "value=" + value + "&field=" + $this.attr("name"),
645
- dataType: "json",
646
- success: function (data) {
647
- if (""+validator.lastValue === ""+data.value) {
648
- validator.lastValid = !!(data.valid);
649
- if (data.message) {
650
- validator.message = data.message;
651
- }
652
- validator.lastFinished = true;
653
- $this.data("validation" + validator.validatorName + "Message", validator.message);
654
- // Timeout is set to avoid problems with the events being considered 'already fired'
655
- setTimeout(function () {
656
- $this.trigger("change.validation");
657
- }, 1); // doesn't need a long timeout, just long enough for the event bubble to burst
658
- }
659
- },
660
- failure: function () {
661
- validator.lastValid = true;
662
- validator.message = "ajax call failed";
663
- validator.lastFinished = true;
664
- $this.data("validation" + validator.validatorName + "Message", validator.message);
665
- // Timeout is set to avoid problems with the events being considered 'already fired'
666
- setTimeout(function () {
667
- $this.trigger("change.validation");
668
- }, 1); // doesn't need a long timeout, just long enough for the event bubble to burst
669
- }
670
- });
671
- }
672
-
673
- return false;
674
-
675
- }
676
- },
677
- regex: {
678
- name: "regex",
679
- init: function ($this, name) {
680
- return {regex: regexFromString($this.data("validation" + name + "Regex"))};
681
- },
682
- validate: function ($this, value, validator) {
683
- return (!validator.regex.test(value) && ! validator.negative)
684
- || (validator.regex.test(value) && validator.negative);
685
- }
686
- },
687
- required: {
688
- name: "required",
689
- init: function ($this, name) {
690
- return {};
691
- },
692
- validate: function ($this, value, validator) {
693
- return !!(value.length === 0 && ! validator.negative)
694
- || !!(value.length > 0 && validator.negative);
695
- },
696
- blockSubmit: true
697
- },
698
- match: {
699
- name: "match",
700
- init: function ($this, name) {
701
- var element = $this.parents("form").first().find("[name=\"" + $this.data("validation" + name + "Match") + "\"]").first();
702
- element.bind("validation.validation", function () {
703
- $this.trigger("change.validation", {submitting: true});
704
- });
705
- return {"element": element};
706
- },
707
- validate: function ($this, value, validator) {
708
- return (value !== validator.element.val() && ! validator.negative)
709
- || (value === validator.element.val() && validator.negative);
710
- },
711
- blockSubmit: true
712
- },
713
- max: {
714
- name: "max",
715
- init: function ($this, name) {
716
- return {max: $this.data("validation" + name + "Max")};
717
- },
718
- validate: function ($this, value, validator) {
719
- return (parseFloat(value, 10) > parseFloat(validator.max, 10) && ! validator.negative)
720
- || (parseFloat(value, 10) <= parseFloat(validator.max, 10) && validator.negative);
721
- }
722
- },
723
- min: {
724
- name: "min",
725
- init: function ($this, name) {
726
- return {min: $this.data("validation" + name + "Min")};
727
- },
728
- validate: function ($this, value, validator) {
729
- return (parseFloat(value) < parseFloat(validator.min) && ! validator.negative)
730
- || (parseFloat(value) >= parseFloat(validator.min) && validator.negative);
731
- }
732
- },
733
- maxlength: {
734
- name: "maxlength",
735
- init: function ($this, name) {
736
- return {maxlength: $this.data("validation" + name + "Maxlength")};
737
- },
738
- validate: function ($this, value, validator) {
739
- return ((value.length > validator.maxlength) && ! validator.negative)
740
- || ((value.length <= validator.maxlength) && validator.negative);
741
- }
742
- },
743
- minlength: {
744
- name: "minlength",
745
- init: function ($this, name) {
746
- return {minlength: $this.data("validation" + name + "Minlength")};
747
- },
748
- validate: function ($this, value, validator) {
749
- return ((value.length < validator.minlength) && ! validator.negative)
750
- || ((value.length >= validator.minlength) && validator.negative);
751
- }
752
- },
753
- maxchecked: {
754
- name: "maxchecked",
755
- init: function ($this, name) {
756
- var elements = $this.parents("form").first().find("[name=\"" + $this.attr("name") + "\"]");
757
- elements.bind("click.validation", function () {
758
- $this.trigger("change.validation", {includeEmpty: true});
759
- });
760
- return {maxchecked: $this.data("validation" + name + "Maxchecked"), elements: elements};
761
- },
762
- validate: function ($this, value, validator) {
763
- return (validator.elements.filter(":checked").length > validator.maxchecked && ! validator.negative)
764
- || (validator.elements.filter(":checked").length <= validator.maxchecked && validator.negative);
765
- },
766
- blockSubmit: true
767
- },
768
- minchecked: {
769
- name: "minchecked",
770
- init: function ($this, name) {
771
- var elements = $this.parents("form").first().find("[name=\"" + $this.attr("name") + "\"]");
772
- elements.bind("click.validation", function () {
773
- $this.trigger("change.validation", {includeEmpty: true});
774
- });
775
- return {minchecked: $this.data("validation" + name + "Minchecked"), elements: elements};
776
- },
777
- validate: function ($this, value, validator) {
778
- return (validator.elements.filter(":checked").length < validator.minchecked && ! validator.negative)
779
- || (validator.elements.filter(":checked").length >= validator.minchecked && validator.negative);
780
- },
781
- blockSubmit: true
782
- }
783
- },
784
- builtInValidators: {
785
- email: {
786
- name: "Email",
787
- type: "shortcut",
788
- shortcut: "validemail"
789
- },
790
- validemail: {
791
- name: "Validemail",
792
- type: "regex",
793
- regex: "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\\.[A-Za-z]{2,4}",
794
- message: "Not a valid email address<!-- data-validation-validemail-message to override -->"
795
- },
796
- passwordagain: {
797
- name: "Passwordagain",
798
- type: "match",
799
- match: "password",
800
- message: "Does not match the given password<!-- data-validator-paswordagain-message to override -->"
801
- },
802
- positive: {
803
- name: "Positive",
804
- type: "shortcut",
805
- shortcut: "number,positivenumber"
806
- },
807
- negative: {
808
- name: "Negative",
809
- type: "shortcut",
810
- shortcut: "number,negativenumber"
811
- },
812
- number: {
813
- name: "Number",
814
- type: "regex",
815
- regex: "([+-]?\\\d+(\\\.\\\d*)?([eE][+-]?[0-9]+)?)?",
816
- message: "Must be a number<!-- data-validator-number-message to override -->"
817
- },
818
- integer: {
819
- name: "Integer",
820
- type: "regex",
821
- regex: "[+-]?\\\d+",
822
- message: "No decimal places allowed<!-- data-validator-integer-message to override -->"
823
- },
824
- positivenumber: {
825
- name: "Positivenumber",
826
- type: "min",
827
- min: 0,
828
- message: "Must be a positive number<!-- data-validator-positivenumber-message to override -->"
829
- },
830
- negativenumber: {
831
- name: "Negativenumber",
832
- type: "max",
833
- max: 0,
834
- message: "Must be a negative number<!-- data-validator-negativenumber-message to override -->"
835
- },
836
- required: {
837
- name: "Required",
838
- type: "required",
839
- message: "This is required<!-- data-validator-required-message to override -->"
840
- },
841
- checkone: {
842
- name: "Checkone",
843
- type: "minchecked",
844
- minchecked: 1,
845
- message: "Check at least one option<!-- data-validation-checkone-message to override -->"
846
- }
847
- }
848
- };
849
-
850
- var formatValidatorName = function (name) {
851
- return name
852
- .toLowerCase()
853
- .replace(
854
- /(^|\s)([a-z])/g ,
855
- function(m,p1,p2) {
856
- return p1+p2.toUpperCase();
857
- }
858
- )
859
- ;
860
- };
861
-
862
- var getValue = function ($this) {
863
- // Extract the value we're talking about
864
- var value = $this.val();
865
- var type = $this.attr("type");
866
- if (type === "checkbox") {
867
- value = ($this.is(":checked") ? value : "");
868
- }
869
- if (type === "radio") {
870
- value = ($('input[name="' + $this.attr("name") + '"]:checked').length > 0 ? value : "");
871
- }
872
- return value;
873
- };
874
-
875
- function regexFromString(inputstring) {
876
- return new RegExp("^" + inputstring + "$");
877
- }
878
-
879
- /**
880
- * Thanks to Jason Bunting via StackOverflow.com
881
- *
882
- * http://stackoverflow.com/questions/359788/how-to-execute-a-javascript-function-when-i-have-its-name-as-a-string#answer-359910
883
- * Short link: http://tinyurl.com/executeFunctionByName
884
- **/
885
- function executeFunctionByName(functionName, context /*, args*/) {
886
- var args = Array.prototype.slice.call(arguments).splice(2);
887
- var namespaces = functionName.split(".");
888
- var func = namespaces.pop();
889
- for(var i = 0; i < namespaces.length; i++) {
890
- context = context[namespaces[i]];
891
- }
892
- return context[func].apply(this, args);
893
- }
894
-
895
- $.fn.jqBootstrapValidation = function( method ) {
896
-
897
- if ( defaults.methods[method] ) {
898
- return defaults.methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));
899
- } else if ( typeof method === 'object' || ! method ) {
900
- return defaults.methods.init.apply( this, arguments );
901
- } else {
902
- $.error( 'Method ' + method + ' does not exist on jQuery.jqBootstrapValidation' );
903
- return null;
904
- }
905
-
906
- };
907
-
908
- $.jqBootstrapValidation = function (options) {
909
- $(":input").not("[type=image],[type=submit]").jqBootstrapValidation.apply(this,arguments);
910
- };
911
-
912
- })( jQuery );