lumise 0.2.1
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 +7 -0
- data/exe/lumise +16 -0
- data/lib/lumise/cli.rb +31 -0
- data/lib/lumise/cli.rbi +28 -0
- data/lib/lumise/command.rb +8 -0
- data/lib/lumise/commands/rubocop.rb +56 -0
- data/lib/lumise/commands/rubocop.rbi +48 -0
- data/lib/lumise/commands.rb +36 -0
- data/lib/lumise/commands.rbi +30 -0
- data/lib/lumise/configurations.rb +16 -0
- data/lib/lumise/configurations.rbi +1 -0
- data/lib/lumise/error.rb +6 -0
- data/lib/lumise/l.rb +10 -0
- data/lib/lumise/l.rbi +10 -0
- data/lib/lumise/logger.rb +7 -0
- data/lib/lumise/services/commands/rubocop/repo_files.rb +56 -0
- data/lib/lumise/services/commands/rubocop/repo_files.rbi +51 -0
- data/lib/lumise/services/commands/rubocop/update_files.rb +87 -0
- data/lib/lumise/services/commands/rubocop/update_files.rbi +67 -0
- data/lib/lumise/services/commands/rubocop/update_gems.rb +64 -0
- data/lib/lumise/services/commands/rubocop/update_gems.rbi +47 -0
- data/lib/lumise/services/commands/rubocop/update_todo.rb +52 -0
- data/lib/lumise/services/commands/rubocop/update_todo.rbi +43 -0
- data/lib/lumise/templates/.git +1 -0
- data/lib/lumise/templates/README.md +70 -0
- data/lib/lumise/templates/rubocop/.rubocop +1 -0
- data/lib/lumise/templates/rubocop/.rubocop.yml +17 -0
- data/lib/lumise/templates/rubocop/.rubocop_global.yml +58 -0
- data/lib/lumise/templates/rubocop/.rubocop_local.yml +3 -0
- data/lib/lumise/templates/rubocop/.rubocop_project.yml +29 -0
- data/lib/lumise/templates/rubocop/.rubocop_raw.yml +16 -0
- data/lib/lumise/templates/rubocop/.rubocop_todo.yml +5 -0
- data/lib/lumise/version.rb +6 -0
- data/lib/lumise/which/curl.rb +46 -0
- data/lib/lumise/which/curl.rbi +36 -0
- data/lib/lumise.rb +45 -0
- data/lib/lumise.rbi +12 -0
- data/lib/warning.rb +10 -0
- data/lib/warning.rbi +8 -0
- metadata +187 -0
    
        checksums.yaml
    ADDED
    
    | @@ -0,0 +1,7 @@ | |
| 1 | 
            +
            ---
         | 
| 2 | 
            +
            SHA1:
         | 
| 3 | 
            +
              metadata.gz: d82dc3a5d42d401ae1bc2bf483c99dd2bc592431
         | 
| 4 | 
            +
              data.tar.gz: 3ee4e2003df33f6e899476ee8c79b2cb565fc678
         | 
| 5 | 
            +
            SHA512:
         | 
| 6 | 
            +
              metadata.gz: 032b661e3f4e3d87e8cbe7aca8c3271c00682fd7c7d0acdefeec896f0551e3f059ebc3c1c46ca511df93b489cc956abe4a84c9535425aa892d005740c2a66979
         | 
| 7 | 
            +
              data.tar.gz: 3ff36cbaba6e560e538f1375a620585f5d84c8f098fceef515193af3f773703a19c344a0d291548518ae50652462197f18757f7af1c8a510dc39718b67cba8a7
         | 
    
        data/exe/lumise
    ADDED
    
    | @@ -0,0 +1,16 @@ | |
| 1 | 
            +
            #!/usr/bin/env ruby
         | 
| 2 | 
            +
            # frozen_string_literal: true
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            require_relative '../lib/lumise'
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            Signal.trap('INT') do
         | 
| 7 | 
            +
              warn("\n#{caller.join("\n")}: interrupted")
         | 
| 8 | 
            +
              exit(1)
         | 
| 9 | 
            +
            end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            begin
         | 
| 12 | 
            +
              Lumise::CLI.start
         | 
| 13 | 
            +
            rescue Lumise::CLI::Error => e
         | 
| 14 | 
            +
              puts "ERROR: #{e.message}"
         | 
| 15 | 
            +
              exit 1
         | 
