yop 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/yop/config.rb +7 -0
- data/lib/yop/exceptions.rb +14 -2
- data/lib/yop/home.rb +7 -1
- data/lib/yop/templates.rb +83 -13
- data/lib/yop/ui.rb +27 -0
- data/lib/yop/version.rb +1 -1
- data/tests/bootstrap_tests.rb +15 -0
- data/tests/config_tests.rb +47 -0
- data/tests/exceptions_tests.rb +7 -0
- data/tests/home_tests.rb +35 -0
- data/tests/templates_tests.rb +251 -0
- data/tests/test_utils.rb +103 -0
- data/tests/tests.rb +5 -16
- data/tests/ui_tests.rb +42 -0
- data/tests/version_tests.rb +14 -0
- metadata +33 -3
- metadata.gz.sig +0 -0
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: ce8d5a9ab1ad1beba6340296cd5e98942ac659bf
         | 
| 4 | 
            +
              data.tar.gz: 3e33e2d2ac37d54986dfc75e605828dd232d3bb4
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: e6f44612f40053437ba7fae152cb5619f86e4ad71e8596af49ee0fa81a484a599568746788b84ff35394c0258a948b262592c7de061c180e1f4592f52faa5ab7
         | 
| 7 | 
            +
              data.tar.gz: 4a6d1b1e27767dec20b48b162a8a31c57c730d160d388b0c6ada55d2de2d836b072b4aca3fbe799a44ea6a25f3cde25c35c1744128ed0e62f1895dccc0f74332
         | 
    
        checksums.yaml.gz.sig
    CHANGED
    
    | Binary file | 
    
        data.tar.gz.sig
    CHANGED
    
    | Binary file | 
    
        data/lib/yop/config.rb
    CHANGED
    
    
    
        data/lib/yop/exceptions.rb
    CHANGED
    
    | @@ -1,4 +1,16 @@ | |
| 1 1 | 
             
            # -*- coding: UTF-8 -*-
         | 
| 2 2 |  | 
| 3 | 
            -
            #  | 
| 4 | 
            -
            class  | 
| 3 | 
            +
            # Base exception for Yop-related ones
         | 
| 4 | 
            +
            class YopException < Exception; end
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            # Raised when get_template fails to find a template
         | 
| 7 | 
            +
            class NonExistentTemplate < YopException; end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            # Raised when a template variable is undefined
         | 
| 10 | 
            +
            class UndefinedTemplateVariable < YopException; end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            # Raised when a template variable has a wrong value
         | 
| 13 | 
            +
            class BadTemplateVariableValue < YopException; end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            # Raised when a template contains an unsupported file type
         | 
| 16 | 
            +
            class UnsupportedFileType < YopException; end
         | 
    
        data/lib/yop/home.rb
    CHANGED
    
    | @@ -3,13 +3,19 @@ | |
| 3 3 | 
             
            require "fileutils"
         | 
| 4 4 |  | 
| 5 5 | 
             
            module Yop
         | 
| 6 | 
            +
              # The base path used for all files
         | 
| 7 | 
            +
              @basepath = "~/.yop"
         | 
| 8 | 
            +
             | 
| 6 9 | 
             
              class << self
         | 
| 10 | 
            +
                # let applications change the base path
         | 
| 11 | 
            +
                attr_accessor :basepath
         | 
| 12 | 
            +
             | 
| 7 13 | 
             
                # Return the local Yop directory location. If an argument is given, it
         | 
| 8 14 | 
             
                # assumes it's a Yop subcomponent and returns its location.
         | 
| 9 15 | 
             
                # @param subcomponent [String] the subcomponent to look for
         | 
| 10 16 | 
             
                # @return [String] the path to the local Yop directory or its subcomponent
         | 
| 11 17 | 
             
                def home(subcomponent = "")
         | 
