zae 0.8.3
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/zae +113 -0
- data/lib/zae/become.rb +39 -0
- data/lib/zae/commands.rb +85 -0
- data/lib/zae/config.rb +86 -0
- data/lib/zae/engage.rb +10 -0
- data/lib/zae/translate.rb +36 -0
- data/lib/zae/version.rb +5 -0
- data/lib/zae.rb +10 -0
- metadata +128 -0
    
        checksums.yaml
    ADDED
    
    | @@ -0,0 +1,7 @@ | |
| 1 | 
            +
            ---
         | 
| 2 | 
            +
            SHA256:
         | 
| 3 | 
            +
              metadata.gz: 7107716877c5697e0ad9e7d25ee266a8e22b8c6914b580398bbcca712c1a3f70
         | 
| 4 | 
            +
              data.tar.gz: fea4655d21aaf270a3a554f436ef430bb7d8f2121cc4412e5e03e53632365c64
         | 
| 5 | 
            +
            SHA512:
         | 
| 6 | 
            +
              metadata.gz: ca8aa654b9a5e689640b1e5c14f919f6c12b6b8f7728516cc5bd8daba75f8a6a0b0372be967556dc76abf6b56717f248b4dac5bac5af4c207ef000f2e3937c2c
         | 
| 7 | 
            +
              data.tar.gz: b6002c33b403a78322abf47c57b30785b15ef2c6d9b3fbbfef92fec44cfb94518add7e506545c65530f088f955dbcc125e05953e638988732fa80990b95945bd
         | 
    
        data/exe/zae
    ADDED
    
    | @@ -0,0 +1,113 @@ | |
| 1 | 
            +
            #!/usr/bin/env ruby
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require_relative '../lib/zae'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            require 'gli'
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            # Cli main parser
         | 
| 8 | 
            +
            class Cli
         | 
| 9 | 
            +
              extend GLI::App
         | 
| 10 | 
            +
             | 
| 11 | 
            +
              # cli options
         | 
| 12 | 
            +
              subcommand_option_handling :normal
         | 
| 13 | 
            +
              arguments :strict
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              # information
         | 
| 16 | 
            +
              program_desc 'a handy runner of distributions packages manager commands. '
         | 
| 17 | 
            +
              version Zae::VERSION
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              # commands base
         | 
| 20 | 
            +
              COMMANDS = Zae::Commands.new
         | 
| 21 | 
            +
             | 
| 22 | 
            +
              desc 'install package(s) from repositories'
         | 
| 23 | 
            +
              arg_name 'package(s) name'
         | 
| 24 | 
            +
              command :install do |c|
         | 
| 25 | 
            +
                c.arg 'arguments'
         | 
| 26 | 
            +
                c.action do |_, _, args|
         | 
| 27 | 
            +
                  p COMMANDS.install args
         | 
| 28 | 
            +
                end
         | 
| 29 | 
            +
              end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
              desc 'remove one or more installed packages'
         | 
| 32 | 
            +
              arg_name 'package(s) name'
         | 
| 33 | 
            +
              command :remove do |c|
         | 
| 34 | 
            +
                c.action do |_, _, args|
         | 
| 35 | 
            +
                  COMMANDS.remove args
         | 
| 36 | 
            +
                end
         | 
| 37 | 
            +
              end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
              desc 'search for matching packages of term'
         | 
| 40 | 
            +
              arg_name 'package name'
         | 
| 41 | 
            +
              command :search do |c|
         | 
| 42 | 
            +
                c.action do |_, _, args|
         | 
| 43 | 
            +
                  COMMANDS.search args
         | 
| 44 | 
            +
                end
         | 
| 45 | 
            +
              end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
              desc 'update database'
         | 
| 48 | 
            +
              arg_name ''
         | 
| 49 | 
            +
              command :update do |c|
         | 
| 50 | 
            +
                c.action do
         | 
| 51 | 
            +
                  COMMANDS.update
         | 
| 52 | 
            +
                end
         | 
| 53 | 
            +
              end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
              desc 'upgrade packages'
         | 
| 56 | 
            +
              arg_name ''
         | 