| 16 | 
            +
            end
         | 
    
        data/lib/lumise/cli.rb
    ADDED
    
    | @@ -0,0 +1,31 @@ | |
| 1 | 
            +
            # typed: strict
         | 
| 2 | 
            +
            # frozen_string_literal: true
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module Lumise
         | 
| 5 | 
            +
              class CLI < Thor
         | 
| 6 | 
            +
                Error = Class.new(StandardError)
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                desc 'version', 'lumise version'
         | 
| 9 | 
            +
                def version
         | 
| 10 | 
            +
                  $stdout.puts "v#{Lumise::VERSION}"
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
                map %w[--version -v] => :version
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                desc 'rubocop', 'Set up rubocop'
         | 
| 15 | 
            +
                method_option :help, aliases: '-h', type: :boolean,
         | 
| 16 | 
            +
                                     desc: 'Display usage information'
         | 
| 17 | 
            +
                def rubocop(*)
         | 
| 18 | 
            +
                  if options[:help]
         | 
| 19 | 
            +
                    invoke :help, ['rubocop']
         | 
| 20 | 
            +
                  else
         | 
| 21 | 
            +
                    execute_rubocop
         | 
| 22 | 
            +
                  end
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                private
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                def execute_rubocop
         | 
| 28 | 
            +
                  Lumise::Commands::Rubocop.new(options).execute
         | 
| 29 | 
            +
                end
         | 
| 30 | 
            +
              end
         | 
| 31 | 
            +
            end
         | 
    
        data/lib/lumise/cli.rbi
    ADDED
    
    | @@ -0,0 +1,28 @@ | |
| 1 | 
            +
            # typed: strong
         | 
| 2 | 
            +
            # frozen_string_literal: true
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module Lumise
         | 
| 5 | 
            +
              class CLI < Thor
         | 
| 6 | 
            +
                sig do
         | 
| 7 | 
            +
                  params(
         | 
| 8 | 
            +
                    mappings: T::Hash[T.untyped, T.untyped]
         | 
| 9 | 
            +
                  ).void
         | 
| 10 | 
            +
                end
         | 
| 11 | 
            +
                def self.map(mappings)
         | 
| 12 | 
            +
                end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                sig { void }
         | 
| 15 | 
            +
                def version
         | 
| 16 | 
            +
                end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                sig { params(arr: T.untyped).void }
         | 
| 19 | 
            +
                def rubocop(*arr)
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                private
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                sig { void }
         | 
| 25 | 
            +
                def execute_rubocop
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
              end
         | 
| 28 | 
            +
            end
         | 
| @@ -0,0 +1,56 @@ | |
| 1 | 
            +
            # typed: strict
         | 
| 2 | 
            +
            # frozen_string_literal: true
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module Lumise
         | 
| 5 | 
            +
              module Commands
         | 
| 6 | 
            +
                class Rubocop < Lumise::Command
         | 
| 7 | 
            +
                  include L
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  def initialize(_options)
         | 
| 10 | 
            +
                    verify_dependencies
         | 
| 11 | 
            +
                    @plugins = set_plugins
         | 
| 12 | 
            +
                  rescue Which::Curl::CurlError
         | 
| 13 | 
            +
                    logger.error 'Please install curl'
         | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                  attr_reader :plugins
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  def execute
         | 
| 19 | 
            +
                    update_gems
         | 
| 20 | 
            +
                    create_files
         | 
| 21 | 
            +
                    update_todo
         | 
| 22 | 
            +
                  end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                  private
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                  def set_plugins
         | 
| 27 | 
            +
                    l.plugins || prompt_plugins
         | 
| 28 | 
            +
                  end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                  def verify_dependencies
         | 
| 31 | 
            +
                    Which::Curl.call
         | 
| 32 | 
            +
                  end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                  def prompt_plugins
         | 
| 35 | 
            +
                    choices = %w[performance rails rspec sorbet]
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                    prompt.multi_select 'Which plugins are you using?' do |menu|
         | 
| 38 | 
            +
                      menu.default 1, 3
         | 
| 39 | 
            +
                      menu.choices choices
         | 
| 40 | 
            +
                    end
         | 
| 41 | 
            +
                  end
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                  def update_gems
         | 
| 44 | 
            +
                    UpdateGems.call plugins: plugins
         | 
| 45 | 
            +
                  end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                  def create_files
         | 
