diff --git a/src/errors.cr b/src/errors.cr index 4ec6cd5c..51670520 100644 --- a/src/errors.cr +++ b/src/errors.cr @@ -35,15 +35,15 @@ module Shards end def to_s(io) - io.puts "in #{ filename }:#{ line_number }: #{ self.class.name }: #{ message }" + io.puts "in #{ filename }: #{ message }" io.puts lines = input.split('\n') - from = line_number - 2 + from = line_number - 3 from = 0 if from < 0 - lines[from .. line_number].each_with_index do |line, i| - io.puts " #{ i + 1 }. #{ line }" + lines[from ... line_number].each_with_index do |line, i| + io.puts " #{ from + i + 1 }. #{ line }" end arrow = String.build do |s| diff --git a/src/lock.cr b/src/lock.cr index 9d65c3a4..3cf98954 100644 --- a/src/lock.cr +++ b/src/lock.cr @@ -27,7 +27,7 @@ module Shards dependencies << Dependency.new(pull) end else - pull.raise "no such attribute #{key} in lock version 1.0" + pull.raise "No such attribute #{key} in lock version 1.0" end end end diff --git a/src/resolvers/git.cr b/src/resolvers/git.cr index 7b616d07..2649157c 100644 --- a/src/resolvers/git.cr +++ b/src/resolvers/git.cr @@ -214,7 +214,7 @@ module Shards private def run(command, path = local_path, capture = false) unless GitResolver.has_git_command? - raise Error.new("Error: missing git command line tool. Please install Git first!") + raise Error.new("Error missing git command line tool. Please install Git first!") end # Shards.logger.debug { "cd #{path}" } @@ -233,7 +233,7 @@ module Shards if str.starts_with?("error: ") && (idx = str.index('\n')) message = str[7 ... idx] end - raise Error.new("git command failed: #{ command } (#{ message }). Maybe a commit, branch or file doesn't exist?") + raise Error.new("Failed #{ command } (#{ message }). Maybe a commit, branch or file doesn't exist?") end end end diff --git a/src/resolvers/resolver.cr b/src/resolvers/resolver.cr index bba328cd..44686085 100644 --- a/src/resolvers/resolver.cr +++ b/src/resolvers/resolver.cr @@ -92,7 +92,7 @@ module Shards def self.find_resolver(dependency, update_cache = true) @@resolvers[dependency.name] ||= begin klass = get_resolver_class(dependency.keys) - raise Error.new("can't resolve dependency #{dependency.name} (unsupported resolver)") unless klass + raise Error.new("Failed can't resolve dependency #{dependency.name} (unsupported resolver)") unless klass klass.new(dependency, update_cache: update_cache) end end diff --git a/src/spec.cr b/src/spec.cr index ba859585..53c1e12b 100644 --- a/src/spec.cr +++ b/src/spec.cr @@ -30,13 +30,15 @@ module Shards def self.new(pull : YAML::PullParser) name = pull.read_scalar + + line, column = pull.location version = pull.read_scalar.strip if pull.kind.scalar? - if version && !version.empty? - new(name, version) - else - raise Error.new("library version of #{name} can't be empty, use * for any version.") + if !version || version.try(&.empty?) + pull.raise "library version for #{name} can't be empty, use * for any version", line, column end + + new(name, version) end def initialize(@soname, @version) @@ -71,6 +73,8 @@ module Shards # :nodoc: def initialize(pull : YAML::PullParser, validate = false) pull.each_in_mapping do + line, column = pull.location + case key = pull.read_scalar when "name" @name = pull.read_scalar @@ -108,7 +112,7 @@ module Shards end else if validate - pull.raise "unknown attribute: #{key}" + pull.raise "unknown attribute: #{key}", line, column else pull.skip end