Sha256: 2d7073c4fb54f1e9a476cb06e9d1c0cfacb10dfd01f73e72c68f30c4979be456

Contents?: true

Size: 1.51 KB

Versions: 3

Compression:

Stored size: 1.51 KB

Contents

# frozen_string_literal: true

require "tools/modinfo_validate"

module Icarus
  module Mod
    module CLI
      # Sync CLI command definitions
      class Validate < SubcommandBase
        desc "modinfo", "Reads modinfo data from 'meta/modinfo/list' and Validates syntax of modfiles"
        def modinfo
          exit_code = 0
          modinfo_validate = Icarus::Mod::Tools::ModinfoValidate.new

          puts "Validating Entries..." if verbose?
          max_length = modinfo_validate.modinfo_array.map { |modinfo| modinfo.uniq_name.length }.max

          modinfo_validate.modinfo_array.each do |modinfo|
            print Paint[format("%s %-#{max_length}s", "Running validation steps on", modinfo.uniq_name), :cyan, :bright] if verbose > 1

            modinfo.validate

            if modinfo.errors.empty? && modinfo.warnings.empty?
              puts Paint["SUCCESS", :green, :bright] if verbose > 1
              next
            end

            if modinfo.errors.any?
              exit_code = 1
              puts Paint["ERROR", :red, :bright] if verbose? && verbose > 1
              warn modinfo.errors.map { |error| Paint[error, :red] }.join("\n")
              puts "\n" if verbose > 1
            end

            puts Paint["WARNING", :yellow, :bright] if modinfo.warnings.any? && verbose > 1
            puts modinfo.warnings.map { |warning| Paint["#{warning} in #{modinfo.uniq_name}", :yellow] }.join("\n")
            puts "\n" if verbose > 1
          end

          exit exit_code
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
Icarus-Mod-Tools-1.8.0 lib/icarus/mod/cli/validate.rb
Icarus-Mod-Tools-1.7.1 lib/icarus/mod/cli/validate.rb
Icarus-Mod-Tools-1.7.0 lib/icarus/mod/cli/validate.rb