| 48 | 
            +
                    UpdateFiles.call plugins: plugins
         | 
| 49 | 
            +
                  end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                  def update_todo
         | 
| 52 | 
            +
                    UpdateTodo.call plugins: plugins
         | 
| 53 | 
            +
                  end
         | 
| 54 | 
            +
                end
         | 
| 55 | 
            +
              end
         | 
| 56 | 
            +
            end
         | 
| @@ -0,0 +1,48 @@ | |
| 1 | 
            +
            # typed: strong
         | 
| 2 | 
            +
            # frozen_string_literal: true
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module Lumise
         | 
| 5 | 
            +
              module Commands
         | 
| 6 | 
            +
                class Rubocop < Lumise::Command
         | 
| 7 | 
            +
                  include L
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  sig { params(_options: T.untyped).void }
         | 
| 10 | 
            +
                  def initialize(_options)
         | 
| 11 | 
            +
                    @plugins = T.let nil, T::Array[String]
         | 
| 12 | 
            +
                  end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                  sig { returns T::Array[String] }
         | 
| 15 | 
            +
                  attr_reader :plugins
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                  sig { void }
         | 
| 18 | 
            +
                  def execute
         | 
| 19 | 
            +
                  end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                  private
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                  sig { returns T::Array[String] }
         | 
| 24 | 
            +
                  def set_plugins
         | 
| 25 | 
            +
                  end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                  sig { void }
         | 
| 28 | 
            +
                  def verify_dependencies
         | 
| 29 | 
            +
                  end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                  sig { returns T::Array[String] }
         | 
| 32 | 
            +
                  def prompt_plugins
         | 
| 33 | 
            +
                  end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                  sig { void }
         | 
| 36 | 
            +
                  def update_gems
         | 
| 37 | 
            +
                  end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                  sig { void }
         | 
| 40 | 
            +
                  def create_files
         | 
| 41 | 
            +
                  end
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                  sig { void }
         | 
| 44 | 
            +
                  def update_todo
         | 
| 45 | 
            +
                  end
         | 
| 46 | 
            +
                end
         | 
| 47 | 
            +
              end
         | 
| 48 | 
            +
            end
         | 
| @@ -0,0 +1,36 @@ | |
| 1 | 
            +
            # typed: strict
         | 
| 2 | 
            +
            # frozen_string_literal: true
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            require 'tty-command'
         | 
| 5 | 
            +
            require 'tty-file'
         | 
| 6 | 
            +
            require 'tty-logger'
         | 
| 7 | 
            +
            require 'tty-prompt'
         | 
| 8 | 
            +
            require 'tty-which'
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            module Lumise
         | 
| 11 | 
            +
              module Commands
         | 
| 12 | 
            +
                def command(options)
         | 
| 13 | 
            +
                  TTY::Command.new(options)
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                def generator
         | 
| 17 | 
            +
                  TTY::File
         | 
| 18 | 
            +
                end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                def logger
         | 
| 21 | 
            +
                  TTY::Logger.new
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                def prompt(**options)
         | 
| 25 | 
            +
                  TTY::Prompt.new(options)
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                def which(cmd)
         | 
| 29 | 
            +
                  TTY::Which.which(cmd)
         | 
| 30 | 
            +
                end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                def exec_exist?(cmd)
         | 
| 33 | 
            +
                  TTY::Which.exist?(cmd)
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
              end
         | 
| 36 | 
            +
            end
         | 
| @@ -0,0 +1,30 @@ | |
| 1 | 
            +
            # typed: strong
         | 
| 2 | 
            +
            # frozen_string_literal: true
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module Lumise
         | 
| 5 | 
            +
              module Commands
         | 
| 6 | 
            +
                sig { params(options: T.untyped).returns(TTY::Command) }
         | 
| 7 | 
            +
                def command(options)
         | 
| 8 | 
            +
                end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                sig { returns(T.class_of(TTY::File)) }
         | 
| 11 | 
            +
                def generator
         | 
| 12 | 
            +
                end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                sig { returns(TTY::Logger) }
         | 
| 15 | 
            +
                def logger
         | 
| 16 | 
            +
                end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                sig { params(options: T::Hash[T.untyped, T.untyped]).returns TTY::Prompt }
         | 
| 19 | 
            +
                def prompt(**options)
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                sig { params(cmd: String).returns T::Array[String] }
         | 
| 23 | 
            +
                def which(cmd)
         | 
