diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 37d86c6..00f716f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest container: - image: crystallang/crystal:0.34.0-alpine + image: crystallang/crystal:0.35.1-alpine steps: - uses: actions/checkout@v2 diff --git a/Dockerfile b/Dockerfile index 6ce10b2..bcbb011 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM crystallang/crystal:0.34.0-alpine AS builder +FROM crystallang/crystal:0.35.1-alpine AS builder WORKDIR /Mango diff --git a/shard.lock b/shard.lock index 2d95a6f..dc0322a 100644 --- a/shard.lock +++ b/shard.lock @@ -1,46 +1,46 @@ -version: 1.0 +version: 2.0 shards: ameba: - github: crystal-ameba/ameba + git: https://github.com/crystal-ameba/ameba.git version: 0.12.1 archive: - github: hkalexling/archive.cr + git: https://github.com/hkalexling/archive.cr.git version: 0.2.0 baked_file_system: - github: schovi/baked_file_system + git: https://github.com/schovi/baked_file_system.git version: 0.9.8 clim: - github: at-grandpa/clim + git: https://github.com/at-grandpa/clim.git version: 0.12.0 db: - github: crystal-lang/crystal-db + git: https://github.com/crystal-lang/crystal-db.git version: 0.9.0 exception_page: - github: crystal-loot/exception_page + git: https://github.com/crystal-loot/exception_page.git version: 0.1.4 kemal: - github: kemalcr/kemal - version: 0.26.1 + git: https://github.com/kemalcr/kemal.git + version: 0.26.1+git.commit.a8c0f09b858162bd13c96663febef5527b322a32 kemal-session: - github: kemalcr/kemal-session + git: https://github.com/kemalcr/kemal-session.git version: 0.12.1 kilt: - github: jeromegn/kilt + git: https://github.com/jeromegn/kilt.git version: 0.4.0 radix: - github: luislavena/radix + git: https://github.com/luislavena/radix.git version: 0.3.9 sqlite3: - github: crystal-lang/crystal-sqlite3 + git: https://github.com/crystal-lang/crystal-sqlite3.git version: 0.16.0 diff --git a/shard.yml b/shard.yml index b9e2975..ca74f98 100644 --- a/shard.yml +++ b/shard.yml @@ -8,13 +8,14 @@ targets: mango: main: src/mango.cr -crystal: 0.34.0 +crystal: 0.35.0 license: MIT dependencies: kemal: github: kemalcr/kemal + commit: a8c0f09b858162bd13c96663febef5527b322a32 kemal-session: github: kemalcr/kemal-session sqlite3: diff --git a/src/archive.cr b/src/archive.cr index 29dedfb..98423d1 100644 --- a/src/archive.cr +++ b/src/archive.cr @@ -1,13 +1,13 @@ -require "zip" +require "compress/zip" require "archive" -# A unified class to handle all supported archive formats. It uses the ::Zip -# module in crystal standard library if the target file is a zip archive. -# Otherwise it uses `archive.cr`. +# A unified class to handle all supported archive formats. It uses the +# Compress::Zip module in crystal standard library if the target file is a +# zip archive. Otherwise it uses `archive.cr`. class ArchiveFile def initialize(@filename : String) if [".cbz", ".zip"].includes? File.extname filename - @archive_file = Zip::File.new filename + @archive_file = Compress::Zip::File.new filename else @archive_file = Archive::File.new filename end @@ -20,16 +20,16 @@ class ArchiveFile end def close - if @archive_file.is_a? Zip::File - @archive_file.as(Zip::File).close + if @archive_file.is_a? Compress::Zip::File + @archive_file.as(Compress::Zip::File).close end end # Lists all file entries def entries - ary = [] of Zip::File::Entry | Archive::Entry + ary = [] of Compress::Zip::File::Entry | Archive::Entry @archive_file.entries.map do |e| - if (e.is_a? Zip::File::Entry && e.file?) || + if (e.is_a? Compress::Zip::File::Entry && e.file?) || (e.is_a? Archive::Entry && e.info.file?) ary.push e end @@ -37,8 +37,8 @@ class ArchiveFile ary end - def read_entry(e : Zip::File::Entry | Archive::Entry) : Bytes? - if e.is_a? Zip::File::Entry + def read_entry(e : Compress::Zip::File::Entry | Archive::Entry) : Bytes? + if e.is_a? Compress::Zip::File::Entry data = nil e.open do |io| slice = Bytes.new e.uncompressed_size diff --git a/src/logger.cr b/src/logger.cr index 8c049ed..b1d02a5 100644 --- a/src/logger.cr +++ b/src/logger.cr @@ -31,9 +31,9 @@ class Logger {% end %} @log = Log.for("") - @backend = Log::IOBackend.new - @backend.formatter = ->(entry : Log::Entry, io : IO) do + + format_proc = ->(entry : Log::Entry, io : IO) do color = :default {% begin %} case entry.severity.label.to_s().downcase @@ -50,12 +50,14 @@ class Logger io << entry.message end - Log.builder.bind "*", @@severity, @backend + @backend.formatter = Log::Formatter.new &format_proc + Log.setup @@severity, @backend end # Ignores @@severity and always log msg def log(msg) - @backend.write Log::Entry.new "", Log::Severity::None, msg, nil + @backend.write Log::Entry.new "", Log::Severity::None, msg, + Log::Metadata.empty, nil end def self.log(msg) diff --git a/src/mangadex/downloader.cr b/src/mangadex/downloader.cr index 6a62e59..ba49de3 100644 --- a/src/mangadex/downloader.cr +++ b/src/mangadex/downloader.cr @@ -1,13 +1,13 @@ require "./api" require "sqlite3" -require "zip" +require "compress/zip" module MangaDex class PageJob property success = false property url : String property filename : String - property writer : Zip::Writer + property writer : Compress::Zip::Writer property tries_remaning : Int32 def initialize(@url, @filename, @writer, @tries_remaning) @@ -324,7 +324,7 @@ module MangaDex # Find the number of digits needed to store the number of pages len = Math.log10(chapter.pages.size).to_i + 1 - writer = Zip::Writer.new zip_path + writer = Compress::Zip::Writer.new zip_path # Create a buffered channel. It works as an FIFO queue channel = Channel(PageJob).new chapter.pages.size spawn do