| 57 | 
            +
              command :upgrade do |c|
         | 
| 58 | 
            +
                c.arg 'arguments'
         | 
| 59 | 
            +
                c.action do
         | 
| 60 | 
            +
                  COMMANDS.upgrade
         | 
| 61 | 
            +
                end
         | 
| 62 | 
            +
              end
         | 
| 63 | 
            +
             | 
| 64 | 
            +
              desc 'auto remove system residual packages dependencies'
         | 
| 65 | 
            +
              arg_name ''
         | 
| 66 | 
            +
              command :autoremove do |c|
         | 
| 67 | 
            +
                c.action do |_, _, args|
         | 
| 68 | 
            +
                  COMMANDS.autoremove args
         | 
| 69 | 
            +
                end
         | 
| 70 | 
            +
              end
         | 
| 71 | 
            +
             | 
| 72 | 
            +
              desc 'download package binary'
         | 
| 73 | 
            +
              arg_name 'package name'
         | 
| 74 | 
            +
              command :download do |c|
         | 
| 75 | 
            +
                c.action do |_, _, args|
         | 
| 76 | 
            +
                  COMMANDS.download args
         | 
| 77 | 
            +
                end
         | 
| 78 | 
            +
              end
         | 
| 79 | 
            +
             | 
| 80 | 
            +
              desc 'list installed packages'
         | 
| 81 | 
            +
              arg_name ''
         | 
| 82 | 
            +
              command :installed do |c|
         | 
| 83 | 
            +
                c.action do |_, _, args|
         | 
| 84 | 
            +
                  COMMANDS.installed args
         | 
| 85 | 
            +
                end
         | 
| 86 | 
            +
              end
         | 
| 87 | 
            +
             | 
| 88 | 
            +
              desc 'view info about a specific package'
         | 
| 89 | 
            +
              arg_name 'package name'
         | 
| 90 | 
            +
              command :info do |c|
         | 
| 91 | 
            +
                c.action do |_, _, args|
         | 
| 92 | 
            +
                  COMMANDS.info args
         | 
| 93 | 
            +
                end
         | 
| 94 | 
            +
              end
         | 
| 95 | 
            +
             | 
| 96 | 
            +
              desc 'fix system package manager issues'
         | 
| 97 | 
            +
              arg_name 'packages'
         | 
| 98 | 
            +
              command :fix do |c|
         | 
| 99 | 
            +
                c.action do |_, _, args|
         | 
| 100 | 
            +
                  COMMANDS.fix args
         | 
| 101 | 
            +
                end
         | 
| 102 | 
            +
              end
         | 
| 103 | 
            +
             | 
| 104 | 
            +
              desc 'package manager version'
         | 
| 105 | 
            +
              arg_name ''
         | 
| 106 | 
            +
              command :fix do |c|
         | 
| 107 | 
            +
                c.action do
         | 
| 108 | 
            +
                  COMMANDS.version
         | 
| 109 | 
            +
                end
         | 
| 110 | 
            +
              end
         | 
| 111 | 
            +
            end
         | 
| 112 | 
            +
             | 
| 113 | 
            +
            exit Cli.run(ARGV)
         | 
    
        data/lib/zae/become.rb
    ADDED
    
    | @@ -0,0 +1,39 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'pathname'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module Zae
         | 
| 6 | 
            +
              # define how command should be run, either to become super user or not.
         | 
| 7 | 
            +
              class Become
         | 
| 8 | 
            +
                attr_accessor
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                SUDO_PATH = Pathname.new('/usr/bin/sudo')
         | 
| 11 | 
            +
                DOAS_PATH = Pathname.new('/usr/bin/doas')
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                def initialize(action, config)
         | 
| 14 | 
            +
                  @action = action
         | 
| 15 | 
            +
                  @config = config
         | 
| 16 | 
            +
                end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                def need?
         | 
| 19 | 
            +
                  return false if @config[:become].nil?
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                  if @config[:become].key?(@action)
         | 
| 22 | 
            +
                    true
         | 
| 23 | 
            +
                  else
         | 
| 24 | 
            +
                    false
         | 