| 24 | 
            +
                end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                sig { params(cmd: String).returns T::Boolean }
         | 
| 27 | 
            +
                def exec_exist?(cmd)
         | 
| 28 | 
            +
                end
         | 
| 29 | 
            +
              end
         | 
| 30 | 
            +
            end
         | 
| @@ -0,0 +1,16 @@ | |
| 1 | 
            +
            # typed: strict
         | 
| 2 | 
            +
            # frozen_string_literal: true
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module Lumise
         | 
| 5 | 
            +
              class Configurations < T::Struct
         | 
| 6 | 
            +
                include Singleton
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                prop :force,        T::Boolean, default: false
         | 
| 9 | 
            +
                prop :plugins,      T.nilable(T::Array[String])
         | 
| 10 | 
            +
                prop :repo,         T.nilable(String)
         | 
| 11 | 
            +
                prop :branch,       T.nilable(String)
         | 
| 12 | 
            +
                prop :update_gems,  T.nilable(T::Boolean)
         | 
| 13 | 
            +
                prop :update_files, T.nilable(T::Boolean)
         | 
| 14 | 
            +
                prop :update_todo,  T.nilable(T::Boolean)
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
            end
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            # typed: strong
         | 
    
        data/lib/lumise/error.rb
    ADDED
    
    
    
        data/lib/lumise/l.rb
    ADDED
    
    
    
        data/lib/lumise/l.rbi
    ADDED
    
    
| @@ -0,0 +1,56 @@ | |
| 1 | 
            +
            # typed: strict
         | 
| 2 | 
            +
            # frozen_string_literal: true
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module Lumise
         | 
| 5 | 
            +
              module Commands
         | 
| 6 | 
            +
                class Rubocop < Lumise::Command
         | 
| 7 | 
            +
                  class RepoFiles
         | 
| 8 | 
            +
                    include Commands
         | 
| 9 | 
            +
                    include L
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                    def self.call
         | 
| 12 | 
            +
                      new.call
         | 
| 13 | 
            +
                    end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                    def call
         | 
| 16 | 
            +
                      remove_tmp_lumise
         | 
| 17 | 
            +
                      recreate_tmp_lumise
         | 
| 18 | 
            +
                      clone_repo_onto_tmp_lumise
         | 
| 19 | 
            +
                      rubocop_files
         | 
| 20 | 
            +
                    end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                    private
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                    def rubocop_files
         | 
| 25 | 
            +
                      Dir['tmp/lumise/rubocop/**/{*,.*}']
         | 
| 26 | 
            +
                    end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                    def clone_repo_onto_tmp_lumise
         | 
| 29 | 
            +
                      command(printer: :null).run(git_clone_command) do |_out, err|
         | 
| 30 | 
            +
                        logger.info err.force_encoding(Encoding::UTF_8)
         | 
| 31 | 
            +
                      end
         | 
| 32 | 
            +
                    end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                    def git_clone_command
         | 
| 35 | 
            +
                      "git clone --single-branch --branch #{branch} #{repo} tmp/lumise"
         | 
| 36 | 
            +
                    end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                    def repo
         | 
| 39 | 
            +
                      T.must(l.repo)
         | 
| 40 | 
            +
                    end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                    def branch
         | 
| 43 | 
            +
                      l.branch || 'master'
         | 
| 44 | 
            +
                    end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                    def recreate_tmp_lumise
         | 
| 47 | 
            +
                      command(printer: :quiet).run('mkdir -p tmp/lumise')
         | 
| 48 | 
            +
                    end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                    def remove_tmp_lumise
         | 
| 51 | 
            +
                      command(printer: :quiet).run('rm -rf tmp/lumise')
         | 
| 52 | 
            +
                    end
         | 
| 53 | 
            +
                  end
         | 
| 54 | 
            +
                end
         | 
| 55 | 
            +
              end
         | 
| 56 | 
            +
            end
         | 
| @@ -0,0 +1,51 @@ | |
| 1 | 
            +
            # typed: strong
         | 
| 2 | 
            +
            # frozen_string_literal: true
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module Lumise
         | 
| 5 | 
            +
              module Commands
         | 
| 6 | 
            +
                class Rubocop < Lumise::Command
         | 
| 7 | 
            +
                  class RepoFiles
         | 
| 8 | 
            +
                    include Commands
         | 
| 9 | 
            +
                    include L
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                    sig { returns T::Array[String] }
         | 