| 12 | 
            -
                  File.expand_path(" | 
| 18 | 
            +
                  File.expand_path("#{@basepath}/#{subcomponent}")
         | 
| 13 19 | 
             
                end
         | 
| 14 20 |  | 
| 15 21 | 
             
                # Initialize Yop's local directory
         | 
    
        data/lib/yop/templates.rb
    CHANGED
    
    | @@ -5,6 +5,7 @@ require "fileutils" | |
| 5 5 | 
             
            require_relative "home"
         | 
| 6 6 | 
             
            require_relative "config"
         | 
| 7 7 | 
             
            require_relative "exceptions"
         | 
| 8 | 
            +
            require_relative "ui"
         | 
| 8 9 |  | 
| 9 10 | 
             
            module Yop
         | 
| 10 11 | 
             
              class << self
         | 
| @@ -28,14 +29,24 @@ module Yop | |
| 28 29 | 
             
              class Template
         | 
| 29 30 | 
             
                include FileUtils
         | 
| 30 31 |  | 
| 32 | 
            +
                # The UI used to get unknown variables
         | 
| 33 | 
            +
                # @param value [Yop::UI]
         | 
| 34 | 
            +
                # @return [Yop::UI]
         | 
| 35 | 
            +
                attr_writer :ui
         | 
| 36 | 
            +
             | 
| 31 37 | 
             
                # Create a new template from a base directory
         | 
| 32 38 | 
             
                # @param base_directory [String] a path to an existing directory which will
         | 
| 33 | 
            -
                # | 
| 34 | 
            -
                # | 
| 35 | 
            -
                #  | 
| 36 | 
            -
                 | 
| 39 | 
            +
                #        be used as a source when this template will be applied
         | 
| 40 | 
            +
                # @param vars [Hash] variables to use in this template. If a variable is
         | 
| 41 | 
            +
                #        found in the template but isn't in the hash it'll be retrieved
         | 
| 42 | 
            +
                #        from the template's ui (default is Yop::TerminalUI).
         | 
| 43 | 
            +
                # @param config [Hash] additional configuration options
         | 
| 44 | 
            +
                def initialize(base_directory, vars = {}, config = {})
         | 
| 37 45 | 
             
                  @base = base_directory
         | 
| 38 46 | 
             
                  @vars = vars
         | 
| 47 | 
            +
                  @config = config
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                  compile_var_pattern!
         | 
| 39 50 | 
             
                end
         | 
| 40 51 |  | 
| 41 52 | 
             
                # Apply the template on a directory. It creates it if it doesn't exist,
         | 
| @@ -54,8 +65,11 @@ module Yop | |
| 54 65 | 
             
                      next if skip? path
         | 
| 55 66 |  | 
| 56 67 | 
             
                      source = "#{@base}/#{path}"
         | 
| 68 | 
            +
                      path = replace_vars_in_path path
         | 
| 57 69 |  | 
| 58 | 
            -
                      if File. | 
| 70 | 
            +
                      if File.symlink? source
         | 
| 71 | 
            +
                        copy_entry source, path
         | 
| 72 | 
            +
                      elsif File.directory? source
         | 
| 59 73 | 
             
                        mkdir_p path
         | 
| 60 74 | 
             
                      elsif File.file? source
         | 
| 61 75 | 
             
                        File.open(path, "w") do |f|
         | 
| @@ -63,34 +77,90 @@ module Yop | |
| 63 77 | 
             
                          f.write(content)
         | 
| 64 78 | 
             
                        end
         | 
| 65 79 | 
             
                      else
         | 
| 66 | 
            -
                         | 
| 67 | 
            -
                        next
         | 
| 80 | 
            +
                        fail UnsupportedFileType, source
         | 
| 68 81 | 
             
                      end
         | 
| 69 82 | 
             
                      mirror_perms source, path
         | 
| 70 83 | 
             
                    end
         | 
| 71 84 | 
             
                  end
         | 
| 72 85 | 
             
                end
         | 
| 73 86 |  | 
| 87 | 
            +
                # Shortcut to add a template variable
         | 
| 88 | 
            +
                # @param name [Any] the variable's name
         | 
| 89 | 
            +
                # @param value [Any] the variable's value
         | 
| 90 | 
            +
                # @return [Any] the provided value
         | 
| 91 | 
            +
                def []=(name, value)
         | 
| 92 | 
            +
                  @vars[name.to_s] = value
         | 
| 93 | 
            +
                end
         | 
| 94 | 
            +
             | 
| 74 95 | 
             
                private
         | 
| 75 96 |  | 
| 97 | 
            +
                # @param path [String]
         | 
| 76 98 | 
             
                def ignore_extension?(path)
         | 
| 77 | 
            -
                  %w[ | 
| 99 | 
            +
                  %w[swp swo pyc class].any? { |e| path.end_with?(".#{e}") }
         | 
| 78 100 | 
             
                end
         | 
| 79 101 |  | 
| 102 | 
            +
                # @param path [String]
         | 
| 80 103 | 
             
                def skip?(path)
         | 
| 81 | 
            -
                   | 
| 82 | 
            -
             | 
| 83 | 
            -
                  [/\.git/, /.~$/, /__pycache__/].any? { |reg| path =~ reg }
         | 
| 104 | 
            +
                  ignore_extension?(path) ||
         | 
| 105 | 
            +
                    [/\.git/, /.~$/, /__pycache__/].any? { |reg| path =~ reg }
         | 
| 84 106 | 
             
                end
         | 
| 85 107 |  | 
| 108 | 
            +
                # Replace vars in a file
         | 
| 109 | 
            +
                # @param source [String] the file path
         | 
| 86 110 | 
             
                def replace_vars(source)
         | 
| 87 | 
            -
                   | 
| 88 | 
            -
             | 
| 111 | 
            +
                  replace_vars_in_string File.read(source)
         | 
| 112 | 
            +
                end
         | 
| 113 | 
            +
             | 
| 114 | 
            +
                # Replace vars in a string
         | 
| 115 | 
            +
                # @param text [String]
         | 
| 116 | 
            +
                def replace_vars_in_string(text)
         | 
| 117 | 
            +
                  text.gsub(@var_pattern) do
         | 
| 118 | 
            +
                    name = Regexp.last_match[1]
         | 
| 119 | 
            +
                    @vars[name] || @vars[name.to_sym] || get_var(name)
         | 
| 120 | 
            +
                  end
         | 
| 89 121 | 
             
                end
         | 
| 90 122 |  | 
| 123 | 
            +
                # Same as +replace_vars_in_string+ but might be modified in the future to
         | 
| 124 | 
            +
                # perform some specific path checks.
         | 
| 125 | 
            +
                # @param source [String]
         | 
| 126 | 
            +
                # @return [String]
         | 
| 127 | 
            +
                alias_method :replace_vars_in_path, :replace_vars_in_string
         | 
| 128 | 
            +
             | 
| 129 | 
            +
                # @param name [String]
         | 
| 130 | 
            +
                def get_var(name)
         | 
| 131 | 
            +
                  @vars[name] = (@ui ||= Yop::TerminalUI.new).get_var(name)
         | 
| 132 | 
            +
                end
         | 
| 133 | 
            +
             | 
| 134 | 
            +
                # Initialize @var_pattern
         | 
| 135 | 
            +
                def compile_var_pattern!
         | 
| 136 | 
            +
                  opening = Regexp.escape(@config[:before_var] || "{(")
         | 
| 137 | 
            +
                  closing = Regexp.escape(@config[:after_var] || ")}")
         | 
| 138 | 
            +
             | 
| 139 | 
            +
                  @var_pattern = /#{opening}([_A-Z][_A-Z0-9]*)#{closing}/
         | 
| 140 | 
            +
                end
         | 
| 141 | 
            +
             | 
| 142 | 
            +
                # Try to mirror the permissions from a file to another
         | 
| 143 | 
            +
                # @param source [String]
         | 
| 144 | 
            +
                # @param target [String]
         | 
| 145 | 
            +
                # @return [Boolean] +true+ if the permissions were successfully mirrored
         | 
| 91 146 | 
             
                def mirror_perms(source, target)
         | 
| 147 | 
            +
                  return mirror_perms_symlink(source, target) if File.symlink? source
         | 
| 92 148 | 
             
                  mode = File.new(source).stat.mode
         | 
| 93 149 | 
             
                  File.chmod(mode, target)
         | 
| 150 | 
            +
                  true
         | 
| 151 | 
            +
                end
         | 
| 152 | 
            +
             | 
| 153 | 
            +
                # Try to mirror the permissions from a symlink to another. Use
         | 
| 154 | 
            +
                # +mirror_perms+ if you're not sure if +source+ is a symlink.
         | 
| 155 | 
            +
                # @param source [String]
         | 
| 156 | 
            +
                # @param target [String]
         | 
| 157 | 
            +
                # @return [Boolean] +true+ if the permissions were successfully mirrored
         | 
| 158 | 
            +
                def mirror_perms_symlink(source, target)
         | 
| 159 | 
            +
                  mode = File.new(source).lstat.mode
         | 
| 160 | 
            +
                  File.lchmod(mode, target)
         | 
| 161 | 
            +
                  true
         | 
| 162 | 
            +
                rescue NotImplementedError
         | 
| 163 | 
            +
                  false
         | 
| 94 164 | 
             
                end
         | 
| 95 165 | 
             
              end
         | 
| 96 166 | 
             
            end
         | 
    
        data/lib/yop/ui.rb
    ADDED
    
    | @@ -0,0 +1,27 @@ | |
| 1 | 
            +
            # -*- coding: UTF-8 -*-
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require_relative "exceptions"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module Yop
         | 
| 6 | 
            +
              # A base UI class
         | 
| 7 | 
            +
              class UI
         | 
| 8 | 
            +
                # get a variable's value. It'll fail with +UndefinedTemplateVariable+ if
         | 
| 9 | 
            +
                # the variable can't be found.
         | 
| 10 | 
            +
                # @param name [String] the variable's name
         | 
| 11 | 
            +
                # @return [Any]
         | 
| 12 | 
            +
                def get_var(name)
         | 
| 13 | 
            +
                  fail UndefinedTemplateVariable, name
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
              # A terminal UI
         | 
| 18 | 
            +
              class TerminalUI < UI
         | 
| 19 | 
            +
                # Get a variable's value from the terminal
         | 
| 20 | 
            +
                def get_var(name)
         | 
| 21 | 
            +
                  print "#{name} = "
         | 
| 22 | 
            +
                  $stdin.readline.chomp
         | 
| 23 | 
            +
                rescue EOFError
         | 
| 24 | 
            +
                  super
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
            end
         | 
    
        data/lib/yop/version.rb
    CHANGED
    
    
| @@ -0,0 +1,15 @@ | |
| 1 | 
            +
            # -*- coding: UTF-8 -*-
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require "yop/bootstrap"
         | 
| 4 | 
            +
            require_relative "test_utils"
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            class YopBootstrapTests < YopTestCase
         | 
| 7 | 
            +
             | 
| 8 | 
            +
              # == #bootstrap == #
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              def test_bootstrap_raise_if_template_doesnt_exist
         | 
| 11 | 
            +
                assert_raise(NonExistentTemplate) do
         | 
| 12 | 
            +
                  Yop.bootstrap("dont-exist", Yop.home)
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
            end
         | 
| @@ -0,0 +1,47 @@ | |
| 1 | 
            +
            # -*- coding: UTF-8 -*-
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require "yop/config"
         | 
| 4 | 
            +
            require_relative "test_utils"
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            class YopConfigTests < YopTestCase
         | 
| 7 | 
            +
              def setup
         | 
| 8 | 
            +
                super
         | 
| 9 | 
            +
                Yop.init
         | 
| 10 | 
            +
                Yop.reload!
         | 
| 11 | 
            +
              end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
              # == #config == #
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              def test_default_empty_config
         | 
| 16 | 
            +
                assert_equal({}, Yop.config)
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              def test_default_empty_config_with_key
         | 
| 20 | 
            +
                assert_nil Yop.config(:foo)
         | 
| 21 | 
            +
              end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
              # == #config! == #
         | 
| 24 | 
            +
             | 
| 25 | 
            +
              def test_config_bang_set_value
         | 
| 26 | 
            +
                assert_nil Yop.config(:foo)
         | 
| 27 | 
            +
                Yop.config! :foo => 42
         | 
| 28 | 
            +
                assert_equal 42, Yop.config(:foo)
         | 
| 29 | 
            +
              end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
              def test_config_bang_set_multiple_values
         | 
| 32 | 
            +
                assert_nil Yop.config(:foo)
         | 
| 33 | 
            +
                Yop.config! :foo => 42, :bar => "foo"
         | 
| 34 | 
            +
                assert_equal 42, Yop.config(:foo)
         | 
| 35 | 
            +
                assert_equal "foo", Yop.config(:bar)
         | 
| 36 | 
            +
              end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
              # == #reload! == #
         | 
| 39 | 
            +
             | 
| 40 | 
            +
              def test_config_bang_set_value_preserved_after_reload
         | 
| 41 | 
            +
                assert_nil Yop.config(:foo)
         | 
| 42 | 
            +
                Yop.config! :foo => 42
         | 
| 43 | 
            +
                Yop.reload!
         | 
| 44 | 
            +
                assert_equal 42, Yop.config(:foo)
         | 
| 45 | 
            +
             | 
| 46 | 
            +
              end
         | 
| 47 | 
            +
            end
         | 
    
        data/tests/home_tests.rb
    ADDED
    
    | @@ -0,0 +1,35 @@ | |
| 1 | 
            +
            # -*- coding: UTF-8 -*-
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require "yop/home"
         | 
| 4 | 
            +
            require_relative "test_utils"
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            class YopHomeTests < YopTestCase
         | 
| 7 | 
            +
             | 
| 8 | 
            +
              # == #home == #
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              def test_home_no_subcomponent
         | 
| 11 | 
            +
                assert_equal @basepath, Yop.home
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
              def test_home_subcomponent
         | 
| 15 | 
            +
                assert_equal "#{@basepath}/foo/bar", Yop.home("foo/bar")
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
              # == #init == #
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              def test_init_create_dir
         | 
| 21 | 
            +
                assert_not_directory @basepath
         | 
| 22 | 
            +
                Yop.init
         | 
| 23 | 
            +
                assert_directory @basepath
         | 
| 24 | 
            +
              end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
              def test_init_create_template_dir
         | 
| 27 | 
            +
                Yop.init
         | 
| 28 | 
            +
                assert_directory "#{@basepath}/templates"
         | 
| 29 | 
            +
              end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
              def test_init_create_config_file
         | 
| 32 | 
            +
                Yop.init
         | 
| 33 | 
            +
                assert_true File.file?("#{@basepath}/config.yml")
         | 
| 34 | 
            +
              end
         | 
| 35 | 
            +
            end
         | 
| @@ -0,0 +1,251 @@ | |
| 1 | 
            +
            # -*- coding: UTF-8 -*-
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require "yop/templates"
         | 
| 4 | 
            +
            require "yop/exceptions"
         | 
| 5 | 
            +
            require_relative "test_utils"
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            class YopTemplatesTests < YopTestCase
         | 
| 8 | 
            +
              def setup
         | 
| 9 | 
            +
                super
         | 
| 10 | 
            +
                Yop.init
         | 
| 11 | 
            +
              end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
              # == #templates == #
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              def test_empty_templates_list
         | 
| 16 | 
            +
                assert_equal [], Yop.templates
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              def test_templates_list
         | 
| 20 | 
            +
                mkdir "templates/foo"
         | 
| 21 | 
            +
                mkdir "templates/bar"
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                lst = %w[bar foo].map { |t| "#{Yop.home("templates")}/#{t}" }
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                assert_equal lst, Yop.templates.sort
         | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
              # == #get_template == #
         | 
| 29 | 
            +
             | 
| 30 | 
            +
              def test_get_template_raise_if_doesnt_exist
         | 
| 31 | 
            +
                assert_raise(NonExistentTemplate) do
         | 
| 32 | 
            +
                  Yop.get_template("dont-exist")
         | 
| 33 | 
            +
                end
         | 
| 34 | 
            +
              end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
              def test_get_template_object
         | 
| 37 | 
            +
                mkdir "templates/foo"
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                assert_instance_of Yop::Template, Yop.get_template("foo")
         | 
| 40 | 
            +
              end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
              # == Template#apply == #
         | 
| 43 | 
            +
             | 
| 44 | 
            +
              def test_apply_empty_template_on_unexisting_dir
         | 
| 45 | 
            +
                mkdir "templates/foo"
         | 
| 46 | 
            +
                t = Yop.get_template("foo")
         | 
| 47 | 
            +
                mkdir "tmp"
         | 
| 48 | 
            +
                dest = "#{Yop.home}/tmp/test-foo"
         | 
| 49 | 
            +
                assert_nothing_raised { t.apply dest }
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                assert_directory dest
         | 
| 52 | 
            +
                assert_equal [], ls_Ra(dest)
         | 
| 53 | 
            +
              end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
              def test_apply_empty_template_on_existing_dir
         | 
| 56 | 
            +
                mkdir "templates/foo"
         | 
| 57 | 
            +
                t = Yop.get_template("foo")
         | 
| 58 | 
            +
                mkdir_p "tmp/test-foo"
         | 
| 59 | 
            +
                dest = "#{Yop.home}/tmp/test-foo"
         | 
| 60 | 
            +
                assert_nothing_raised { t.apply dest }
         | 
| 61 | 
            +
                assert_equal [], ls_Ra(dest)
         | 
| 62 | 
            +
              end
         | 
| 63 | 
            +
             | 
| 64 | 
            +
              def test_apply_empty_template_ignore_temporary_files
         | 
| 65 | 
            +
                root = "templates/foo"
         | 
| 66 | 
            +
                mkdir root
         | 
| 67 | 
            +
                touch "#{root}/foo~"
         | 
| 68 | 
            +
                touch "#{root}/.bar.swp"
         | 
| 69 | 
            +
                touch "#{root}/.qux.swo"
         | 
| 70 | 
            +
                t = Yop.get_template("foo")
         | 
| 71 | 
            +
                mkdir_p "tmp/test-foo"
         | 
| 72 | 
            +
                dest = "#{Yop.home}/tmp/test-foo"
         | 
| 73 | 
            +
                assert_nothing_raised { t.apply dest }
         | 
| 74 | 
            +
                assert_equal [], ls_Ra(dest)
         | 
| 75 | 
            +
              end
         | 
| 76 | 
            +
             | 
| 77 | 
            +
              def test_apply_empty_template_ignore_git_dir
         | 
| 78 | 
            +
                mkdir_p "templates/foo/.git"
         | 
| 79 | 
            +
                t = Yop.get_template("foo")
         | 
| 80 | 
            +
                mkdir_p "tmp/test-foo"
         | 
| 81 | 
            +
                dest = "#{Yop.home}/tmp/test-foo"
         | 
| 82 | 
            +
                assert_nothing_raised { t.apply dest }
         | 
| 83 | 
            +
                assert_equal [], ls_Ra(dest)
         | 
| 84 | 
            +
              end
         | 
| 85 | 
            +
             | 
| 86 | 
            +
              def test_apply_dirs_only
         | 
| 87 | 
            +
                mkdir_p "templates/foo/bar"
         | 
| 88 | 
            +
                t = Yop.get_template("foo")
         | 
| 89 | 
            +
                mkdir_p "tmp/test-foo"
         | 
| 90 | 
            +
                dest = "#{Yop.home}/tmp/test-foo"
         | 
| 91 | 
            +
                assert_nothing_raised { t.apply dest }
         | 
| 92 | 
            +
                assert_directory "#{dest}/bar"
         | 
| 93 | 
            +
              end
         | 
| 94 | 
            +
             | 
| 95 | 
            +
              def test_apply_dirs_with_empty_file
         | 
| 96 | 
            +
                mkdir_p "templates/foo/bar"
         | 
| 97 | 
            +
                touch "templates/foo/barqux"
         | 
| 98 | 
            +
                t = Yop.get_template("foo")
         | 
| 99 | 
            +
                mkdir_p "tmp/test-foo"
         | 
| 100 | 
            +
                dest = "#{Yop.home}/tmp/test-foo"
         | 
| 101 | 
            +
                assert_nothing_raised { t.apply dest }
         | 
| 102 | 
            +
                assert_directory "#{dest}/bar"
         | 
| 103 | 
            +
                assert_true File.file?("#{dest}/barqux")
         | 
| 104 | 
            +
              end
         | 
| 105 | 
            +
             | 
| 106 | 
            +
              # special files
         | 
| 107 | 
            +
             | 
| 108 | 
            +
              def test_apply_symlink
         | 
| 109 | 
            +
                mkdir_p "templates/foo/a"
         | 
| 110 | 
            +
                FileUtils.cd "#{Yop.home}/templates/foo" do
         | 
| 111 | 
            +
                  FileUtils.ln_s "a", "b"
         | 
| 112 | 
            +
                end
         | 
| 113 | 
            +
                t = Yop.get_template("foo")
         | 
| 114 | 
            +
                mkdir_p "tmp/test-foo"
         | 
| 115 | 
            +
                dest = "#{Yop.home}/tmp/test-foo"
         | 
| 116 | 
            +
                assert_nothing_raised { t.apply dest }
         | 
| 117 | 
            +
                assert_directory "#{dest}/a"
         | 
| 118 | 
            +
                assert_true File.symlink?("#{dest}/b")
         | 
| 119 | 
            +
              end
         | 
| 120 | 
            +
             | 
| 121 | 
            +
              def test_apply_fifo
         | 
| 122 | 
            +
                mkdir_p "templates/foo"
         | 
| 123 | 
            +
                mkfifo "templates/foo/pipe"
         | 
| 124 | 
            +
                t = Yop.get_template("foo")
         | 
| 125 | 
            +
                mkdir_p "tmp/test-foo"
         | 
| 126 | 
            +
                dest = "#{Yop.home}/tmp/test-foo"
         | 
| 127 | 
            +
                assert_raise(UnsupportedFileType) { t.apply dest }
         | 
| 128 | 
            +
              end
         | 
| 129 | 
            +
             | 
| 130 | 
            +
              # permissions
         | 
| 131 | 
            +
             | 
| 132 | 
            +
              def test_apply_executable_file
         | 
| 133 | 
            +
                mkdir_p "templates/foo"
         | 
| 134 | 
            +
                touch "templates/foo/exe"
         | 
| 135 | 
            +
                chmod 0744, "templates/foo/exe"
         | 
| 136 | 
            +
                assert_equal 0100744, File.new("#{Yop.home}/templates/foo/exe").stat.mode
         | 
| 137 | 
            +
                t = Yop.get_template("foo")
         | 
| 138 | 
            +
                mkdir_p "tmp/test-foo"
         | 
| 139 | 
            +
                dest = "#{Yop.home}/tmp/test-foo"
         | 
| 140 | 
            +
                assert_nothing_raised { t.apply dest }
         | 
| 141 | 
            +
                assert_equal 0100744, File.new("#{dest}/exe").stat.mode
         | 
| 142 | 
            +
              end
         | 
| 143 | 
            +
             | 
| 144 | 
            +
              def test_apply_symlink_dont_fail_if_cannot_set_permissions
         | 
| 145 | 
            +
                unimplement_lchmod!
         | 
| 146 | 
            +
                mkdir_p "templates/foo"
         | 
| 147 | 
            +
                touch "templates/foo/a"
         | 
| 148 | 
            +
                FileUtils.cd "#{Yop.home}/templates/foo" do
         | 
| 149 | 
            +
                  FileUtils.ln_s "a", "b"
         | 
| 150 | 
            +
                end
         | 
| 151 | 
            +
                t = Yop.get_template("foo")
         | 
| 152 | 
            +
                mkdir_p "tmp/test-foo"
         | 
| 153 | 
            +
                dest = "#{Yop.home}/tmp/test-foo"
         | 
| 154 | 
            +
                assert_nothing_raised { t.apply dest }
         | 
| 155 | 
            +
              end
         | 
| 156 | 
            +
             | 
| 157 | 
            +
              def test_apply_symlink_set_permissions_if_possible
         | 
| 158 | 
            +
                implement_lchmod!
         | 
| 159 | 
            +
                mkdir_p "templates/foo"
         | 
| 160 | 
            +
                touch "templates/foo/a"
         | 
| 161 | 
            +
                FileUtils.cd "#{Yop.home}/templates/foo" do
         | 
| 162 | 
            +
                  FileUtils.ln_s "a", "b"
         | 
| 163 | 
            +
                end
         | 
| 164 | 
            +
                t = Yop.get_template("foo")
         | 
| 165 | 
            +
                mkdir_p "tmp/test-foo"
         | 
| 166 | 
            +
                dest = "#{Yop.home}/tmp/test-foo"
         | 
| 167 | 
            +
                assert_nothing_raised { t.apply dest }
         | 
| 168 | 
            +
                assert_equal 2, @lchmod_args.length
         | 
| 169 | 
            +
                assert_equal "b", @lchmod_args[-1]
         | 
| 170 | 
            +
              end
         | 
| 171 | 
            +
             | 
| 172 | 
            +
              # TODO test dir permissions
         | 
| 173 | 
            +
             | 
| 174 | 
            +
              # placeholders in paths
         | 
| 175 | 
            +
             | 
| 176 | 
            +
              def test_apply_dir_with_variable_placeholder_string
         | 
| 177 | 
            +
                mkdir_p "templates/foo/{(SOME_VAR)}"
         | 
| 178 | 
            +
                t = Yop.get_template("foo")
         | 
| 179 | 
            +
                t["SOME_VAR"] = "barqux"
         | 
| 180 | 
            +
                dest = "#{Yop.home}/tmp/test-foo"
         | 
| 181 | 
            +
                assert_nothing_raised { t.apply dest }
         | 
| 182 | 
            +
                assert_directory "#{dest}/barqux"
         | 
| 183 | 
            +
                assert_not_directory "#{dest}/{(SOME_VAR)}"
         | 
| 184 | 
            +
              end
         | 
| 185 | 
            +
             | 
| 186 | 
            +
              def test_apply_dir_with_variable_placeholder_symbol
         | 
| 187 | 
            +
                mkdir_p "templates/foo/{(SOME_VAR)}"
         | 
| 188 | 
            +
                t = Yop.get_template("foo")
         | 
| 189 | 
            +
                t[:SOME_VAR] = "barqux"
         | 
| 190 | 
            +
                dest = "#{Yop.home}/tmp/test-foo"
         | 
| 191 | 
            +
                assert_nothing_raised { t.apply dest }
         | 
| 192 | 
            +
                assert_directory "#{dest}/barqux"
         | 
| 193 | 
            +
                assert_not_directory "#{dest}/{(SOME_VAR)}"
         | 
| 194 | 
            +
              end
         | 
| 195 | 
            +
             | 
| 196 | 
            +
              def test_apply_dir_with_variable_placeholder_symbol_from_config
         | 
| 197 | 
            +
                capture_output!
         | 
| 198 | 
            +
                set_input "not-barqux"
         | 
| 199 | 
            +
             | 
| 200 | 
            +
                mkdir_p "templates/foo/{(SOME_VAR)}"
         | 
| 201 | 
            +
                Yop.config! :vars => {:SOME_VAR => "barqux"}
         | 
| 202 | 
            +
                t = Yop.get_template("foo")
         | 
| 203 | 
            +
                dest = "#{Yop.home}/tmp/test-foo"
         | 
| 204 | 
            +
                assert_nothing_raised { t.apply dest }
         | 
| 205 | 
            +
                assert_directory "#{dest}/barqux"
         | 
| 206 | 
            +
                assert_not_directory "#{dest}/not-barqux"
         | 
| 207 | 
            +
                assert_not_directory "#{dest}/{(SOME_VAR)}"
         | 
| 208 | 
            +
              end
         | 
| 209 | 
            +
             | 
| 210 | 
            +
              # placeholders in files
         | 
| 211 | 
            +
             | 
| 212 | 
            +
              def test_apply_file_with_variable_placeholders_in_content
         | 
| 213 | 
            +
                mkdir_p "templates/foo"
         | 
| 214 | 
            +
                name = "afoo"
         | 
| 215 | 
            +
                author = "abar"
         | 
| 216 | 
            +
                File.open("#{Yop.home}/templates/foo/README", "w") do |f|
         | 
| 217 | 
            +
                  f.write <<-EOS
         | 
| 218 | 
            +
            # {(NAME)}
         | 
| 219 | 
            +
             | 
| 220 | 
            +
            This is the project {(NAME)} by {(AUTHOR)}.
         | 
| 221 | 
            +
            EOS
         | 
| 222 | 
            +
                end
         | 
| 223 | 
            +
                t = Yop.get_template("foo")
         | 
| 224 | 
            +
                t["NAME"] = name
         | 
| 225 | 
            +
                t["AUTHOR"] = author
         | 
| 226 | 
            +
                dest = "#{Yop.home}/tmp/test-foo"
         | 
| 227 | 
            +
                assert_nothing_raised { t.apply dest }
         | 
| 228 | 
            +
                expected = <<-EOS
         | 
| 229 | 
            +
            # #{name}
         | 
| 230 | 
            +
             | 
| 231 | 
            +
            This is the project #{name} by #{author}.
         | 
| 232 | 
            +
            EOS
         | 
| 233 | 
            +
                assert_true File.file?("#{dest}/README")
         | 
| 234 | 
            +
                assert_equal expected, File.read("#{dest}/README")
         | 
| 235 | 
            +
              end
         | 
| 236 | 
            +
             | 
| 237 | 
            +
              # UI variables
         | 
| 238 | 
            +
             | 
| 239 | 
            +
              def test_apply_dir_with_var_in_path_values_from_terminal
         | 
| 240 | 
            +
                capture_output!
         | 
| 241 | 
            +
                set_input "barqux"
         | 
| 242 | 
            +
                mkdir_p "templates/foo/{(SOME_VAR)}"
         | 
| 243 | 
            +
                t = Yop.get_template("foo")
         | 
| 244 | 
            +
                dest = "#{Yop.home}/tmp/test-foo"
         | 
| 245 | 
            +
                assert_nothing_raised { t.apply dest }
         | 
| 246 | 
            +
                assert_directory "#{dest}/barqux"
         | 
| 247 | 
            +
                assert_not_directory "#{dest}/{(SOME_VAR)}"
         | 
| 248 | 
            +
                assert_include read_output, "SOME_VAR"
         | 
| 249 | 
            +
              end
         | 
| 250 | 
            +
             | 
| 251 | 
            +
            end
         | 
    
        data/tests/test_utils.rb
    ADDED
    
    | @@ -0,0 +1,103 @@ | |
| 1 | 
            +
            # -*- coding: UTF-8 -*-
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require "fileutils"
         | 
| 4 | 
            +
            require "tmpdir"
         | 
| 5 | 
            +
            require "stringio"
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            require "yop"
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            # An enhanced TestCase class for Yop
         | 
| 10 | 
            +
            class YopTestCase < Test::Unit::TestCase
         | 
| 11 | 
            +
              def setup
         | 
| 12 | 
            +
                @old_basepath = Yop.basepath
         | 
| 13 | 
            +
                @basepath = Yop.basepath = "#{Dir.mktmpdir}/.yop"
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                @_stdin = $stdin
         | 
| 16 | 
            +
                @_stdout = $stdout
         | 
| 17 | 
            +
                @_stderr = $stderr
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                @pwd = Dir.pwd
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                @_lchmod = File.public_method(:lchmod)
         | 
| 22 | 
            +
                @lchmod_args = nil
         | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
              def teardown
         | 
| 26 | 
            +
                Yop.basepath = @old_basepath
         | 
| 27 | 
            +
                FileUtils.rm_rf @basepath
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                $stdin = @_stdin
         | 
| 30 | 
            +
                $stdout = @_stdout
         | 
| 31 | 
            +
                $stderr = @_stderr
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                FileUtils.cd @pwd
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                File.define_singleton_method :lchmod, @_lchmod
         | 
| 36 | 
            +
              end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
              def capture_output!
         | 
| 39 | 
            +
                $stdout = StringIO.new
         | 
| 40 | 
            +
              end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
              def set_input(text)
         | 
| 43 | 
            +
                $stdin = StringIO.new
         | 
| 44 | 
            +
                $stdin.write text
         | 
| 45 | 
            +
                $stdin.rewind
         | 
| 46 | 
            +
              end
         | 
| 47 | 
            +
             | 
| 48 | 
            +
              def read_output
         | 
| 49 | 
            +
                $stdout.rewind
         | 
| 50 | 
            +
                $stdout.read
         | 
| 51 | 
            +
              end
         | 
| 52 | 
            +
             | 
| 53 | 
            +
              # some systems don't implement File.lchmod
         | 
| 54 | 
            +
              def unimplement_lchmod!
         | 
| 55 | 
            +
                File.define_singleton_method(:lchmod) { |*_| fail NotImplementedError }
         | 
| 56 | 
            +
              end
         | 
| 57 | 
            +
             | 
| 58 | 
            +
              def implement_lchmod!
         | 
| 59 | 
            +
                s = self
         | 
| 60 | 
            +
                File.define_singleton_method(:lchmod) { |*args| s.set_lchmod_args args }
         | 
| 61 | 
            +
              end
         | 
| 62 | 
            +
             | 
| 63 | 
            +
              def set_lchmod_args args
         | 
| 64 | 
            +
                @lchmod_args = args
         | 
| 65 | 
            +
              end
         | 
| 66 | 
            +
             | 
| 67 | 
            +
              def assert_directory path
         | 
| 68 | 
            +
                assert_true File.directory?(path)
         | 
| 69 | 
            +
              end
         | 
| 70 | 
            +
             | 
| 71 | 
            +
              def assert_not_directory path
         | 
| 72 | 
            +
                assert_false File.directory?(path)
         | 
| 73 | 
            +
              end
         | 
| 74 | 
            +
             | 
| 75 | 
            +
              # ls -R -a
         | 
| 76 | 
            +
              def ls_Ra path
         | 
| 77 | 
            +
                Dir["#{path}/**/*", "#{path}/**/.*"].reject do |d|
         | 
| 78 | 
            +
                  # reject . & .. (for Ruby 1.9)
         | 
| 79 | 
            +
                  d =~ %r(/\.\.?$) && File.directory?(d)
         | 
| 80 | 
            +
                end
         | 
| 81 | 
            +
              end
         | 
| 82 | 
            +
             | 
| 83 | 
            +
              # proxy FileUtils methods by prepending a @basepath
         | 
| 84 | 
            +
              [:mkdir, :mkdir_p, :touch].each do |name|
         | 
| 85 | 
            +
                define_method(name) do |path|
         | 
| 86 | 
            +
                  FileUtils.send(name, "#{@basepath}/#{path}")
         | 
| 87 | 
            +
                end
         | 
| 88 | 
            +
              end
         | 
| 89 | 
            +
             | 
| 90 | 
            +
              def mkfifo path
         | 
| 91 | 
            +
                system "mkfifo", "#{@basepath}/#{path}"
         | 
| 92 | 
            +
              end
         | 
| 93 | 
            +
             | 
| 94 | 
            +
              def chmod(mode, path)
         | 
| 95 | 
            +
                FileUtils.chmod mode, "#{@basepath}/#{path}"
         | 
| 96 | 
            +
              end
         | 
| 97 | 
            +
             | 
| 98 | 
            +
              def system(*args)
         | 
| 99 | 
            +
                ret = Kernel.system(*args)
         | 
| 100 | 
            +
                assert_true $?.success?
         | 
| 101 | 
            +
                ret
         | 
| 102 | 
            +
              end
         | 
| 103 | 
            +
            end
         | 
    
        data/tests/tests.rb
    CHANGED
    
    | @@ -1,32 +1,21 @@ | |
| 1 1 | 
             
            #! /usr/bin/env ruby
         | 
| 2 2 | 
             
            # -*- coding: UTF-8 -*-
         | 
| 3 3 |  | 
| 4 | 
            -
            require "coveralls"
         | 
| 5 | 
            -
            Coveralls.wear!
         | 
| 6 | 
            -
             | 
| 7 4 | 
             
            require "test/unit"
         | 
| 8 5 | 
             
            require "simplecov"
         | 
| 9 6 |  | 
| 10 7 | 
             
            test_dir = File.expand_path(File.dirname(__FILE__))
         | 
| 11 8 |  | 
| 12 | 
            -
             | 
| 9 | 
            +
            if ENV["TRAVIS"]
         | 
| 10 | 
            +
              require "coveralls"
         | 
| 11 | 
            +
              Coveralls.wear!
         | 
| 12 | 
            +
              SimpleCov.formatter = Coveralls::SimpleCov::Formatter
         | 
| 13 | 
            +
            end
         | 
| 13 14 | 
             
            SimpleCov.start { add_filter "/tests/" }
         | 
| 14 15 |  | 
| 15 | 
            -
            require "yop"
         | 
| 16 | 
            -
             | 
| 17 16 | 
             
            for t in Dir[File.join(test_dir,  "*_tests.rb")]
         | 
| 18 17 | 
             
              require t
         | 
| 19 18 | 
             
            end
         | 
| 20 19 |  | 
| 21 | 
            -
            class YopTests < Test::Unit::TestCase
         | 
| 22 | 
            -
             | 
| 23 | 
            -
              # == #version == #
         | 
| 24 | 
            -
             | 
| 25 | 
            -
              def test_version
         | 
| 26 | 
            -
                assert(Yop.version =~ /^\d+\.\d+\.\d+/)
         | 
| 27 | 
            -
              end
         | 
| 28 | 
            -
             | 
| 29 | 
            -
            end
         | 
| 30 | 
            -
             | 
| 31 20 |  | 
| 32 21 | 
             
            exit Test::Unit::AutoRunner.run
         | 
    
        data/tests/ui_tests.rb
    ADDED
    
    | @@ -0,0 +1,42 @@ | |
| 1 | 
            +
            # -*- coding: UTF-8 -*-
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require "yop/ui"
         | 
| 4 | 
            +
            require "yop/exceptions"
         | 
| 5 | 
            +
            require_relative "test_utils"
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            class YopUITests < YopTestCase
         | 
| 8 | 
            +
              def setup
         | 
| 9 | 
            +
                super
         | 
| 10 | 
            +
                @term = Yop::TerminalUI.new
         | 
| 11 | 
            +
              end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
              def test_base_ui_get_variable_raise_exception
         | 
| 14 | 
            +
                ui = Yop::UI.new
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                assert_raise(UndefinedTemplateVariable) { ui.get_var "" }
         | 
| 17 | 
            +
                assert_raise(UndefinedTemplateVariable) { ui.get_var "foo" }
         | 
| 18 | 
            +
                assert_raise(UndefinedTemplateVariable) { ui.get_var :foo }
         | 
| 19 | 
            +
              end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
              def test_term_ui_print_var_name
         | 
| 22 | 
            +
                capture_output!
         | 
| 23 | 
            +
                set_input "value"
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                assert_nothing_raised { @term.get_var "bar" }
         | 
| 26 | 
            +
                assert_equal "bar = ", read_output
         | 
| 27 | 
            +
              end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
              def test_term_ui_raise_if_cant_read
         | 
| 30 | 
            +
                capture_output!
         | 
| 31 | 
            +
                set_input ""
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                assert_raise(UndefinedTemplateVariable) { @term.get_var "foo" }
         | 
| 34 | 
            +
              end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
              def test_term_ui_chomp_value
         | 
| 37 | 
            +
                capture_output!
         | 
| 38 | 
            +
                value = "something"
         | 
| 39 | 
            +
                set_input "#{value}\n"
         | 
| 40 | 
            +
                assert_equal value, @term.get_var("foo")
         | 
| 41 | 
            +
              end
         | 
| 42 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: yop
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0. | 
| 4 | 
            +
              version: 0.0.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Baptiste Fontaine
         | 
| @@ -30,7 +30,7 @@ cert_chain: | |
| 30 30 | 
             
              QnOQb8zHyNL+gq2m/mnZGrSehx+6AujokjOfHbmivYMfDATOQQx0eIBI18IhacZm
         | 
| 31 31 | 
             
              42WxhhIV2bwDtd77
         | 
| 32 32 | 
             
              -----END CERTIFICATE-----
         | 
| 33 | 
            -
            date: 2015- | 
| 33 | 
            +
            date: 2015-02-11 00:00:00.000000000 Z
         | 
| 34 34 | 
             
            dependencies:
         | 
| 35 35 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 36 36 | 
             
              name: trollop
         | 
| @@ -130,6 +130,20 @@ dependencies: | |
| 130 130 | 
             
                - - "~>"
         | 
| 131 131 | 
             
                  - !ruby/object:Gem::Version
         | 
| 132 132 | 
             
                    version: '0.28'
         | 
| 133 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 134 | 
            +
              name: rubygems-tasks
         | 
| 135 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 136 | 
            +
                requirements:
         | 
| 137 | 
            +
                - - "~>"
         | 
| 138 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 139 | 
            +
                    version: 0.2.4
         | 
| 140 | 
            +
              type: :development
         | 
| 141 | 
            +
              prerelease: false
         | 
| 142 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 143 | 
            +
                requirements:
         | 
| 144 | 
            +
                - - "~>"
         | 
| 145 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 146 | 
            +
                    version: 0.2.4
         | 
| 133 147 | 
             
            description: Yop bootstraps your projects from pre-defined templates
         | 
| 134 148 | 
             
            email: b@ptistefontaine.fr
         | 
| 135 149 | 
             
            executables:
         | 
| @@ -144,8 +158,17 @@ files: | |
| 144 158 | 
             
            - lib/yop/exceptions.rb
         | 
| 145 159 | 
             
            - lib/yop/home.rb
         | 
| 146 160 | 
             
            - lib/yop/templates.rb
         | 
| 161 | 
            +
            - lib/yop/ui.rb
         | 
| 147 162 | 
             
            - lib/yop/version.rb
         | 
| 163 | 
            +
            - tests/bootstrap_tests.rb
         | 
| 164 | 
            +
            - tests/config_tests.rb
         | 
| 165 | 
            +
            - tests/exceptions_tests.rb
         | 
| 166 | 
            +
            - tests/home_tests.rb
         | 
| 167 | 
            +
            - tests/templates_tests.rb
         | 
| 168 | 
            +
            - tests/test_utils.rb
         | 
| 148 169 | 
             
            - tests/tests.rb
         | 
| 170 | 
            +
            - tests/ui_tests.rb
         | 
| 171 | 
            +
            - tests/version_tests.rb
         | 
| 149 172 | 
             
            homepage: https://github.com/bfontaine/Yop
         | 
| 150 173 | 
             
            licenses:
         | 
| 151 174 | 
             
            - MIT
         | 
| @@ -171,5 +194,12 @@ signing_key: | |
| 171 194 | 
             
            specification_version: 4
         | 
| 172 195 | 
             
            summary: Templates-based projects manager
         | 
| 173 196 | 
             
            test_files:
         | 
| 197 | 
            +
            - tests/bootstrap_tests.rb
         | 
| 198 | 
            +
            - tests/config_tests.rb
         | 
| 199 | 
            +
            - tests/exceptions_tests.rb
         | 
| 200 | 
            +
            - tests/home_tests.rb
         | 
| 201 | 
            +
            - tests/templates_tests.rb
         | 
| 202 | 
            +
            - tests/test_utils.rb
         | 
| 174 203 | 
             
            - tests/tests.rb
         | 
| 175 | 
            -
             | 
| 204 | 
            +
            - tests/ui_tests.rb
         | 
| 205 | 
            +
            - tests/version_tests.rb
         | 
    
        metadata.gz.sig
    CHANGED
    
    | Binary file |