| 25 | 
            +
                  end
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                # query which become methods are available on user system
         | 
| 29 | 
            +
                def exec
         | 
| 30 | 
            +
                  if SUDO_PATH.exist?
         | 
| 31 | 
            +
                    SUDO_PATH
         | 
| 32 | 
            +
                  elsif DOAS_PATH.exist?
         | 
| 33 | 
            +
                    DOAS_PATH
         | 
| 34 | 
            +
                  else
         | 
| 35 | 
            +
                    'unknown'
         | 
| 36 | 
            +
                  end
         | 
| 37 | 
            +
                end
         | 
| 38 | 
            +
              end
         | 
| 39 | 
            +
            end
         | 
    
        data/lib/zae/commands.rb
    ADDED
    
    | @@ -0,0 +1,85 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Zae
         | 
| 4 | 
            +
              # Feature requirement:
         | 
| 5 | 
            +
              class Commands
         | 
| 6 | 
            +
                # update repository database
         | 
| 7 | 
            +
                def update
         | 
| 8 | 
            +
                  exec :update
         | 
| 9 | 
            +
                end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                # upgrade system package(s)
         | 
| 12 | 
            +
                def upgrade
         | 
| 13 | 
            +
                  exec :upgrade
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                def deps
         | 
| 17 | 
            +
                  exec :deps
         | 
| 18 | 
            +
                end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                def autoremove(...)
         | 
| 21 | 
            +
                  exec(:autoremove, ...)
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                def depends
         | 
| 25 | 
            +
                  exec :depends
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                def install(...)
         | 
| 29 | 
            +
                  exec(:install, ...)
         | 
| 30 | 
            +
                end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                def installed(...)
         | 
| 33 | 
            +
                  exec(:installed, ...)
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                def remove(...)
         | 
| 37 | 
            +
                  exec(:remove, ...)
         | 
| 38 | 
            +
                end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                def download(...)
         | 
| 41 | 
            +
                  exec(:download, ...)
         | 
| 42 | 
            +
                end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                def fix(...)
         | 
| 45 | 
            +
                  exec(:fix, ...)
         | 
| 46 | 
            +
                end
         | 
| 47 | 
            +
             | 
| 48 | 
            +
                # search for given package
         | 
| 49 | 
            +
                def search(...)
         | 
| 50 | 
            +
                  exec(:search, ...)
         | 
| 51 | 
            +
                end
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                # provide user with manual information
         | 
| 54 | 
            +
                def help
         | 
| 55 | 
            +
                  exec :help
         | 
| 56 | 
            +
                end
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                # show package information
         | 
| 59 | 
            +
                def show
         | 
| 60 | 
            +
                  exec :show
         | 
| 61 | 
            +
                end
         | 
| 62 | 
            +
             | 
| 63 | 
            +
                def info(...)
         | 
| 64 | 
            +
                  exec(:info, ...)
         | 
| 65 | 
            +
                end
         | 
| 66 | 
            +
             | 
| 67 | 
            +
                # packager current version
         | 
| 68 | 
            +
                def version
         | 
| 69 | 
            +
                  exec :version
         | 
| 70 | 
            +
                end
         | 
| 71 | 
            +
             | 
| 72 | 
            +
                private
         | 
| 73 | 
            +
             | 
| 74 | 
            +
                def exec(...)
         | 
| 75 | 
            +
                  print_run = lambda { |cmd|
         | 
| 76 | 
            +
                    puts "command: #{cmd}"
         | 
| 77 | 
            +
                    system cmd
         | 
| 78 | 
            +
                  }
         | 
| 79 | 
            +
             | 
| 80 | 
            +
                  Translate.new(...)
         | 
| 81 | 
            +
                           .to_str
         | 
| 82 | 
            +
                           .yield_self(&print_run)
         | 
| 83 | 
            +
                end
         | 
| 84 | 
            +
              end
         | 
| 85 | 
            +
            end
         | 
    
        data/lib/zae/config.rb
    ADDED
    
    | @@ -0,0 +1,86 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'pathname'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module Zae
         | 
| 6 | 
            +
              # Query for configuration files and returns matching ones
         | 
