dotfiled 0.1.0 → 0.2.0
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
- data/.github/workflows/main.yml +13 -4
- data/.github/workflows/rubocop.yml +23 -0
- data/.project.vim +33 -0
- data/.rspec +0 -2
- data/.rubocop.yml +18 -1
- data/.test_runner.yml +10 -0
- data/Gemfile +5 -2
- data/README.md +5 -2
- data/Rakefile +5 -1
- data/dotfiled.gemspec +3 -1
- data/exe/dotfiled +13 -0
- data/lib/dotfiled.rb +4 -2
- data/lib/dotfiled/alternative_file/file.rb +65 -0
- data/lib/dotfiled/alternative_file/finder.rb +91 -0
- data/lib/dotfiled/version.rb +1 -1
- metadata +10 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 6c436c1ed47bc95778085dd027239dbec73d18616333aea51579359c04c8ccca
         | 
| 4 | 
            +
              data.tar.gz: e37d9c7391565cc46479fd6d32b274fcb11ef73e92e3e6cfb2bbc841880ce1b5
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 8870d955bb26bbf289fdb97e020a26426ec44f85053491e3afc21ccd84430713a87b60132145b423e28d12c9abaf35106ca7c1c457e78d9f0820a50dcae12af5
         | 
| 7 | 
            +
              data.tar.gz: fe45c061706de45e349a42b4b24940170f42c5a1c0d067b921862886d21ac79b05d4fbaf557d53da6d0174c0e0908aee368481dcf21c05198ef46be5c6e6c729
         | 
    
        data/.github/workflows/main.yml
    CHANGED
    
    | @@ -1,6 +1,11 @@ | |
| 1 | 
            -
            name: Ruby
         | 
| 1 | 
            +
            name: Ruby RSpec
         | 
| 2 2 |  | 
| 3 | 
            -
            on: | 
| 3 | 
            +
            on:
         | 
| 4 | 
            +
              push:
         | 
| 5 | 
            +
                  branches:
         | 
| 6 | 
            +
                    - main
         | 
| 7 | 
            +
                    - master
         | 
| 8 | 
            +
              pull_request:
         | 
| 4 9 |  | 
| 5 10 | 
             
            jobs:
         | 
| 6 11 | 
             
              build:
         | 
| @@ -11,8 +16,12 @@ jobs: | |
| 11 16 | 
             
                  uses: ruby/setup-ruby@v1
         | 
| 12 17 | 
             
                  with:
         | 
| 13 18 | 
             
                    ruby-version: 3.0.0
         | 
| 14 | 
            -
                - name: Run the  | 
| 19 | 
            +
                - name: Run the rspec
         | 
| 15 20 | 
             
                  run: |
         | 
| 16 21 | 
             
                    gem install bundler -v 2.2.10
         | 
| 17 22 | 
             
                    bundle install
         | 
| 18 | 
            -
                    bundle exec  | 
| 23 | 
            +
                    bundle exec rspec
         | 
| 24 | 
            +
                - name: Coveralls
         | 
| 25 | 
            +
                  uses: coverallsapp/github-action@master
         | 
| 26 | 
            +
                  with:
         | 
| 27 | 
            +
                    github-token: ${{ secrets.GITHUB_TOKEN }}
         | 
| @@ -0,0 +1,23 @@ | |
| 1 | 
            +
            name: Rubocop
         | 
| 2 | 
            +
            on:
         | 
| 3 | 
            +
              push:
         | 
| 4 | 
            +
                  branches:
         | 
| 5 | 
            +
                    - main
         | 
| 6 | 
            +
                    - master
         | 
| 7 | 
            +
              pull_request:
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            jobs:
         | 
| 10 | 
            +
              build:
         | 
| 11 | 
            +
                runs-on: ubuntu-latest
         | 
| 12 | 
            +
                steps:
         | 
| 13 | 
            +
                - uses: actions/checkout@v2
         | 
| 14 | 
            +
                - name: Set up Ruby 3.0
         | 
| 15 | 
            +
                  uses: actions/setup-ruby@v1
         | 
| 16 | 
            +
                  with:
         | 
| 17 | 
            +
                    ruby-version: 3.0
         | 
| 18 | 
            +
                - name: Runs rubocop
         | 
| 19 | 
            +
                  run: |
         | 
| 20 | 
            +
                    sudo apt-get -yqq install libpq-dev
         | 
| 21 | 
            +
                    gem install bundler
         | 
| 22 | 
            +
                    bundle install --jobs 4 --retry 3
         | 
| 23 | 
            +
                    bundle exec rubocop
         | 
    
        data/.project.vim
    ADDED
    
    | @@ -0,0 +1,33 @@ | |
