fairchild-poolparty 1.1.5 → 1.2.12
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +3 -0
- data/README.txt +13 -9
- data/Rakefile +0 -1
- data/VERSION.yml +2 -2
- data/bin/cloud +43 -46
- data/bin/cloud-bootstrap +33 -23
- data/bin/cloud-configure +33 -34
- data/bin/cloud-console +31 -9
- data/bin/cloud-contract +27 -11
- data/bin/cloud-expand +32 -19
- data/bin/cloud-list +43 -15
- data/bin/cloud-osxcopy +22 -12
- data/bin/cloud-provision +39 -24
- data/bin/cloud-run +37 -0
- data/bin/cloud-setup-dev +31 -20
- data/bin/cloud-show +40 -21
- data/bin/cloud-ssh +24 -15
- data/bin/cloud-start +33 -19
- data/bin/cloud-terminate +34 -15
- data/bin/cloud-verify +41 -0
- data/bin/install-poolparty +22 -0
- data/bin/server-cloud-elections +17 -23
- data/bin/server-list-active +23 -22
- data/bin/server-manage-election +14 -23
- data/bin/server-show-stats +1 -1
- data/config/jeweler.rb +6 -6
- data/examples/basic.rb +13 -14
- data/examples/fairchild.rb +25 -20
- data/examples/maize.rb +37 -0
- data/examples/metavirt_cloud.rb +33 -0
- data/examples/simple.rb +13 -0
- data/examples/vmrun_cloud.rb +17 -0
- data/lib/poolparty/{aska/aska.rb → aska.rb} +3 -0
- data/lib/poolparty/core/array.rb +13 -1
- data/lib/poolparty/core/exception.rb +1 -1
- data/lib/poolparty/core/hash.rb +63 -2
- data/lib/poolparty/core/integer.rb +11 -0
- data/lib/poolparty/core/object.rb +41 -19
- data/lib/poolparty/core/proc.rb +0 -7
- data/lib/poolparty/core/string.rb +35 -2
- data/lib/poolparty/core/symbol.rb +10 -0
- data/lib/poolparty/core/time.rb +6 -0
- data/lib/poolparty/dependency_resolver/chef_resolver.rb +40 -41
- data/lib/poolparty/dependency_resolver/dependency_resolver.rb +1 -1
- data/lib/poolparty/dependency_resolver/dependency_resolver_cloud_extensions.rb +6 -6
- data/lib/poolparty/dependency_resolver/puppet.rb +0 -1
- data/lib/poolparty/dependency_resolver/puppet_resolver.rb +14 -48
- data/lib/poolparty/exceptions/MasterException.rb +2 -2
- data/lib/poolparty/extra/duration.rb +96 -0
- data/lib/poolparty/helpers/binary.rb +1 -1
- data/lib/poolparty/helpers/console.rb +0 -5
- data/lib/poolparty/helpers/optioner.rb +18 -13
- data/lib/poolparty/installers/base_installer.rb +113 -0
- data/lib/poolparty/installers/ec2.rb +141 -0
- data/lib/poolparty/installers/vmrun.rb +144 -0
- data/lib/poolparty/lite.rb +5 -2
- data/lib/poolparty/modules/callbacks.rb +15 -2
- data/lib/poolparty/modules/cloud_dsl.rb +10 -8
- data/lib/poolparty/modules/cloud_resourcer.rb +39 -59
- data/lib/poolparty/modules/daemonizable.rb +4 -5
- data/lib/poolparty/modules/definable_resource.rb +6 -7
- data/lib/poolparty/modules/file_writer.rb +2 -2
- data/lib/poolparty/modules/output.rb +2 -2
- data/lib/poolparty/modules/pinger.rb +9 -2
- data/lib/poolparty/modules/pretty_printer.rb +1 -1
- data/lib/poolparty/modules/resourcing_dsl.rb +1 -29
- data/lib/poolparty/modules/searchable_paths.rb +100 -0
- data/lib/poolparty/modules/user_helpers.rb +1 -1
- data/lib/poolparty/monitors/base_monitor.rb +65 -0
- data/lib/poolparty/monitors/monitor_daemon.rb +168 -0
- data/lib/poolparty/monitors/monitor_rack.rb +29 -15
- data/lib/poolparty/monitors/monitors/{time_monitor.rb → clock_monitor.rb} +7 -2
- data/lib/poolparty/monitors/monitors/cloud_monitor.rb +36 -0
- data/lib/poolparty/monitors/monitors/elections_monitor.rb +76 -0
- data/lib/poolparty/monitors/monitors/neighborhood_monitor.rb +15 -12
- data/lib/poolparty/monitors/monitors/stats_monitor.rb +68 -49
- data/lib/poolparty/net/init.rb +12 -7
- data/lib/poolparty/net/remote_instance.rb +48 -64
- data/lib/poolparty/net/remoter/cloud_control.rb +0 -177
- data/lib/poolparty/net/remoter/connections.rb +19 -14
- data/lib/poolparty/net/remoter/interactive.rb +30 -24
- data/lib/poolparty/net/remoter_base.rb +140 -48
- data/lib/poolparty/net/remoter_bases/ec2/ec2.rb +119 -71
- data/lib/poolparty/net/remoter_bases/ec2/ec2_remote_instance.rb +42 -31
- data/lib/poolparty/net/remoter_bases/ec2/ec2_response_object.rb +75 -10
- data/lib/poolparty/net/remoter_bases/libvirt/libvirt.rb +73 -0
- data/lib/poolparty/net/remoter_bases/libvirt/libvirt_instance.rb +64 -0
- data/lib/poolparty/net/remoter_bases/metavirt/metavirt.rb +110 -0
- data/lib/poolparty/net/remoter_bases/metavirt/metavirt_instance.rb +37 -0
- data/lib/poolparty/net/remoter_bases/vmrun/utilities/vm_disk.rb +1 -1
- data/lib/poolparty/net/remoter_bases/vmrun/utilities/vmx.rb +1 -1
- data/lib/poolparty/net/remoter_bases/vmrun/utilities/vmx_file.rb +117 -117
- data/lib/poolparty/net/remoter_bases/vmrun/vmrun.rb +59 -43
- data/lib/poolparty/net/remoter_bases/vmrun/vmrun_instance.rb +37 -21
- data/lib/poolparty/plugins/apache2/apache.rb +266 -0
- data/lib/poolparty/plugins/apache2/passenger_site.rb +86 -0
- data/lib/poolparty/plugins/apache2/php5.rb +40 -0
- data/lib/poolparty/plugins/apache2/virtual_host.rb +53 -0
- data/lib/poolparty/plugins/authorized_key.rb +29 -0
- data/lib/poolparty/plugins/bind.rb +5 -6
- data/lib/poolparty/plugins/{chef.rb → chef/chef.rb} +32 -44
- data/lib/poolparty/plugins/chef/chef_deploy.rb +55 -0
- data/lib/poolparty/plugins/chef/chef_deploy_definition.rb +32 -0
- data/lib/poolparty/plugins/chef/chef_library.rb +7 -0
- data/lib/poolparty/plugins/chef/chef_recipe.rb +7 -0
- data/lib/poolparty/plugins/chef/include_chef_recipe.rb +14 -0
- data/lib/poolparty/plugins/deploy_directory.rb +41 -26
- data/lib/poolparty/plugins/gem_package.rb +42 -14
- data/lib/poolparty/plugins/git.rb +62 -33
- data/lib/poolparty/{base_packages → plugins}/haproxy.rb +21 -20
- data/lib/poolparty/plugins/heartbeat.rb +16 -0
- data/lib/poolparty/plugins/host.rb +39 -0
- data/lib/poolparty/plugins/line_in_file.rb +24 -2
- data/lib/poolparty/plugins/plugin_template.rb +13 -0
- data/lib/poolparty/{base_packages/poolparty.rb → plugins/poolparty_base_packages.rb} +4 -6
- data/lib/poolparty/plugins/rails_deploy.rb +128 -0
- data/lib/poolparty/{base_packages → plugins}/ruby.rb +3 -3
- data/lib/poolparty/plugins/runit.rb +17 -92
- data/lib/poolparty/plugins/sshkey.rb +50 -0
- data/lib/poolparty/plugins/svn.rb +10 -8
- data/lib/poolparty/poolparty/cloud.rb +224 -61
- data/lib/poolparty/poolparty/default.rb +22 -15
- data/lib/poolparty/poolparty/key.rb +19 -28
- data/lib/poolparty/poolparty/neighborhoods.rb +16 -5
- data/lib/poolparty/poolparty/plugin.rb +49 -13
- data/lib/poolparty/poolparty/pool.rb +32 -9
- data/lib/poolparty/poolparty/poolparty_base_class.rb +65 -45
- data/lib/poolparty/poolparty/resource.rb +24 -49
- data/lib/poolparty/poolparty/service.rb +11 -9
- data/lib/poolparty/provision/boot_strapper.rb +48 -37
- data/lib/poolparty/provision/configurations/chef.rb +6 -5
- data/lib/poolparty/provision/dr_configure.rb +25 -19
- data/lib/poolparty/resources/cron.rb +37 -4
- data/lib/poolparty/resources/directory.rb +30 -0
- data/lib/poolparty/resources/exec.rb +31 -1
- data/lib/poolparty/resources/file.rb +54 -12
- data/lib/poolparty/resources/group.rb +21 -0
- data/lib/poolparty/resources/mount.rb +24 -4
- data/lib/poolparty/resources/package.rb +30 -6
- data/lib/poolparty/resources/remote_file.rb +33 -1
- data/lib/poolparty/resources/service.rb +22 -1
- data/lib/poolparty/resources/symlink.rb +37 -2
- data/lib/poolparty/resources/user.rb +25 -0
- data/lib/poolparty/resources/variable.rb +26 -1
- data/lib/poolparty/resources.rb +42 -0
- data/lib/poolparty/schema.rb +6 -8
- data/lib/poolparty/templates/apache2/apache2.conf +14 -0
- data/lib/poolparty/templates/apache2/base.conf.erb +168 -0
- data/lib/poolparty/templates/apache2/browser_fixes.conf.erb +26 -0
- data/lib/poolparty/templates/apache2/debian.conf.erb +675 -0
- data/lib/poolparty/templates/apache2/default-site.conf.erb +41 -0
- data/lib/poolparty/templates/apache2/directory_indexes.conf.erb +101 -0
- data/lib/poolparty/templates/apache2/logging-syslog.conf.erb +42 -0
- data/lib/poolparty/templates/apache2/mime-extras.conf.erb +211 -0
- data/lib/poolparty/templates/apache2/mime-minimal.conf.erb +15 -0
- data/lib/poolparty/templates/apache2/mpm-worker.conf.erb +20 -0
- data/lib/poolparty/templates/apache2/mpm-worker.erb +20 -0
- data/lib/poolparty/templates/apache2/passenger.conf.erb +20 -0
- data/lib/poolparty/templates/apache2/php.ini.erb +1253 -0
- data/lib/poolparty/templates/apache2/server-status.erb +19 -0
- data/lib/poolparty/templates/{gemrc → gemrc_template} +0 -0
- data/lib/poolparty/templates/haproxy.conf +2 -2
- data/lib/poolparty/templates/monitor.ru +13 -0
- data/lib/poolparty/templates/php.ini.erb +1253 -0
- data/lib/poolparty/verification/verifier_base.rb +10 -0
- data/lib/poolparty/verification/verifiers/http_match.rb +43 -0
- data/lib/poolparty/verification/verifiers/http_status.rb +59 -0
- data/lib/poolparty/verification/verifiers/ping.rb +18 -1
- data/lib/poolparty/verification/verify.rb +6 -0
- data/lib/poolparty.rb +14 -15
- data/lib/poolpartycl.rb +1 -1
- data/spec/bin/bin_spec_helper.rb +1 -0
- data/spec/bin/fixtures/bin_cloud_for_test.rb +0 -6
- data/spec/bin/server-list-active_spec.rb +4 -6
- data/spec/poolparty/core/object_spec.rb +1 -62
- data/spec/poolparty/core/ordered_hash_spec.rb +7 -7
- data/spec/poolparty/core/string_spec.rb +1 -1
- data/spec/poolparty/dependency_resolver/chef_resolver_spec.rb +0 -8
- data/spec/poolparty/dependency_resolver/dependency_resolver_cloud_extensions_spec.rb +35 -32
- data/spec/poolparty/extra/deployments_spec.rb +68 -68
- data/spec/poolparty/fixtures/clouds.json +1 -1
- data/spec/poolparty/fixtures/fake_key.pub +1 -0
- data/spec/poolparty/helpers/optioner_spec.rb +4 -11
- data/spec/poolparty/modules/cloud_resourcer_spec.rb +1 -1
- data/spec/poolparty/modules/searchable_paths_spec.rb +83 -0
- data/spec/poolparty/net/remote_instance_spec.rb +1 -2
- data/spec/poolparty/net/remoter_base_spec.rb +7 -11
- data/spec/poolparty/net/remoter_bases/ec2_mocks_and_stubs.rb +9 -11
- data/spec/poolparty/net/remoter_bases/ec2_remote_instance_spec.rb +6 -56
- data/spec/poolparty/net/remoter_bases/ec2_spec.rb +10 -7
- data/spec/poolparty/net/remoter_spec.rb +2 -3
- data/spec/poolparty/plugins/authorized_key_spec.rb +23 -0
- data/spec/poolparty/plugins/deploydirectory_spec.rb +64 -51
- data/spec/poolparty/plugins/git_spec.rb +8 -10
- data/spec/poolparty/poolparty/cloud_spec.rb +61 -64
- data/spec/poolparty/poolparty/configurers/files/ruby_basic.rb +2 -4
- data/spec/poolparty/poolparty/configurers/files/ruby_plugins.rb +1 -1
- data/spec/poolparty/poolparty/configurers/ruby_spec.rb +1 -6
- data/spec/poolparty/poolparty/default_spec.rb +23 -22
- data/spec/poolparty/poolparty/example_spec.rb +47 -26
- data/spec/poolparty/{base_packages → poolparty}/haproxy_spec.rb +1 -1
- data/spec/poolparty/{base_packages → poolparty}/heartbeat_spec.rb +1 -1
- data/spec/poolparty/poolparty/key_spec.rb +2 -2
- data/spec/poolparty/poolparty/neighborhoods_spec.rb +1 -1
- data/spec/poolparty/poolparty/plugin_model_spec.rb +13 -17
- data/spec/poolparty/poolparty/plugin_spec.rb +7 -7
- data/spec/poolparty/poolparty/pool_spec.rb +4 -10
- data/spec/poolparty/poolparty/resource_spec.rb +25 -29
- data/spec/poolparty/poolparty/script_spec.rb +1 -4
- data/spec/poolparty/poolparty/test_plugins/webserver.rb +27 -25
- data/spec/poolparty/resources/file_spec.rb +5 -4
- data/spec/poolparty/resources/sshkey_spec.rb +39 -40
- data/spec/poolparty/spec_helper.rb +9 -39
- data/tasks/poolparty.rake +29 -1
- data/tasks/spec.rake +39 -1
- data/test/fixtures/fake_clouds.rb +11 -0
- data/test/fixtures/metavirt_cloud.json +1 -0
- data/test/fixtures/test_key +1 -0
- data/test/poolparty/core/array_test.rb +11 -0
- data/test/poolparty/core/hash_test.rb +5 -7
- data/test/poolparty/core/object_test.rb +29 -0
- data/test/poolparty/dependency_resolver/chef_resolver_test.rb +82 -0
- data/test/poolparty/dependency_resolver/puppet_resolver_test.rb +5 -26
- data/test/poolparty/modules/callbacks_test.rb +1 -1
- data/test/poolparty/modules/cloud_dsl_test.rb +10 -8
- data/test/poolparty/monitors/test_base_monitor.rb +17 -0
- data/test/poolparty/monitors/test_monitor_rack.rb +26 -0
- data/test/poolparty/net/remoter_base_test.rb +17 -0
- data/test/poolparty/net/remoter_bases/libvirt/libvirt_test.rb +70 -0
- data/test/poolparty/net/remoter_bases/metavirt/metavirt_test.rb +81 -0
- data/test/poolparty/net/remoter_bases/vmrun/vmrun_test.rb +58 -27
- data/test/poolparty/plugins/chef_deploy_test.rb +37 -0
- data/test/poolparty/plugins/chef_plugin_test.rb +23 -0
- data/test/poolparty/plugins/rails_deploy_test.rb +50 -0
- data/test/poolparty/poolparty/cloud_test.rb +65 -0
- data/test/poolparty/poolparty/isolated_cloud_test.rb +25 -0
- data/test/poolparty/poolparty/neighborhood_test.rb +1 -1
- data/test/poolparty/poolparty/plugin_test.rb +19 -0
- data/test/poolparty/poolparty/pool_test.rb +22 -0
- data/test/poolparty/poolparty/poolparty_base_class_test.rb +53 -15
- data/test/poolparty/poolparty/schema_test.rb +13 -0
- data/test/poolparty/poolparty/template_test.rb +6 -6
- data/test/poolparty/verification/verify_test.rb +7 -3
- data/test/test_helper.rb +15 -4
- data/test/test_methods.rb +11 -0
- data/vendor/chef/apache2/attributes/apache.rb +1 -1
- data/vendor/gems/dslify/LICENSE +20 -0
- data/vendor/gems/dslify/README.rdoc +33 -0
- data/vendor/gems/dslify/Rakefile +56 -0
- data/vendor/gems/dslify/VERSION.yml +4 -0
- data/vendor/gems/dslify/dslify.gemspec +29 -0
- data/vendor/gems/dslify/lib/dslify.rb +81 -0
- data/vendor/gems/dslify/test/dslify_test.rb +283 -0
- data/vendor/gems/dslify/test/test_helper.rb +7 -0
- data/vendor/gems/git-style-binaries/README.markdown +280 -0
- data/vendor/gems/git-style-binaries/Rakefile +64 -0
- data/vendor/gems/git-style-binaries/VERSION.yml +4 -0
- data/vendor/gems/git-style-binaries/doc/EXAMPLES +1 -0
- data/vendor/gems/git-style-binaries/doc/gsb-screencast.png +0 -0
- data/vendor/gems/git-style-binaries/doc/poolparty-binaries.screenplay +412 -0
- data/vendor/gems/git-style-binaries/git-style-binaries.gemspec +78 -0
- data/vendor/gems/git-style-binaries/lib/ext/colorize.rb +198 -0
- data/vendor/gems/git-style-binaries/lib/ext/core.rb +16 -0
- data/vendor/gems/git-style-binaries/lib/git-style-binary/autorunner.rb +21 -0
- data/vendor/gems/git-style-binaries/lib/git-style-binary/command.rb +204 -0
- data/vendor/gems/git-style-binaries/lib/git-style-binary/commands/help.rb +32 -0
- data/vendor/gems/git-style-binaries/lib/git-style-binary/helpers/name_resolver.rb +78 -0
- data/vendor/gems/git-style-binaries/lib/git-style-binary/helpers/pager.rb +37 -0
- data/vendor/gems/git-style-binaries/lib/git-style-binary/parser.rb +223 -0
- data/vendor/gems/git-style-binaries/lib/git-style-binary.rb +88 -0
- data/vendor/gems/git-style-binaries/test/fixtures/flickr +4 -0
- data/vendor/gems/git-style-binaries/test/fixtures/flickr-download +17 -0
- data/vendor/gems/git-style-binaries/test/fixtures/wordpress +42 -0
- data/vendor/gems/git-style-binaries/test/fixtures/wordpress-categories +18 -0
- data/vendor/gems/git-style-binaries/test/fixtures/wordpress-list +18 -0
- data/vendor/gems/git-style-binaries/test/fixtures/wordpress-post +26 -0
- data/vendor/gems/git-style-binaries/test/git-style-binary/command_test.rb +17 -0
- data/vendor/gems/git-style-binaries/test/git_style_binary_test.rb +21 -0
- data/vendor/gems/git-style-binaries/test/running_binaries_test.rb +224 -0
- data/vendor/gems/git-style-binaries/test/shoulda_macros/matching_stdio.rb +13 -0
- data/vendor/gems/git-style-binaries/test/test_helper.rb +28 -0
- data/vendor/gems/parenting/History.txt +4 -0
- data/vendor/gems/parenting/Manifest.txt +14 -0
- data/vendor/gems/parenting/PostInstall.txt +2 -0
- data/vendor/gems/parenting/README.rdoc +47 -0
- data/vendor/gems/parenting/Rakefile +28 -0
- data/vendor/gems/parenting/lib/parenting/parenting.rb +70 -0
- data/vendor/gems/parenting/lib/parenting.rb +10 -0
- data/vendor/gems/parenting/parenting.gemspec +39 -0
- data/vendor/gems/parenting/script/console +10 -0
- data/vendor/gems/parenting/script/destroy +14 -0
- data/vendor/gems/parenting/script/generate +14 -0
- data/vendor/gems/parenting/test/file_to_eval.rb +9 -0
- data/vendor/gems/parenting/test/test_helper.rb +5 -0
- data/vendor/gems/parenting/test/test_parenting.rb +117 -0
- data/vendor/gems/suitcase/LICENSE +20 -0
- data/vendor/gems/suitcase/README.rdoc +31 -0
- data/vendor/gems/suitcase/Rakefile +57 -0
- data/vendor/gems/suitcase/VERSION.yml +4 -0
- data/vendor/gems/suitcase/lib/suitcase/unzipper.rb +15 -0
- data/vendor/gems/suitcase/lib/suitcase/zipper.rb +167 -0
- data/vendor/gems/suitcase/lib/suitcase.rb +5 -0
- data/vendor/gems/suitcase/suitcase.gemspec +32 -0
- data/vendor/gems/suitcase/test/suitcase_test.rb +108 -0
- data/vendor/gems/suitcase/test/test_dir/box.rb +1 -0
- data/vendor/gems/suitcase/test/test_dir/gems/famoseagle-carrot-0.6.0.gem +0 -0
- data/vendor/gems/suitcase/test/test_dir/test.txt +1 -0
- data/vendor/gems/suitcase/test/test_helper.rb +12 -0
- data/vendor/gems/trollop/FAQ.txt +35 -0
- data/vendor/gems/trollop/History.txt +97 -0
- data/vendor/gems/trollop/Manifest.txt +7 -0
- data/vendor/gems/trollop/README.txt +40 -0
- data/vendor/gems/trollop/Rakefile +36 -0
- data/vendor/gems/trollop/lib/trollop.rb +735 -0
- data/vendor/gems/trollop/release-script.txt +13 -0
- data/vendor/gems/trollop/test/test_trollop.rb +1042 -0
- data/vendor/gems/trollop/www/index.html +167 -0
- metadata +205 -150
- data/bin/cloud-describe +0 -28
- data/bin/cloud-handle-load +0 -27
- data/bin/cloud-rsync +0 -28
- data/bin/cloud-spec +0 -41
- data/bin/messenger-get-current-nodes +0 -14
- data/bin/server-become-master +0 -24
- data/bin/server-build-messenger +0 -28
- data/bin/server-clean-cert-for +0 -15
- data/bin/server-provision +0 -32
- data/bin/server-start-agent +0 -15
- data/bin/server-start-client +0 -29
- data/bin/server-start-master +0 -26
- data/bin/server-start-node +0 -32
- data/bin/server-stop-client +0 -3
- data/bin/server-stop-master +0 -3
- data/bin/server-stop-node +0 -3
- data/bin/server-update-hosts +0 -49
- data/examples/poolparty.rb +0 -12
- data/lib/poolparty/base_packages/heartbeat.rb +0 -58
- data/lib/poolparty/base_packages/runit.rb +0 -21
- data/lib/poolparty/capistrano/cloud_tasks.rb +0 -10
- data/lib/poolparty/capistrano.rb +0 -54
- data/lib/poolparty/config/postlaunchmessage.txt +0 -5
- data/lib/poolparty/core/metaid.rb +0 -15
- data/lib/poolparty/core/module.rb +0 -40
- data/lib/poolparty/extra/deployments.rb +0 -31
- data/lib/poolparty/helpers/display.rb +0 -30
- data/lib/poolparty/net/messenger.rb +0 -57
- data/lib/poolparty/net/remote_bases.rb +0 -21
- data/lib/poolparty/plugins/chef_deploy.rb +0 -58
- data/lib/poolparty/plugins/dynomite.rb +0 -14
- data/lib/poolparty/plugins/nanite.rb +0 -41
- data/lib/poolparty/plugins/rsyncmirror.rb +0 -28
- data/lib/poolparty/plugins/tokyo_tyrant.rb +0 -23
- data/lib/poolparty/poolparty/plugin_model.rb +0 -45
- data/lib/poolparty/resources/host.rb +0 -16
- data/lib/poolparty/resources/sshkey.rb +0 -27
- data/lib/poolparty/services/conditional.rb +0 -46
- data/lib/poolparty/spec/core/string.rb +0 -18
- data/lib/poolparty/spec/matchers/a_spec_extensions_base.rb +0 -26
- data/lib/poolparty/spec/matchers/have_cron.rb +0 -28
- data/lib/poolparty/spec/matchers/have_deploydirectory.rb +0 -15
- data/lib/poolparty/spec/matchers/have_directory.rb +0 -31
- data/lib/poolparty/spec/matchers/have_exec.rb +0 -28
- data/lib/poolparty/spec/matchers/have_file.rb +0 -28
- data/lib/poolparty/spec/matchers/have_gempackage.rb +0 -28
- data/lib/poolparty/spec/matchers/have_git.rb +0 -28
- data/lib/poolparty/spec/matchers/have_host.rb +0 -28
- data/lib/poolparty/spec/matchers/have_mount.rb +0 -28
- data/lib/poolparty/spec/matchers/have_package.rb +0 -28
- data/lib/poolparty/spec/matchers/have_remotefile.rb +0 -28
- data/lib/poolparty/spec/matchers/have_rsyncmirror.rb +0 -28
- data/lib/poolparty/spec/matchers/have_service.rb +0 -28
- data/lib/poolparty/spec/matchers/have_sshkey.rb +0 -28
- data/lib/poolparty/spec/matchers/have_symlink.rb +0 -28
- data/lib/poolparty/spec/matchers/have_variable.rb +0 -32
- data/lib/poolparty/spec/spec/dynamic_matchers.rb +0 -63
- data/lib/poolparty/spec/spec/ensure_matchers_exist.rb +0 -7
- data/lib/poolparty/spec/templates/have_base.rb +0 -28
- data/lib/poolparty/spec.rb +0 -31
- data/spec/poolparty/core/module_spec.rb +0 -15
- data/spec/poolparty/helpers/display_spec.rb +0 -13
- data/spec/poolparty/id_rsa +0 -27
- data/spec/poolparty/net/messenger_spec.rb +0 -16
- data/spec/poolparty/resources/host_spec.rb +0 -35
- data/spec/poolparty/services/conditional_spec.rb +0 -52
- data/spec/poolparty/spec/core/string_spec.rb +0 -57
@@ -0,0 +1,412 @@
|
|
1
|
+
#!/usr/bin/env castanaut
|
2
|
+
# Castanaut screencast file. sudo gem install castanaut
|
3
|
+
|
4
|
+
# see if there is a terminal module
|
5
|
+
# download the 'ttyrecord' binary
|
6
|
+
# get castanaut src
|
7
|
+
# get applescript docs
|
8
|
+
plugin "terminal"
|
9
|
+
plugin "keystack"
|
10
|
+
|
11
|
+
def cleanup
|
12
|
+
FileUtils.rm_rf(File.expand_path("~/poolparty-gsb-test/bin"))
|
13
|
+
end
|
14
|
+
|
15
|
+
cleanup
|
16
|
+
|
17
|
+
perform "Introduction" do
|
18
|
+
launch "Terminal", at(10, 10, 800, 600)
|
19
|
+
pause 1
|
20
|
+
|
21
|
+
say <<-eos
|
22
|
+
Hey, welcome to the git-style-binaries screencast.
|
23
|
+
First, lets talk a little about what a git-style-binary even is.
|
24
|
+
eos
|
25
|
+
end
|
26
|
+
|
27
|
+
cli "cd #{ENV['POOLPARTY_SRC']}"
|
28
|
+
|
29
|
+
perform "Describing Git Binaries" do
|
30
|
+
pause 1
|
31
|
+
while_saying "as you can see here, git has over one hundred binaries that all perform various functions." do
|
32
|
+
type "git-"
|
33
|
+
pause 1
|
34
|
+
keystroke_literal('tab')
|
35
|
+
keystroke_literal('tab')
|
36
|
+
type "y"
|
37
|
+
pause 2
|
38
|
+
type " "
|
39
|
+
keystroke_using('u', :control)
|
40
|
+
end
|
41
|
+
|
42
|
+
while_saying "for instance, we have. git-add for adding files. git-status for
|
43
|
+
getting the status of our repo and so on" do
|
44
|
+
cli "git-add"
|
45
|
+
pause 2
|
46
|
+
cli "git-status"
|
47
|
+
end
|
48
|
+
|
49
|
+
while_saying "one of the nice things about the git-style-binaries is that you
|
50
|
+
can choose to call the command with or without the dash.. so for instance, i
|
51
|
+
can call either 'git-add' or 'git add'." do
|
52
|
+
cli "git-add"
|
53
|
+
pause 2
|
54
|
+
cli "git add"
|
55
|
+
end
|
56
|
+
|
57
|
+
perform "Describe Help" do
|
58
|
+
while_saying "the help in git is also very handy. for instance, if you call
|
59
|
+
git help it will give you a listing of many of the available subcommands" do
|
60
|
+
cli "git help"
|
61
|
+
move to(44, 94)
|
62
|
+
move to(133, 87)
|
63
|
+
move to(127, 346)
|
64
|
+
move to(41, 343)
|
65
|
+
move to(44, 94)
|
66
|
+
end
|
67
|
+
|
68
|
+
while_saying "you can also ask for help about any of the subcommands. if we
|
69
|
+
want to get help on 'git-add', we simply type 'git help add'" do
|
70
|
+
cli "git help add"
|
71
|
+
type 'q'
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
pause 2
|
76
|
+
|
77
|
+
perform "Describe Validation" do
|
78
|
+
while_saying "git also performs option validation, as you would expect. for
|
79
|
+
instance, if we provide an invalid option such as 'asdf' we get an error" do
|
80
|
+
cli "git add --asdf"
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
while_saying "the goal of the git-style-binaries ruby gem is to bring this
|
85
|
+
functionality to your own custom binaries in an easy-to-use way. so lets take
|
86
|
+
a look at an example"
|
87
|
+
pause 2
|
88
|
+
|
89
|
+
end
|
90
|
+
|
91
|
+
|
92
|
+
perform "Introducing PoolParty" do
|
93
|
+
while_saying "we're going to be using PoolParty's binaries as an example on
|
94
|
+
how to build git-style-binaries using this gem" do
|
95
|
+
end
|
96
|
+
|
97
|
+
while_saying "just in case you're not familiar with poolparty, its a cloud
|
98
|
+
management system by Ari Lerner. It allows you to manage your cloud using ruby
|
99
|
+
code and plugins rather than, say, folders of bash scripts." do
|
100
|
+
# launch "Safari", at(10, 10, 800, 600)
|
101
|
+
# url "http://www.poolpartyrb.com" # ?
|
102
|
+
# pause 3
|
103
|
+
# keystroke_literal_using('tab', :command) # go back to terminal
|
104
|
+
end
|
105
|
+
|
106
|
+
while_saying "in poolparty the main binary is 'cloud'. we can do cloud help to see all of the available subcommands." do
|
107
|
+
cli "cloud help"
|
108
|
+
end
|
109
|
+
|
110
|
+
while_saying "as you can see here we have 'cloud-start', for starting our
|
111
|
+
cloud, 'cloud configure' to reconfigure our cloud after we change something,
|
112
|
+
even cloud-ssh, to ssh directly into a node of our cloud." do
|
113
|
+
pause 2
|
114
|
+
shake 37, 499
|
115
|
+
pause 2
|
116
|
+
shake 37, 219
|
117
|
+
end
|
118
|
+
|
119
|
+
pause 2
|
120
|
+
type "q"
|
121
|
+
|
122
|
+
while_saying "what i'd like to do is, rather than just opening up the existing
|
123
|
+
binaries, Im going to build poolparty-like binaries from the ground up. this
|
124
|
+
way you can see how to do this on your own."
|
125
|
+
end
|
126
|
+
|
127
|
+
|
128
|
+
perform "entering poolpary" do
|
129
|
+
cli "cd ~"
|
130
|
+
cli "mkdir -p poolparty-gsb-test/bin"
|
131
|
+
cli "cd poolparty-gsb-test"
|
132
|
+
end
|
133
|
+
|
134
|
+
perform "creating primary" do
|
135
|
+
while_saying "first we need to create our *primary* binary." do
|
136
|
+
cli "vim bin/cloud"
|
137
|
+
pause 2
|
138
|
+
type_pre <<-eof
|
139
|
+
i#!/usr/bin/env ruby
|
140
|
+
require 'git-style-binary/command'
|
141
|
+
eof
|
142
|
+
cli ":w"
|
143
|
+
cli ":e"
|
144
|
+
end
|
145
|
+
|
146
|
+
while_saying "and thats it! thats all we need if we want the default functionality" do
|
147
|
+
cli ":x"
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
pause 1
|
152
|
+
|
153
|
+
# opt :cloud_name, "Name of the working cloud", :type => String, :default => nil
|
154
|
+
|
155
|
+
perform "create cloud-start" do
|
156
|
+
while_saying "now lets create cloud-start.
|
157
|
+
we start by requiring git-style-binary/command, just like last time.
|
158
|
+
now we open up a #command block.
|
159
|
+
specify a version.
|
160
|
+
specify a banner and a short description.
|
161
|
+
and we put what we want to do in the 'run' block." do
|
162
|
+
|
163
|
+
cli "vim bin/cloud-start"
|
164
|
+
pause 1
|
165
|
+
vim_insert <<-eof
|
166
|
+
#!/usr/bin/env ruby
|
167
|
+
eof
|
168
|
+
cli ":w"
|
169
|
+
cli ":e"
|
170
|
+
cli ":set paste" # no auto indending
|
171
|
+
type "j"
|
172
|
+
|
173
|
+
vim_insert <<-eof
|
174
|
+
require 'git-style-binary/command'
|
175
|
+
|
176
|
+
GitStyleBinary.command do
|
177
|
+
version "PoolParty cloud-start 0.0.1"
|
178
|
+
banner <<-\EOS
|
179
|
+
Usage: cloud-start \#{all_options_string}
|
180
|
+
|
181
|
+
EOS
|
182
|
+
eof
|
183
|
+
|
184
|
+
vim_insert <<-eof
|
185
|
+
short_desc "List the clouds"
|
186
|
+
|
187
|
+
run do |command|
|
188
|
+
puts "Options: \#{command.opts.inspect}"
|
189
|
+
end
|
190
|
+
end
|
191
|
+
eof
|
192
|
+
end
|
193
|
+
|
194
|
+
while_saying "the run block yields a command object. commands has an 'opts' attribute accessor, or you can just use brackets on 'command'" do
|
195
|
+
type ":0
|
196
|
+
cli ":w"
|
197
|
+
end
|
198
|
+
|
199
|
+
while_saying "you can add more options by calling 'opt' in the command block" do
|
200
|
+
vim_line_after("short_")
|
201
|
+
vim_insert " opt :name, \"the name of the cloud you are starting\", :type => String,
|
202
|
:default => \"default\""
|
203
|
+
end
|
204
|
+
|
205
|
+
while_saying "git-style-binaries uses the gem trollop for the option parsing.
|
206
|
+
trollop allows you to easily add validations and type conversions to options.
|
207
|
+
see their website for information on the syntax" do
|
208
|
+
end
|
209
|
+
# cli ":x"
|
210
|
+
pause 2
|
211
|
+
end
|
212
|
+
|
213
|
+
perform "running cloud-start" do
|
214
|
+
while_saying "now lets run cloud-start -h" do
|
215
|
+
keystroke_using('t', :command) # go back to terminal
|
216
|
+
pause 1
|
217
|
+
cli "cd poolparty-gsb-test"
|
218
|
+
cli "chmod +x bin/*"
|
219
|
+
cli "./bin/cloud-start -h"
|
220
|
+
end
|
221
|
+
pause 2
|
222
|
+
while_saying "notice a few things here. we've got automatic coloring, a list of all of our flags, and a list of all of our options. trollop has even automatically created the short flags for us" do
|
223
|
+
move to(39, 178)
|
224
|
+
pause 1
|
225
|
+
move to(103, 202)
|
226
|
+
pause 1
|
227
|
+
move to(79, 357)
|
228
|
+
move to(90, 522)
|
229
|
+
move to(79, 357)
|
230
|
+
pause 1
|
231
|
+
move to(203, 299)
|
232
|
+
move to(470, 300)
|
233
|
+
pause 1
|
234
|
+
shake 54, 441
|
235
|
+
end
|
236
|
+
pause 3
|
237
|
+
type "q"
|
238
|
+
keystroke_using('w', :command) # go back to terminal
|
239
|
+
pause 2
|
240
|
+
end
|
241
|
+
|
242
|
+
|
243
|
+
perform "creating cloud-ssh" do
|
244
|
+
|
245
|
+
while_saying "i'd like to show you a few more features of gsb. first lets create one more simple binary - cloud ssh" do
|
246
|
+
cli ":x"
|
247
|
+
pause 1
|
248
|
+
|
249
|
+
cli "vim bin/cloud-ssh"
|
250
|
+
pause 1
|
251
|
+
vim_insert <<-eof
|
252
|
+
#!/usr/bin/env ruby
|
253
|
+
eof
|
254
|
+
cli ":w"
|
255
|
+
cli ":e"
|
256
|
+
cli ":set paste" # no auto indending
|
257
|
+
type "j"
|
258
|
+
|
259
|
+
vim_insert <<-eof
|
260
|
+
require 'git-style-binary/command'
|
261
|
+
|
262
|
+
GitStyleBinary.command do
|
263
|
+
version "PoolParty cloud-ssh 0.0.1"
|
264
|
+
banner <<-\EOS
|
265
|
+
Usage: cloud-ssh \#{all_options_string}
|
266
|
+
|
267
|
+
EOS
|
268
|
+
eof
|
269
|
+
|
270
|
+
vim_insert <<-eof
|
271
|
+
short_desc "ssh into your cloud"
|
272
|
+
opt :name, "name of the cloud", :type => String
|
273
|
+
|
274
|
+
run do |command|
|
275
|
+
puts "you are sshing into \#{command[:name]}!"
|
276
|
+
end
|
277
|
+
end
|
278
|
+
eof
|
279
|
+
pause 1
|
280
|
+
cli ":x"
|
281
|
+
pause 2
|
282
|
+
end
|
283
|
+
|
284
|
+
end
|
285
|
+
|
286
|
+
perform "show help with both binaries" do
|
287
|
+
|
288
|
+
while_saying "now we have two binaries, cloud-start and cloud-ssh" do
|
289
|
+
cli "tree ."
|
290
|
+
end
|
291
|
+
|
292
|
+
while_saying "one of the cool things about gsb is that it will automatically pick up these files when you run the help commands" do
|
293
|
+
cli "./bin/cloud -h"
|
294
|
+
end
|
295
|
+
|
296
|
+
while_saying "see, here we have both cloud-start and cloud-ssh, along with their short descriptions, which are automatically loaded from their respective files" do
|
297
|
+
pause 0.5
|
298
|
+
shake 46, 401
|
299
|
+
pause 0.5
|
300
|
+
shake 49, 338
|
301
|
+
pause 0.5
|
302
|
+
move to(88, 291)
|
303
|
+
move to(354, 297)
|
304
|
+
pause 1
|
305
|
+
cli 'q'
|
306
|
+
end
|
307
|
+
|
308
|
+
end
|
309
|
+
|
310
|
+
perform "modify cloud primary" do
|
311
|
+
|
312
|
+
while_saying "notice that if we do cloud help start. we see that it already
|
313
|
+
has a number of options. these options come from the default binary options." do
|
314
|
+
cli "./bin/cloud help start"
|
315
|
+
pause 1
|
316
|
+
move to(123, 266)
|
317
|
+
pause 1
|
318
|
+
shake 116, 431
|
319
|
+
pause 1
|
320
|
+
move to(99, 515)
|
321
|
+
type 'q'
|
322
|
+
end
|
323
|
+
|
324
|
+
while_saying "gsb's get their options from three places 1) the default in code 2) the primary and 3) the subcommand itself" do
|
325
|
+
type "1) default options (in code)"
|
326
|
+
pause 0.5
|
327
|
+
keystroke_using('u', :control)
|
328
|
+
type "2) primary (ex: ./bin/cloud)"
|
329
|
+
pause 0.5
|
330
|
+
keystroke_using('u', :control)
|
331
|
+
type "3) subcommand (./bin/cloud-start)"
|
332
|
+
pause 0.5
|
333
|
+
keystroke_using('u', :control)
|
334
|
+
end
|
335
|
+
|
336
|
+
while_saying "if we add options to our primary these will be automatically inherited by the subcommands." do
|
337
|
+
end
|
338
|
+
|
339
|
+
while_saying "we want to be able to specify the name of our clouds.rb
|
340
|
+
specfile in any of the subcommands. so all we need to do is add that to the
|
341
|
+
primary.
|
342
|
+
|
343
|
+
now when we want to customize the primary we need to do a bit more work.
|
344
|
+
" do
|
345
|
+
cli "vim bin/cloud"
|
346
|
+
pause 2
|
347
|
+
type "jj"
|
348
|
+
type 'o' + ''
|
349
|
+
vim_insert <<-eof
|
350
|
+
GitStyleBinary.primary do
|
351
|
+
version "PoolParty cloud command"
|
352
|
+
banner <<-\EOS
|
353
|
+
eof
|
354
|
+
vim_insert <<-eof
|
355
|
+
Usage: cloud \\\#{all_options_string} COMMAND [ARGS]
|
356
|
+
|
357
|
+
The cloud subcommands commands are:
|
358
|
+
\\\#{GitStyleBinary.pretty_known_subcommands(:short).join(" ")}
|
359
|
+
EOS
|
360
|
+
opt :spec, "The name of the clouds.rb file", :type => String
|
361
|
+
|
362
|
+
run do
|
363
|
+
end
|
364
|
+
end
|
365
|
+
eof
|
366
|
+
pause 2
|
367
|
+
type ":x
|
368
|
+
end
|
369
|
+
end
|
370
|
+
|
371
|
+
perform "show subcommand opts" do
|
372
|
+
|
373
|
+
while_saying "now if we run the subcommand -h, we see that the spec option is there" do
|
374
|
+
cli "./bin/cloud-start -h"
|
375
|
+
pause 1
|
376
|
+
shake 54, 342
|
377
|
+
pause 1
|
378
|
+
type "q"
|
379
|
+
end
|
380
|
+
|
381
|
+
while_saying "you can also specify callbacks in your primary if you want to.
|
382
|
+
for instance, say you want to call something before the run block of each
|
383
|
+
subcommand. simply define a before_run block in your primary" do
|
384
|
+
|
385
|
+
cli "vim bin/cloud"
|
386
|
+
pause 2
|
387
|
+
vim_line_after("opt ")
|
388
|
+
vim_insert <<-eof
|
389
|
+
before_run do
|
390
|
+
puts "this happened before run"
|
391
|
+
end
|
392
|
+
eof
|
393
|
+
pause 2
|
394
|
+
type ":x
|
395
|
+
|
396
|
+
end
|
397
|
+
|
398
|
+
while_saying "now we run our subcommand again. and you can see that it gets the options!" do
|
399
|
+
cli "./bin/cloud-start"
|
400
|
+
end
|
401
|
+
|
402
|
+
end
|
403
|
+
|
404
|
+
perform "summary" do
|
405
|
+
while_saying "i hope this has been helpful for you. now go out and create your own git-style-binaries!"
|
406
|
+
end
|
407
|
+
|
408
|
+
|
409
|
+
at_exit do
|
410
|
+
cleanup
|
411
|
+
end
|
412
|
+
|
413
|
+
# vim: ft=ruby
|
@@ -0,0 +1,78 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = %q{git-style-binaries}
|
5
|
+
s.version = "0.1.10"
|
6
|
+
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
|
+
s.authors = ["Nate Murray"]
|
9
|
+
s.date = %q{2009-06-12}
|
10
|
+
s.description = %q{Ridiculously easy git-style binaries}
|
11
|
+
s.email = %q{nate@natemurray.com}
|
12
|
+
s.extra_rdoc_files = [
|
13
|
+
"README.markdown"
|
14
|
+
]
|
15
|
+
s.files = [
|
16
|
+
"README.markdown",
|
17
|
+
"Rakefile",
|
18
|
+
"VERSION.yml",
|
19
|
+
"lib/ext/colorize.rb",
|
20
|
+
"lib/ext/core.rb",
|
21
|
+
"lib/git-style-binary.rb",
|
22
|
+
"lib/git-style-binary/autorunner.rb",
|
23
|
+
"lib/git-style-binary/command.rb",
|
24
|
+
"lib/git-style-binary/commands/help.rb",
|
25
|
+
"lib/git-style-binary/helpers/name_resolver.rb",
|
26
|
+
"lib/git-style-binary/helpers/pager.rb",
|
27
|
+
"lib/git-style-binary/parser.rb",
|
28
|
+
"test/fixtures/flickr",
|
29
|
+
"test/fixtures/flickr-download",
|
30
|
+
"test/fixtures/wordpress",
|
31
|
+
"test/fixtures/wordpress-categories",
|
32
|
+
"test/fixtures/wordpress-list",
|
33
|
+
"test/fixtures/wordpress-post",
|
34
|
+
"test/git-style-binary/command_test.rb",
|
35
|
+
"test/git_style_binary_test.rb",
|
36
|
+
"test/running_binaries_test.rb",
|
37
|
+
"test/shoulda_macros/matching_stdio.rb",
|
38
|
+
"test/test_helper.rb",
|
39
|
+
"vendor/gems/trollop/FAQ.txt",
|
40
|
+
"vendor/gems/trollop/History.txt",
|
41
|
+
"vendor/gems/trollop/Manifest.txt",
|
42
|
+
"vendor/gems/trollop/README.txt",
|
43
|
+
"vendor/gems/trollop/Rakefile",
|
44
|
+
"vendor/gems/trollop/lib/trollop.rb",
|
45
|
+
"vendor/gems/trollop/release-script.txt",
|
46
|
+
"vendor/gems/trollop/test/test_trollop.rb",
|
47
|
+
"vendor/gems/trollop/www/index.html"
|
48
|
+
]
|
49
|
+
s.has_rdoc = true
|
50
|
+
s.homepage = %q{http://github.com/jashmenn/git-style-binaries}
|
51
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
52
|
+
s.require_paths = ["lib"]
|
53
|
+
s.rubygems_version = %q{1.3.2}
|
54
|
+
s.summary = %q{Add git-style binaries to your project easily.}
|
55
|
+
s.test_files = [
|
56
|
+
"test/git-style-binary/command_test.rb",
|
57
|
+
"test/git_style_binary_test.rb",
|
58
|
+
"test/running_binaries_test.rb",
|
59
|
+
"test/shoulda_macros/matching_stdio.rb",
|
60
|
+
"test/test_helper.rb"
|
61
|
+
]
|
62
|
+
|
63
|
+
if s.respond_to? :specification_version then
|
64
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
65
|
+
s.specification_version = 3
|
66
|
+
|
67
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
68
|
+
s.add_runtime_dependency(%q<trollop>, [">= 0"])
|
69
|
+
s.add_runtime_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
70
|
+
else
|
71
|
+
s.add_dependency(%q<trollop>, [">= 0"])
|
72
|
+
s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
73
|
+
end
|
74
|
+
else
|
75
|
+
s.add_dependency(%q<trollop>, [">= 0"])
|
76
|
+
s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,198 @@
|
|
1
|
+
#
|
2
|
+
# Colorize String class extension.
|
3
|
+
#
|
4
|
+
class String
|
5
|
+
|
6
|
+
#
|
7
|
+
# Version string
|
8
|
+
#
|
9
|
+
COLORIZE_VERSION = '0.5.6'
|
10
|
+
|
11
|
+
#
|
12
|
+
# Colors Hash
|
13
|
+
#
|
14
|
+
COLORS = {
|
15
|
+
:black => 0,
|
16
|
+
:red => 1,
|
17
|
+
:green => 2,
|
18
|
+
:yellow => 3,
|
19
|
+
:blue => 4,
|
20
|
+
:magenta => 5,
|
21
|
+
:cyan => 6,
|
22
|
+
:white => 7,
|
23
|
+
:default => 9,
|
24
|
+
|
25
|
+
:light_black => 10,
|
26
|
+
:light_red => 11,
|
27
|
+
:light_green => 12,
|
28
|
+
:light_yellow => 13,
|
29
|
+
:light_blue => 14,
|
30
|
+
:light_magenta => 15,
|
31
|
+
:light_cyan => 16,
|
32
|
+
:light_white => 17
|
33
|
+
}
|
34
|
+
|
35
|
+
#
|
36
|
+
# Modes Hash
|
37
|
+
#
|
38
|
+
MODES = {
|
39
|
+
:default => 0, # Turn off all attributes
|
40
|
+
#:bright => 1, # Set bright mode
|
41
|
+
:underline => 4, # Set underline mode
|
42
|
+
:blink => 5, # Set blink mode
|
43
|
+
:swap => 7, # Exchange foreground and background colors
|
44
|
+
:hide => 8 # Hide text (foreground color would be the same as background)
|
45
|
+
}
|
46
|
+
|
47
|
+
protected
|
48
|
+
|
49
|
+
#
|
50
|
+
# Set color values in new string intance
|
51
|
+
#
|
52
|
+
def set_color_parameters( params )
|
53
|
+
if (params.instance_of?(Hash))
|
54
|
+
@color = params[:color]
|
55
|
+
@background = params[:background]
|
56
|
+
@mode = params[:mode]
|
57
|
+
@uncolorized = params[:uncolorized]
|
58
|
+
self
|
59
|
+
else
|
60
|
+
nil
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
public
|
65
|
+
|
66
|
+
#
|
67
|
+
# Change color of string
|
68
|
+
#
|
69
|
+
# Examples:
|
70
|
+
#
|
71
|
+
# puts "This is blue".colorize( :blue )
|
72
|
+
# puts "This is light blue".colorize( :light_blue )
|
73
|
+
# puts "This is also blue".colorize( :color => :blue )
|
74
|
+
# puts "This is blue with red background".colorize( :color => :light_blue, :background => :red )
|
75
|
+
# puts "This is blue with red background".colorize( :light_blue ).colorize( :background => :red )
|
76
|
+
# puts "This is blue text on red".blue.on_red
|
77
|
+
# puts "This is red on blue".colorize( :red ).on_blue
|
78
|
+
# puts "This is red on blue and underline".colorize( :red ).on_blue.underline
|
79
|
+
# puts "This is blue text on red".blue.on_red.blink
|
80
|
+
#
|
81
|
+
def colorize( params )
|
82
|
+
|
83
|
+
unless STDOUT.use_color
|
84
|
+
return self unless STDOUT.isatty
|
85
|
+
end
|
86
|
+
return self if ENV['NO_COLOR']
|
87
|
+
|
88
|
+
begin
|
89
|
+
require 'Win32/Console/ANSI' if PLATFORM =~ /win32/
|
90
|
+
rescue LoadError
|
91
|
+
raise 'You must gem install win32console to use color on Windows'
|
92
|
+
end
|
93
|
+
|
94
|
+
color_parameters = {}
|
95
|
+
|
96
|
+
if (params.instance_of?(Hash))
|
97
|
+
color_parameters[:color] = COLORS[params[:color]]
|
98
|
+
color_parameters[:background] = COLORS[params[:background]]
|
99
|
+
color_parameters[:mode] = MODES[params[:mode]]
|
100
|
+
elsif (params.instance_of?(Symbol))
|
101
|
+
color_parameters[:color] = COLORS[params]
|
102
|
+
end
|
103
|
+
|
104
|
+
color_parameters[:color] ||= @color || 9
|
105
|
+
color_parameters[:background] ||= @background || 9
|
106
|
+
color_parameters[:mode] ||= @mode || 0
|
107
|
+
|
108
|
+
color_parameters[:uncolorized] ||= @uncolorized || self.dup
|
109
|
+
|
110
|
+
# calculate bright mode
|
111
|
+
color_parameters[:color] += 50 if color_parameters[:color] > 10
|
112
|
+
|
113
|
+
color_parameters[:background] += 50 if color_parameters[:background] > 10
|
114
|
+
|
115
|
+
return "\033[#{color_parameters[:mode]};#{color_parameters[:color]+30};#{color_parameters[:background]+40}m#{color_parameters[:uncolorized]}\033[0m".set_color_parameters( color_parameters )
|
116
|
+
end
|
117
|
+
|
118
|
+
|
119
|
+
#
|
120
|
+
# Return uncolorized string
|
121
|
+
#
|
122
|
+
def uncolorize
|
123
|
+
return @uncolorized || self
|
124
|
+
end
|
125
|
+
|
126
|
+
#
|
127
|
+
# Return true if sting is colorized
|
128
|
+
#
|
129
|
+
def colorized?
|
130
|
+
return !@uncolorized.nil?
|
131
|
+
end
|
132
|
+
|
133
|
+
#
|
134
|
+
# Make some color and on_color methods
|
135
|
+
#
|
136
|
+
COLORS.each_key do | key |
|
137
|
+
eval <<-"end_eval"
|
138
|
+
def #{key.to_s}
|
139
|
+
return self.colorize( :color => :#{key.to_s} )
|
140
|
+
end
|
141
|
+
def on_#{key.to_s}
|
142
|
+
return self.colorize( :background => :#{key.to_s} )
|
143
|
+
end
|
144
|
+
end_eval
|
145
|
+
end
|
146
|
+
|
147
|
+
#
|
148
|
+
# Methods for modes
|
149
|
+
#
|
150
|
+
MODES.each_key do | key |
|
151
|
+
eval <<-"end_eval"
|
152
|
+
def #{key.to_s}
|
153
|
+
return self.colorize( :mode => :#{key.to_s} )
|
154
|
+
end
|
155
|
+
end_eval
|
156
|
+
end
|
157
|
+
|
158
|
+
class << self
|
159
|
+
|
160
|
+
#
|
161
|
+
# Return array of available modes used by colorize method
|
162
|
+
#
|
163
|
+
def modes
|
164
|
+
keys = []
|
165
|
+
MODES.each_key do | key |
|
166
|
+
keys << key
|
167
|
+
end
|
168
|
+
keys
|
169
|
+
end
|
170
|
+
|
171
|
+
#
|
172
|
+
# Return array of available colors used by colorize method
|
173
|
+
#
|
174
|
+
def colors
|
175
|
+
keys = []
|
176
|
+
COLORS.each_key do | key |
|
177
|
+
keys << key
|
178
|
+
end
|
179
|
+
keys
|
180
|
+
end
|
181
|
+
|
182
|
+
#
|
183
|
+
# Display color matrix with color names.
|
184
|
+
#
|
185
|
+
def color_matrix( txt = "[X]" )
|
186
|
+
size = String.colors.length
|
187
|
+
String.colors.each do | color |
|
188
|
+
String.colors.each do | back |
|
189
|
+
print txt.colorize( :color => color, :background => back )
|
190
|
+
end
|
191
|
+
puts " < #{color}"
|
192
|
+
end
|
193
|
+
String.colors.reverse.each_with_index do | back, index |
|
194
|
+
puts "#{"|".rjust(txt.length)*(size-index)} < #{back}"
|
195
|
+
end
|
196
|
+
end
|
197
|
+
end
|
198
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class Object
|
2
|
+
def returning(value)
|
3
|
+
yield(value)
|
4
|
+
value
|
5
|
+
end unless Object.respond_to?(:returning)
|
6
|
+
end
|
7
|
+
|
8
|
+
class Symbol
|
9
|
+
def to_proc
|
10
|
+
Proc.new { |*args| args.shift.__send__(self, *args) }
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class IO
|
15
|
+
attr_accessor :use_color
|
16
|
+
end
|