| 7 | 
            +
              class Config
         | 
| 8 | 
            +
                CFG_FOLDER = Pathname.new(File.join(Dir.home, '.config', 'zae'))
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                # package manager found
         | 
| 11 | 
            +
                attr_accessor :found
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                def initialize
         | 
| 14 | 
            +
                  @found = discovered || files[executable]
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                # config files folder location
         | 
| 18 | 
            +
                def folder
         | 
| 19 | 
            +
                  xdg_config_folder || CFG_FOLDER
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                # package manager executable location
         | 
| 23 | 
            +
                def executable
         | 
| 24 | 
            +
                  return Pathname.new(discovered[:exec]).basename.to_path.to_sym if discovered?
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                  # get all availables executables
         | 
| 27 | 
            +
                  exec = files.each_value.find { |cfg| Config.executable? cfg[:exec] }[:exec]
         | 
| 28 | 
            +
                  Pathname.new(exec).basename.to_path.to_sym
         | 
| 29 | 
            +
                end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                # active package manager executable
         | 
| 32 | 
            +
                alias active executable
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                # once executable is discovered create a new file w/ its path or name in
         | 
| 35 | 
            +
                # $HOME so to avoid probing for it in every startup
         | 
| 36 | 
            +
                def discovered
         | 
| 37 | 
            +
                  exec = folder.join('.discovered').read.chop.to_sym if discovered?
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                  files[exec] || nil
         | 
| 40 | 
            +
                end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                # is there any configuration available?
         | 
| 43 | 
            +
                def any?
         | 
| 44 | 
            +
                  files.any?
         | 
| 45 | 
            +
                  # - config folder do exist?
         | 
| 46 | 
            +
                  # - any yaml config file?
         | 
| 47 | 
            +
                  # - .discovered do exist?
         | 
| 48 | 
            +
                end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                private
         | 
| 51 | 
            +
             | 
| 52 | 
            +
                # executable exist?
         | 
| 53 | 
            +
                def self.executable?(exec)
         | 
| 54 | 
            +
                  File.executable? exec.to_s
         | 
| 55 | 
            +
                end
         | 
| 56 | 
            +
             | 
| 57 | 
            +
                # Get all Configuration files
         | 
| 58 | 
            +
                def files
         | 
| 59 | 
            +
                  # return if any?
         | 
| 60 | 
            +
             | 
| 61 | 
            +
                  {}.tap do |elem|
         | 
| 62 | 
            +
                    folder.each_child do |file|
         | 
| 63 | 
            +
                      name = file.sub_ext('').basename.to_s.to_sym
         | 
| 64 | 
            +
                      elem[name] = load_config(file)
         | 
| 65 | 
            +
                    end
         | 
| 66 | 
            +
                  end
         | 
| 67 | 
            +
                end
         | 
| 68 | 
            +
             | 
| 69 | 
            +
                # once executable is discovered create a new file w/ its path or name in
         | 
| 70 | 
            +
                # $HOME to avoid probing everytime run
         | 
| 71 | 
            +
                def discovered?
         | 
| 72 | 
            +
                  folder.join('.discovered').exist?
         | 
| 73 | 
            +
                end
         | 
| 74 | 
            +
             | 
| 75 | 
            +
                #  when xdg config is set, defaults to it to probe for configuration fiels
         | 
| 76 | 
            +
                def xdg_config_folder
         | 
| 77 | 
            +
                  Pathname.new(File.join(ENV['XDG_CONFIG_HOME'], 'zae')) if ENV['XDG_CONFIG_HOME']
         | 
| 78 | 
            +
                end
         | 
| 79 | 
            +
             | 
| 80 | 
            +
                # Load file with famous serialization formats
         | 
| 81 | 
            +
                def load_config(file)
         | 
| 82 | 
            +
                  require 'yaml'
         | 
| 83 | 
            +
                  YAML.load_file(file, symbolize_names: true)
         | 
| 84 | 
            +
                end
         | 
| 85 | 
            +
              end
         | 
| 86 | 
            +
            end
         | 
    
        data/lib/zae/engage.rb
    ADDED
    
    