| 12 | 
            +
                    def self.call
         | 
| 13 | 
            +
                    end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                    sig { returns T::Array[String] }
         | 
| 16 | 
            +
                    def call
         | 
| 17 | 
            +
                    end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                    private
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                    sig { returns T::Array[String] }
         | 
| 22 | 
            +
                    def rubocop_files
         | 
| 23 | 
            +
                    end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                    sig { void }
         | 
| 26 | 
            +
                    def clone_repo_onto_tmp_lumise
         | 
| 27 | 
            +
                    end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                    sig { returns String }
         | 
| 30 | 
            +
                    def git_clone_command
         | 
| 31 | 
            +
                    end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                    sig { returns String }
         | 
| 34 | 
            +
                    def repo
         | 
| 35 | 
            +
                    end
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                    sig { returns String }
         | 
| 38 | 
            +
                    def branch
         | 
| 39 | 
            +
                    end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                    sig { void }
         | 
| 42 | 
            +
                    def recreate_tmp_lumise
         | 
| 43 | 
            +
                    end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                    sig { void }
         | 
| 46 | 
            +
                    def remove_tmp_lumise
         | 
| 47 | 
            +
                    end
         | 
| 48 | 
            +
                  end
         | 
| 49 | 
            +
                end
         | 
| 50 | 
            +
              end
         | 
| 51 | 
            +
            end
         | 
| @@ -0,0 +1,87 @@ | |
| 1 | 
            +
            # typed: strict
         | 
| 2 | 
            +
            # frozen_string_literal: true
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module Lumise
         | 
| 5 | 
            +
              module Commands
         | 
| 6 | 
            +
                class Rubocop < Lumise::Command
         | 
| 7 | 
            +
                  class UpdateFiles
         | 
| 8 | 
            +
                    include Commands
         | 
| 9 | 
            +
                    include L
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                    def self.call(plugins:)
         | 
| 12 | 
            +
                      new(plugins: plugins).send :perform
         | 
| 13 | 
            +
                    end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                    def initialize(plugins:)
         | 
| 16 | 
            +
                      @plugins = plugins
         | 
| 17 | 
            +
                    end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                    private
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                    attr_reader :plugins
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                    def perform
         | 
| 24 | 
            +
                      if yes?
         | 
| 25 | 
            +
                        files.each do |file|
         | 
| 26 | 
            +
                          parse_template file
         | 
| 27 | 
            +
                        end
         | 
| 28 | 
            +
                      end
         | 
| 29 | 
            +
                    end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                    def parse_template(file)
         | 
| 32 | 
            +
                      generator.create_file File.basename(file), mustacho(file),
         | 
| 33 | 
            +
                                            force: l.force
         | 
| 34 | 
            +
                    end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                    def mustacho(file)
         | 
| 37 | 
            +
                      Mustache.render File.read(file),
         | 
| 38 | 
            +
                                      require: plugins?, plugins: plugins_list,
         | 
| 39 | 
            +
                                      rspec: plugins.include?('rspec'),
         | 
| 40 | 
            +
                                      sorbet: plugins.include?('sorbet')
         | 
| 41 | 
            +
                    end
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                    def plugins_list
         | 
| 44 | 
            +
                      plugins.map do |plugin|
         | 
| 45 | 
            +
                        "  - rubocop-#{plugin}"
         | 
| 46 | 
            +
                      end.join("\n")
         | 
| 47 | 
            +
                    rescue NoMethodError
         | 
| 48 | 
            +
                      []
         | 
| 49 | 
            +
                    end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                    def files
         | 
| 52 | 
            +
                      if l.repo
         | 
| 53 | 
            +
                        repo_files
         | 
| 54 | 
            +
                      else
         | 
| 55 | 
            +
                        template_files
         | 
| 56 | 
            +
                      end
         | 
| 57 | 
            +
                    end
         | 
| 58 | 
            +
             | 
| 59 | 
            +
                    def template_files
         | 
| 60 | 
            +
                      Dir[templates_path + '**/{*,.*}'].reject do |file|
         | 
| 61 | 
            +
                        file.scan(/\.$/).first
         | 
| 62 | 
            +
                      end
         | 
| 63 | 
            +
                    end
         | 
| 64 | 
            +
             | 
| 65 | 
            +
                    def repo_files
         | 
| 66 | 
            +
                      RepoFiles.call
         | 