| 1 | 
            +
            autocmd FileType ruby nnoremap <buffer> <leader>T <esc>:call RunTestFile()<cr>
         | 
| 2 | 
            +
            autocmd FileType ruby nnoremap <buffer> <leader>t <esc>:call RunTestFileFilteredByLine()<cr>
         | 
| 3 | 
            +
            autocmd FileType ruby nnoremap <buffer> <leader>at <esc>:call RunAllTests()<cr>
         | 
| 4 | 
            +
            function! RubocopFixCs(target)
         | 
| 5 | 
            +
              let options=''
         | 
| 6 | 
            +
              let cmd = 'bundle exec rubocop'
         | 
| 7 | 
            +
             | 
| 8 | 
            +
              if filereadable('./bin/bundle')
         | 
| 9 | 
            +
                let cmd = './bin/bundle exec rubocop'
         | 
| 10 | 
            +
              endif
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              if filereadable('.rubocop.yml')
         | 
| 13 | 
            +
                let options = ' --config=.rubocop.yml '
         | 
| 14 | 
            +
              endif
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              let full_command = cmd . " -A " . options . a:target
         | 
| 17 | 
            +
              call ClearEchoAndExecute(full_command)
         | 
| 18 | 
            +
            endfunction
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            function! RunTestFileFilteredByLine()
         | 
| 21 | 
            +
              let command = "bundle exec run_test " . expand('%') . " --line=" . line(".")
         | 
| 22 | 
            +
              call ClearEchoAndExecute(command)
         | 
| 23 | 
            +
            endfunction
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            function! RunTestFile()
         | 
| 26 | 
            +
              let command = "bundle exec run_test " . expand('%')
         | 
| 27 | 
            +
              call ClearEchoAndExecute(command)
         | 
| 28 | 
            +
            endfunction
         | 
| 29 | 
            +
             | 
| 30 | 
            +
            function! RunAllTests()
         | 
| 31 | 
            +
              let command = "bundle exec run_test " . expand('%') . " --all"
         | 
| 32 | 
            +
              call ClearEchoAndExecute(command)
         | 
| 33 | 
            +
            endfunction
         | 
    
        data/.rspec
    CHANGED
    
    
    
        data/.rubocop.yml
    CHANGED
    
    | @@ -1,5 +1,6 @@ | |
| 1 1 | 
             
            AllCops:
         | 
| 2 | 
            -
              TargetRubyVersion: 2. | 
| 2 | 
            +
              TargetRubyVersion: 2.7
         | 
| 3 | 
            +
              NewCops: enable
         | 
| 3 4 |  | 
| 4 5 | 
             
            Style/StringLiterals:
         | 
| 5 6 | 
             
              Enabled: true
         | 
| @@ -11,3 +12,19 @@ Style/StringLiteralsInInterpolation: | |
| 11 12 |  | 
| 12 13 | 
             
            Layout/LineLength:
         | 
| 13 14 | 
             
              Max: 120
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            Metrics/BlockLength:
         | 
| 17 | 
            +
              Exclude:
         | 
| 18 | 
            +
                - "spec/**/*_spec.rb"
         | 
| 19 | 
            +
            Style/IfUnlessModifier:
         | 
| 20 | 
            +
              Enabled: false
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            Style/ClassAndModuleChildren:
         | 
| 23 | 
            +
              Enabled: false
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            Style/Documentation:
         | 
| 26 | 
            +
              Enabled: false
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            Style/GuardClause:
         | 
| 29 | 
            +
              Enabled: false
         | 
| 30 | 
            +
             | 
    
        data/.test_runner.yml
    ADDED
    
    
    
        data/Gemfile
    CHANGED
    
    | @@ -5,8 +5,11 @@ source "https://rubygems.org" | |
| 5 5 | 
             
            # Specify your gem's dependencies in dotfiled.gemspec
         | 
| 6 6 | 
             
            gemspec
         | 
| 7 7 |  | 
| 8 | 
            +
            gem "koine-test_runner"
         | 
| 8 9 | 
             
            gem "rake", "~> 13.0"
         | 
| 9 | 
            -
             | 
| 10 10 | 
             
            gem "rspec", "~> 3.0"
         | 
| 11 | 
            -
             | 
| 12 11 | 
             
            gem "rubocop", "~> 1.7"
         | 
| 12 | 
            +
            gem "rubocop-rake"
         | 
| 13 | 
            +
            gem "rubocop-rspec"
         | 
| 14 | 
            +
            gem "simplecov", require: false
         | 