| @@ -0,0 +1,36 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Zae
         | 
| 4 | 
            +
              # translate action to final command
         | 
| 5 | 
            +
              class Translate
         | 
| 6 | 
            +
                def initialize(action, args = [], config = Config.new.found,
         | 
| 7 | 
            +
                               become: Become.new(action, config))
         | 
| 8 | 
            +
                  @args = args
         | 
| 9 | 
            +
                  @action = action
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  @config = config
         | 
| 12 | 
            +
                  @become = become
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                def to_str
         | 
| 16 | 
            +
                  cmd = @become.need? ? @config[:become][@action] : @config[:user][@action]
         | 
| 17 | 
            +
                  command cmd
         | 
| 18 | 
            +
                end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                private
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                # TODO: raise 'command was not provided' and return if command.nil?
         | 
| 23 | 
            +
                # query for final command composition
         | 
| 24 | 
            +
                def command(action)
         | 
| 25 | 
            +
                  executable = @config[:exec]
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                  [].tap do |el|
         | 
| 28 | 
            +
                    el << @become.exec if @become.need?
         | 
| 29 | 
            +
                    el << executable
         | 
| 30 | 
            +
                    el << action
         | 
| 31 | 
            +
                  end
         | 
| 32 | 
            +
                    .+(@args)
         | 
| 33 | 
            +
                    .join(' ')
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
              end
         | 
| 36 | 
            +
            end
         | 
    
        data/lib/zae/version.rb
    ADDED
    
    
    
        data/lib/zae.rb
    ADDED
    
    | @@ -0,0 +1,10 @@ | |
| 1 | 
            +
            require_relative 'zae/become'
         | 
| 2 | 
            +
            require_relative 'zae/commands'
         | 
| 3 | 
            +
            require_relative 'zae/config'
         | 
| 4 | 
            +
            require_relative 'zae/translate'
         | 
| 5 | 
            +
            require_relative 'zae/version'
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            # a handy runner of distributions packages manager commands.
         | 
| 8 | 
            +
            module Zae
         | 
| 9 | 
            +
              class Error < StandardError; end
         | 
| 10 | 
            +
            end
         | 
    
        metadata
    ADDED
    
    | @@ -0,0 +1,128 @@ | |
| 1 | 
            +
            --- !ruby/object:Gem::Specification
         | 
| 2 | 
            +
            name: zae
         | 
| 3 | 
            +
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            +
              version: 0.8.3
         | 
| 5 | 
            +
            platform: ruby
         | 
| 6 | 
            +
            authors:
         | 
| 7 | 
            +
            - easbarba
         | 
| 8 | 
            +
            autorequire: 
         | 
| 9 | 
            +
            bindir: exe
         | 
| 10 | 
            +
            cert_chain: []
         | 
| 11 | 
            +
            date: 2022-05-20 00:00:00.000000000 Z
         | 
| 12 | 
            +
            dependencies:
         | 
| 13 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 14 | 
            +
              name: rake
         | 
| 15 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 | 
            +
                requirements:
         | 
| 17 | 
            +
                - - "~>"
         | 
| 18 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            +
                    version: '13.0'
         | 
| 20 | 
            +
                - - ">="
         | 
| 21 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 22 | 
            +
                    version: 13.0.6
         | 
| 23 | 
            +
              type: :development
         | 
| 24 | 
            +
              prerelease: false
         | 
| 25 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 26 | 
            +
                requirements:
         | 
| 27 | 
            +
                - - "~>"
         | 
| 28 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 29 | 
            +
                    version: '13.0'
         | 
| 30 | 
            +
                - - ">="
         | 
| 31 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 32 | 
            +
                    version: 13.0.6
         | 
| 33 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 34 | 
            +
              name: reek
         | 
| 35 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 36 | 
            +
                requirements:
         | 
| 37 | 
            +
                - - "~>"
         | 
| 38 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 39 | 
            +
                    version: 6.1.1
         | 
| 40 | 
            +
              type: :development
         | 
| 41 | 
            +
              prerelease: false
         | 
| 42 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 43 | 
            +
                requirements:
         | 