| 67 | 
            +
                    end
         | 
| 68 | 
            +
             | 
| 69 | 
            +
                    def templates_path
         | 
| 70 | 
            +
                      File.expand_path('../../../templates/rubocop', __dir__)
         | 
| 71 | 
            +
                    end
         | 
| 72 | 
            +
             | 
| 73 | 
            +
                    def plugins?
         | 
| 74 | 
            +
                      !plugins&.first.nil?
         | 
| 75 | 
            +
                    end
         | 
| 76 | 
            +
             | 
| 77 | 
            +
                    def yes?
         | 
| 78 | 
            +
                      if l.update_files.nil?
         | 
| 79 | 
            +
                        prompt.yes? 'Update .rubocop files?', suffix: 'Yeah/nah'
         | 
| 80 | 
            +
                      else
         | 
| 81 | 
            +
                        l.update_files
         | 
| 82 | 
            +
                      end
         | 
| 83 | 
            +
                    end
         | 
| 84 | 
            +
                  end
         | 
| 85 | 
            +
                end
         | 
| 86 | 
            +
              end
         | 
| 87 | 
            +
            end
         | 
| @@ -0,0 +1,67 @@ | |
| 1 | 
            +
            # typed: strong
         | 
| 2 | 
            +
            # frozen_string_literal: true
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module Lumise
         | 
| 5 | 
            +
              module Commands
         | 
| 6 | 
            +
                class Rubocop < Lumise::Command
         | 
| 7 | 
            +
                  class UpdateFiles
         | 
| 8 | 
            +
                    include Commands
         | 
| 9 | 
            +
                    include L
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                    sig { params(plugins: T::Array[String]).void }
         | 
| 12 | 
            +
                    def self.call(plugins:)
         | 
| 13 | 
            +
                    end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                    sig { params(plugins: T::Array[String]).void }
         | 
| 16 | 
            +
                    def initialize(plugins:)
         | 
| 17 | 
            +
                      @plugins = plugins
         | 
| 18 | 
            +
                    end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                    private
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                    sig { returns T::Array[String] }
         | 
| 23 | 
            +
                    attr_reader :plugins
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                    sig { void }
         | 
| 26 | 
            +
                    def perform
         | 
| 27 | 
            +
                    end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                    sig { params(file: T.any(String, Pathname)).void }
         | 
| 30 | 
            +
                    def parse_template(file)
         | 
| 31 | 
            +
                    end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                    sig { params(file: T.any(File, String, Pathname)).returns String }
         | 
| 34 | 
            +
                    def mustacho(file)
         | 
| 35 | 
            +
                    end
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                    sig { returns T.any(T::Array[T.untyped], String) }
         | 
| 38 | 
            +
                    def plugins_list
         | 
| 39 | 
            +
                    end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                    sig { returns(T::Array[String]) }
         | 
| 42 | 
            +
                    def files
         | 
| 43 | 
            +
                    end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                    sig { returns T::Array[String] }
         | 
| 46 | 
            +
                    def template_files
         | 
| 47 | 
            +
                    end
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                    sig { returns T::Array[String] }
         | 
| 50 | 
            +
                    def repo_files
         | 
| 51 | 
            +
                    end
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                    sig { returns(String) }
         | 
| 54 | 
            +
                    def templates_path
         | 
| 55 | 
            +
                    end
         | 
| 56 | 
            +
             | 
| 57 | 
            +
                    sig { returns(T::Boolean) }
         | 
| 58 | 
            +
                    def plugins?
         | 
| 59 | 
            +
                    end
         | 
| 60 | 
            +
             | 
| 61 | 
            +
                    sig { returns(T::Boolean) }
         | 
| 62 | 
            +
                    def yes?
         | 
| 63 | 
            +
                    end
         | 
| 64 | 
            +
                  end
         | 
| 65 | 
            +
                end
         | 
| 66 | 
            +
              end
         | 
| 67 | 
            +
            end
         | 
| @@ -0,0 +1,64 @@ | |
| 1 | 
            +
            # typed: strict
         | 
| 2 | 
            +
            # frozen_string_literal: true
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module Lumise
         | 
| 5 | 
            +
              module Commands
         | 
| 6 | 
            +
                class Rubocop < Lumise::Command
         | 
| 7 | 
            +
                  class UpdateGems
         | 
| 8 | 
            +
                    include Commands
         | 