| 15 | 
            +
            gem "simplecov-lcov", require: false
         | 
    
        data/README.md
    CHANGED
    
    | @@ -1,8 +1,11 @@ | |
| 1 1 | 
             
            # Dotfiled
         | 
| 2 2 |  | 
| 3 | 
            -
             | 
| 3 | 
            +
            Helpers for dotfiles
         | 
| 4 4 |  | 
| 5 | 
            -
             | 
| 5 | 
            +
            [](https://github.com/mjacobus/dotfiled/actions/workflows/main.yml)
         | 
| 6 | 
            +
            [](https://github.com/mjacobus/dotfiled/actions/workflows/rubocop.yml)
         | 
| 7 | 
            +
            [](https://codeclimate.com/github/mjacobus/dotfiled/maintainability)
         | 
| 8 | 
            +
            [](https://coveralls.io/github/mjacobus/dotfiled)
         | 
| 6 9 |  | 
| 7 10 | 
             
            ## Installation
         | 
| 8 11 |  | 
    
        data/Rakefile
    CHANGED
    
    
    
        data/dotfiled.gemspec
    CHANGED
    
    | @@ -1,5 +1,7 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 2 |  | 
| 3 | 
            +
            lib = File.expand_path("lib", __dir__)
         | 
| 4 | 
            +
            $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
         | 
| 3 5 | 
             
            require_relative "lib/dotfiled/version"
         | 
| 4 6 |  | 
| 5 7 | 
             
            Gem::Specification.new do |spec|
         | 
| @@ -12,7 +14,7 @@ Gem::Specification.new do |spec| | |
| 12 14 | 
             
              spec.description   = "Helpers for your dotfiles"
         | 
| 13 15 | 
             
              spec.homepage      = "https://github.com/mjacobus/dotfiled"
         | 
| 14 16 | 
             
              spec.license       = "MIT"
         | 
| 15 | 
            -
              spec.required_ruby_version = Gem::Requirement.new(">= 2. | 
| 17 | 
            +
              spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
         | 
| 16 18 |  | 
| 17 19 | 
             
              spec.metadata["allowed_push_host"] = "https://rubygems.org"
         | 
| 18 20 |  | 
    
        data/exe/dotfiled
    ADDED
    
    | @@ -0,0 +1,13 @@ | |
| 1 | 
            +
            #!/usr/bin/env ruby
         | 
| 2 | 
            +
            # frozen_string_literal: true
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            lib = File.expand_path("../lib", __dir__)
         | 
| 5 | 
            +
            $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            begin
         | 
| 8 | 
            +
              require "dotfiled"
         | 
| 9 | 
            +
            rescue LoadError
         | 
| 10 | 
            +
              puts "Could not load dotfiles"
         | 
| 11 | 
            +
            end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            puts Dotfiled::AlternativeFile::Finder.new.execute(ARGV.dup)
         | 
    
        data/lib/dotfiled.rb
    CHANGED
    
    | @@ -1,8 +1,10 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 2 |  | 
| 3 | 
            +
            require "pathname"
         | 
| 4 | 
            +
            require "fileutils"
         | 
| 3 5 | 
             
            require_relative "dotfiled/version"
         | 
| 6 | 
            +
            require_relative "dotfiled/alternative_file/file"
         | 
| 7 | 
            +
            require_relative "dotfiled/alternative_file/finder"
         | 
| 4 8 |  | 
| 5 9 | 
             
            module Dotfiled
         | 
| 6 | 
            -
              class Error < StandardError; end
         | 
| 7 | 
            -
              # Your code goes here...
         | 
| 8 10 | 
             
            end
         | 
| @@ -0,0 +1,65 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Dotfiled
         | 
| 4 | 
            +
              module AlternativeFile
         | 
| 5 | 
            +
                class File
         | 
| 6 | 
            +
                  def initialize(path = "")
         | 
| 7 | 
            +
                    @path = Pathname.new(path.to_s)
         | 
| 8 | 
            +
                  end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  def to_s
         | 
| 11 | 
            +
                    @path.to_s.gsub("//", "/")
         | 
| 12 | 
            +
                  end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                  def start_with?(prefix)
         | 
| 15 | 
            +
                    to_s.start_with?(prefix)
         | 
| 16 | 
            +
                  end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  def without_prefix(prefix)
         | 
| 19 | 
            +
                    sub(/^#{prefix}/, "")
         | 
| 20 | 
            +
                  end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                  def match?(*args)
         | 
| 23 | 
            +
                    to_s.match?(*args)
         | 
| 24 | 
            +
                  end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                  def split(char = "/")
         | 
| 27 | 
            +
                    to_s.split(char)
         | 
| 28 | 
            +
                  end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                  def sub(find, replace)
         | 
| 31 | 
            +
                    new(to_s.sub(find, replace))
         | 
| 32 | 
            +
                  end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                  def gsub(find, replace)
         | 
| 35 | 
            +
                    new(to_s.gsub(find, replace))
         | 
| 36 | 
            +
                  end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                  def join(other_part)
         | 
| 39 | 
            +
                    new(@path.join(other_part.to_s))
         | 
| 40 | 
            +
                  end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                  def prefix_with(prefix)
         | 
| 43 | 
            +
                    new(prefix).join(self)
         | 
| 44 | 
            +
                  end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                  def exist?
         | 
| 47 | 
            +
                    ::File.exist?(to_s)
         | 
| 48 | 
            +
                  end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                  private
         | 
| 51 | 
            +
             | 
| 52 | 
            +
                  def new(path)
         | 
| 53 | 
            +
                    self.class.new(path)
         | 
| 54 | 
            +
                  end
         | 
| 55 | 
            +
             | 
| 56 | 
            +
                  class << self
         | 
| 57 | 
            +
                    def join(parts)
         | 
| 58 | 
            +
                      file = File.new("")
         | 
| 59 | 
            +
                      parts.flatten.each { |part| file = file.join(part) }
         | 
| 60 | 
            +
                      file
         | 
| 61 | 
            +
                    end
         | 
| 62 | 
            +
                  end
         | 
| 63 | 
            +
                end
         | 
| 64 | 
            +
              end
         | 
| 65 | 
            +
            end
         | 
| @@ -0,0 +1,91 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            # rubocop:disable Metrics/AbcSize
         | 
| 4 | 
            +
            # rubocop:disable Metrics/MethodLength
         | 
| 5 | 
            +
            module Dotfiled
         | 
| 6 | 
            +
              module AlternativeFile
         | 
| 7 | 
            +
                class Finder
         | 
| 8 | 
            +
                  def execute(argv)
         | 
| 9 | 
            +
                    file = File.new(argv.first)
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                    if file.match?(/.*_(test|spec).rb$/)
         | 
| 12 | 
            +
                      return find_alternative_for_ruby_test_file(file)
         | 
| 13 | 
            +
                    end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                    if file.match?(/.*\.rb$/)
         | 
| 16 | 
            +
                      find_ruby_test_file_for(file)
         | 
| 17 | 
            +
                    end
         | 
| 18 | 
            +
                  end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                  private
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                  def find_ruby_test_file_for(file, prefix: File.new)
         | 
| 23 | 
            +
                    if file.match?(/^packages/)
         | 
| 24 | 
            +
                      return find_packaged_test_file_for(file)
         | 
| 25 | 
            +
                    end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                    if file.start_with?("public/") || file.start_with?("private/")
         | 
| 28 | 
            +
                      file = file.without_prefix("public/").without_prefix("private/")
         | 
| 29 | 
            +
                    end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                    minitest_folder = prefix.join("test")
         | 
| 32 | 
            +
                    minitest = minitest_folder.join(file).sub(/(lib|app)/, "").sub(".rb", "_test.rb")
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                    rspec_folder = prefix.join("spec")
         | 
| 35 | 
            +
                    rspec = rspec_folder.join(file).sub(/(lib|app)/, "").sub(".rb", "_spec.rb")
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                    if minitest_folder.exist? && rspec_folder.exist?
         | 
| 38 | 
            +
                      return best_candidate([rspec, minitest])
         | 
| 39 | 
            +
                    end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                    if minitest_folder.exist?
         | 
| 42 | 
            +
                      return minitest
         | 
| 43 | 
            +
                    end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                    rspec
         | 
| 46 | 
            +
                  end
         | 
| 47 | 
            +
             | 
| 48 | 
            +
                  def find_packaged_test_file_for(file)
         | 
| 49 | 
            +
                    parts = file.split
         | 
| 50 | 
            +
                    rejected_parts = %w[private public]
         | 
| 51 | 
            +
             | 
| 52 | 
            +
                    package = File.join([parts[0..1]])
         | 
| 53 | 
            +
                    file = [parts[2..]]
         | 
| 54 | 
            +
                           .flatten
         | 
| 55 | 
            +
                           .reject { |p| rejected_parts.include?(p) }
         | 
| 56 | 
            +
                           .join("/")
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                    find_ruby_test_file_for(file, prefix: package)
         | 
| 59 | 
            +
                  end
         | 
| 60 | 
            +
             | 
| 61 | 
            +
                  def find_alternative_for_ruby_test_file(file, prefix: File.new)
         | 
| 62 | 
            +
                    if file.match?(/^packages/)
         | 
| 63 | 
            +
                      return find_packaged_file_for_test(file)
         | 
| 64 | 
            +
                    end
         | 
| 65 | 
            +
             | 
| 66 | 
            +
                    file = file
         | 
| 67 | 
            +
                           .sub(/_(test|spec).rb$/, ".rb")
         | 
| 68 | 
            +
                           .sub(%r{^(test|tests|spec|specs)/}, "")
         | 
| 69 | 
            +
             | 
| 70 | 
            +
                    possible_folders = ["lib", "app/models", "app", "private", "public"]
         | 
| 71 | 
            +
                    candidates = possible_folders.map { |folder| prefix.join(folder).join(file) }
         | 
| 72 | 
            +
                    best_candidate(candidates)
         | 
| 73 | 
            +
                  end
         | 
| 74 | 
            +
             | 
| 75 | 
            +
                  def find_packaged_file_for_test(file)
         | 
| 76 | 
            +
                    parts = file.split
         | 
| 77 | 
            +
                    package = File.join([parts[0..1]])
         | 
| 78 | 
            +
                    file = File.join([parts[2..]])
         | 
| 79 | 
            +
                    prefix = File.new(package)
         | 
| 80 | 
            +
             | 
| 81 | 
            +
                    find_alternative_for_ruby_test_file(file, prefix: prefix)
         | 
| 82 | 
            +
                  end
         | 
| 83 | 
            +
             | 
| 84 | 
            +
                  def best_candidate(candidates)
         | 
| 85 | 
            +
                    candidates.find(&:exist?) || candidates.first
         | 
| 86 | 
            +
                  end
         | 
| 87 | 
            +
                end
         | 
| 88 | 
            +
              end
         | 
| 89 | 
            +
            end
         | 
| 90 | 
            +
            # rubocop:enable Metrics/AbcSize
         | 
| 91 | 
            +
            # rubocop:enable Metrics/MethodLength
         | 
    
        data/lib/dotfiled/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: dotfiled
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.2.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Marcelo Jacobus
         | 
| @@ -13,14 +13,18 @@ dependencies: [] | |
| 13 13 | 
             
            description: Helpers for your dotfiles
         | 
| 14 14 | 
             
            email:
         | 
| 15 15 | 
             
            - marcelo.jacobus@gmail.com
         | 
| 16 | 
            -
            executables: | 
| 16 | 
            +
            executables:
         | 
| 17 | 
            +
            - dotfiled
         | 
| 17 18 | 
             
            extensions: []
         | 
| 18 19 | 
             
            extra_rdoc_files: []
         | 
| 19 20 | 
             
            files:
         | 
| 20 21 | 
             
            - ".github/workflows/main.yml"
         | 
| 22 | 
            +
            - ".github/workflows/rubocop.yml"
         | 
| 21 23 | 
             
            - ".gitignore"
         | 
| 24 | 
            +
            - ".project.vim"
         | 
| 22 25 | 
             
            - ".rspec"
         | 
| 23 26 | 
             
            - ".rubocop.yml"
         | 
| 27 | 
            +
            - ".test_runner.yml"
         | 
| 24 28 | 
             
            - CHANGELOG.md
         | 
| 25 29 | 
             
            - CODE_OF_CONDUCT.md
         | 
| 26 30 | 
             
            - Gemfile
         | 
| @@ -30,7 +34,10 @@ files: | |
| 30 34 | 
             
            - bin/console
         | 
| 31 35 | 
             
            - bin/setup
         | 
| 32 36 | 
             
            - dotfiled.gemspec
         | 
| 37 | 
            +
            - exe/dotfiled
         | 
| 33 38 | 
             
            - lib/dotfiled.rb
         | 
| 39 | 
            +
            - lib/dotfiled/alternative_file/file.rb
         | 
| 40 | 
            +
            - lib/dotfiled/alternative_file/finder.rb
         | 
| 34 41 | 
             
            - lib/dotfiled/version.rb
         | 
| 35 42 | 
             
            homepage: https://github.com/mjacobus/dotfiled
         | 
| 36 43 | 
             
            licenses:
         | 
| @@ -48,7 +55,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 48 55 | 
             
              requirements:
         | 
| 49 56 | 
             
              - - ">="
         | 
| 50 57 | 
             
                - !ruby/object:Gem::Version
         | 
| 51 | 
            -
                  version: 2. | 
| 58 | 
            +
                  version: 2.7.0
         | 
| 52 59 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 53 60 | 
             
              requirements:
         | 
| 54 61 | 
             
              - - ">="
         |