| 44 | 
            +
                - - "~>"
         | 
| 45 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 46 | 
            +
                    version: 6.1.1
         | 
| 47 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 48 | 
            +
              name: rspec
         | 
| 49 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 50 | 
            +
                requirements:
         | 
| 51 | 
            +
                - - "~>"
         | 
| 52 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 53 | 
            +
                    version: '3.11'
         | 
| 54 | 
            +
              type: :development
         | 
| 55 | 
            +
              prerelease: false
         | 
| 56 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 57 | 
            +
                requirements:
         | 
| 58 | 
            +
                - - "~>"
         | 
| 59 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 60 | 
            +
                    version: '3.11'
         | 
| 61 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 62 | 
            +
              name: rufo
         | 
| 63 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 64 | 
            +
                requirements:
         | 
| 65 | 
            +
                - - "~>"
         | 
| 66 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 67 | 
            +
                    version: 0.13.0
         | 
| 68 | 
            +
              type: :development
         | 
| 69 | 
            +
              prerelease: false
         | 
| 70 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 71 | 
            +
                requirements:
         | 
| 72 | 
            +
                - - "~>"
         | 
| 73 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 74 | 
            +
                    version: 0.13.0
         | 
| 75 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 76 | 
            +
              name: gli
         | 
| 77 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 78 | 
            +
                requirements:
         | 
| 79 | 
            +
                - - "~>"
         | 
| 80 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 81 | 
            +
                    version: '2.21'
         | 
| 82 | 
            +
              type: :runtime
         | 
| 83 | 
            +
              prerelease: false
         | 
| 84 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 85 | 
            +
                requirements:
         | 
| 86 | 
            +
                - - "~>"
         | 
| 87 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 88 | 
            +
                    version: '2.21'
         | 
| 89 | 
            +
            description: 
         | 
| 90 | 
            +
            email: 
         | 
| 91 | 
            +
            executables:
         | 
| 92 | 
            +
            - zae
         | 
| 93 | 
            +
            extensions: []
         | 
| 94 | 
            +
            extra_rdoc_files: []
         | 
| 95 | 
            +
            files:
         | 
| 96 | 
            +
            - exe/zae
         | 
| 97 | 
            +
            - lib/zae.rb
         | 
| 98 | 
            +
            - lib/zae/become.rb
         | 
| 99 | 
            +
            - lib/zae/commands.rb
         | 
| 100 | 
            +
            - lib/zae/config.rb
         | 
| 101 | 
            +
            - lib/zae/engage.rb
         | 
| 102 | 
            +
            - lib/zae/translate.rb
         | 
| 103 | 
            +
            - lib/zae/version.rb
         | 
| 104 | 
            +
            homepage: https://github.com/easbarba/zae
         | 
| 105 | 
            +
            licenses:
         | 
| 106 | 
            +
            - gpl-v3
         | 
| 107 | 
            +
            metadata:
         | 
| 108 | 
            +
              homepage_uri: https://github.com/easbarba/zae
         | 
| 109 | 
            +
            post_install_message: 
         | 
| 110 | 
            +
            rdoc_options: []
         | 
| 111 | 
            +
            require_paths:
         | 
| 112 | 
            +
            - lib
         | 
| 113 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 114 | 
            +
              requirements:
         | 
| 115 | 
            +
              - - ">="
         | 
| 116 | 
            +
                - !ruby/object:Gem::Version
         | 
| 117 | 
            +
                  version: '2.7'
         | 
| 118 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 119 | 
            +
              requirements:
         | 
| 120 | 
            +
              - - ">="
         | 
| 121 | 
            +
                - !ruby/object:Gem::Version
         | 
| 122 | 
            +
                  version: '0'
         | 
| 123 | 
            +
            requirements: []
         | 
| 124 | 
            +
            rubygems_version: 3.3.5
         | 
| 125 | 
            +
            signing_key: 
         | 
| 126 | 
            +
            specification_version: 4
         | 
| 127 | 
            +
            summary: a handy runner of distributions packages manager commands
         | 
| 128 | 
            +
            test_files: []
         |