| 9 | 
            +
                    include L
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                    def self.call(plugins:)
         | 
| 12 | 
            +
                      new(plugins: plugins).send :perform
         | 
| 13 | 
            +
                    end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                    def initialize(plugins:)
         | 
| 16 | 
            +
                      @plugins = plugins
         | 
| 17 | 
            +
                    end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                    private
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                    attr_reader :plugins
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                    def perform
         | 
| 24 | 
            +
                      if yes?
         | 
| 25 | 
            +
                        logger.info "#Running #{bundle_update_command}"
         | 
| 26 | 
            +
                        bundle_update
         | 
| 27 | 
            +
                      end
         | 
| 28 | 
            +
                    end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                    def bundle_update
         | 
| 31 | 
            +
                      command(printer: :quiet).run(bundle_update_command)
         | 
| 32 | 
            +
                    rescue TTY::Command::ExitError, StandardError => e
         | 
| 33 | 
            +
                      # Could not find gem 'rubocop'.
         | 
| 34 | 
            +
                      #
         | 
| 35 | 
            +
                      # Could not locate Gemfile
         | 
| 36 | 
            +
                      #
         | 
| 37 | 
            +
                      # This Bundle hasn't been installed yet. Run `bundle install` to
         | 
| 38 | 
            +
                      # update and install the bundled gems.
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                      logger.error e.message
         | 
| 41 | 
            +
                      exit 1
         | 
| 42 | 
            +
                    end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                    def yes?
         | 
| 45 | 
            +
                      if l.update_gems.nil?
         | 
| 46 | 
            +
                        prompt.yes? 'Update rubocop gems?', suffix: 'Yeah/nah'
         | 
| 47 | 
            +
                      else
         | 
| 48 | 
            +
                        l.update_gems
         | 
| 49 | 
            +
                      end
         | 
| 50 | 
            +
                    end
         | 
| 51 | 
            +
             | 
| 52 | 
            +
                    def bundle_update_command
         | 
| 53 | 
            +
                      "bundle update --conservative rubocop #{gems}"
         | 
| 54 | 
            +
                    end
         | 
| 55 | 
            +
             | 
| 56 | 
            +
                    def gems
         | 
| 57 | 
            +
                      plugins.map do |plugin|
         | 
| 58 | 
            +
                        'rubocop-' + plugin
         | 
| 59 | 
            +
                      end.join(' ')
         | 
| 60 | 
            +
                    end
         | 
| 61 | 
            +
                  end
         | 
| 62 | 
            +
                end
         | 
| 63 | 
            +
              end
         | 
| 64 | 
            +
            end
         | 
| @@ -0,0 +1,47 @@ | |
| 1 | 
            +
            # typed: strong
         | 
| 2 | 
            +
            # frozen_string_literal: true
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module Lumise
         | 
| 5 | 
            +
              module Commands
         | 
| 6 | 
            +
                class Rubocop < Lumise::Command
         | 
| 7 | 
            +
                  class UpdateGems
         | 
| 8 | 
            +
                    include Commands
         | 
| 9 | 
            +
                    include L
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                    sig { params(plugins: T::Array[String]).void }
         | 
| 12 | 
            +
                    def self.call(plugins:)
         | 
| 13 | 
            +
                    end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                    sig { params(plugins: T::Array[String]).void }
         | 
| 16 | 
            +
                    def initialize(plugins:)
         | 
| 17 | 
            +
                      @plugins = plugins
         | 
| 18 | 
            +
                    end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                    private
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                    sig { returns T::Array[String] }
         | 
| 23 | 
            +
                    attr_reader :plugins
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                    sig { void }
         | 
| 26 | 
            +
                    def perform
         | 
| 27 | 
            +
                    end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                    sig { void }
         | 
| 30 | 
            +
                    def bundle_update
         | 
| 31 | 
            +
                    end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                    sig { returns T::Boolean }
         | 
| 34 | 
            +
                    def yes?
         | 
| 35 | 
            +
                    end
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                    sig { returns String }
         | 
| 38 | 
            +
                    def bundle_update_command
         | 
| 39 | 
            +
                    end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                    sig { returns String }
         | 
| 42 | 
            +
                    def gems
         | 
| 43 | 
            +
                    end
         | 
| 44 | 
            +
                  end
         | 
| 45 | 
            +
                end
         | 
| 46 | 
            +
              end
         | 
| 47 | 
            +
            end
         |