From 455315a36292e91e55d6400c41c32684788617ac Mon Sep 17 00:00:00 2001 From: Alex Ling Date: Sun, 6 Dec 2020 06:50:27 +0000 Subject: [PATCH] Upgrade to Crystal 0.35.1 --- .github/workflows/build.yml | 2 +- Dockerfile | 2 +- Dockerfile.arm32v7 | 2 +- Dockerfile.arm64v8 | 2 +- shard.lock | 36 +++++++++++++++++----------------- shard.yml | 3 ++- src/archive.cr | 22 ++++++++++----------- src/handlers/static_handler.cr | 2 +- src/logger.cr | 10 ++++++---- src/mangadex/downloader.cr | 6 +++--- src/plugin/downloader.cr | 2 +- 11 files changed, 46 insertions(+), 43 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a7e0a47..f15ce4d 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 ee1f6d1..7dc5f01 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/Dockerfile.arm32v7 b/Dockerfile.arm32v7 index 7f52e48..854f4ec 100644 --- a/Dockerfile.arm32v7 +++ b/Dockerfile.arm32v7 @@ -2,7 +2,7 @@ FROM arm32v7/ubuntu:18.04 RUN apt-get update && apt-get install -y wget git make llvm-8 llvm-8-dev g++ libsqlite3-dev libyaml-dev libgc-dev libssl-dev libcrypto++-dev libevent-dev libgmp-dev zlib1g-dev libpcre++-dev pkg-config libarchive-dev libxml2-dev libacl1-dev nettle-dev liblzo2-dev liblzma-dev libbz2-dev libjpeg-turbo8-dev libpng-dev libtiff-dev -RUN git clone https://github.com/crystal-lang/crystal && cd crystal && git checkout 0.34.0 && make deps && cd .. +RUN git clone https://github.com/crystal-lang/crystal && cd crystal && git checkout 0.35.1 && make deps && cd .. RUN git clone https://github.com/kostya/myhtml && cd myhtml/src/ext && git checkout v1.5.0 && make && cd .. RUN git clone https://github.com/jessedoyle/duktape.cr && cd duktape.cr/ext && git checkout v0.20.0 && make && cd .. RUN git clone https://github.com/hkalexling/image_size.cr && cd image_size.cr && git checkout v0.2.0 && make && cd .. diff --git a/Dockerfile.arm64v8 b/Dockerfile.arm64v8 index 67675c6..888f797 100644 --- a/Dockerfile.arm64v8 +++ b/Dockerfile.arm64v8 @@ -2,7 +2,7 @@ FROM arm64v8/ubuntu:18.04 RUN apt-get update && apt-get install -y wget git make llvm-8 llvm-8-dev g++ libsqlite3-dev libyaml-dev libgc-dev libssl-dev libcrypto++-dev libevent-dev libgmp-dev zlib1g-dev libpcre++-dev pkg-config libarchive-dev libxml2-dev libacl1-dev nettle-dev liblzo2-dev liblzma-dev libbz2-dev libjpeg-turbo8-dev libpng-dev libtiff-dev -RUN git clone https://github.com/crystal-lang/crystal && cd crystal && git checkout 0.34.0 && make deps && cd .. +RUN git clone https://github.com/crystal-lang/crystal && cd crystal && git checkout 0.35.1 && make deps && cd .. RUN git clone https://github.com/kostya/myhtml && cd myhtml/src/ext && git checkout v1.5.0 && make && cd .. RUN git clone https://github.com/jessedoyle/duktape.cr && cd duktape.cr/ext && git checkout v0.20.0 && make && cd .. RUN git clone https://github.com/hkalexling/image_size.cr && cd image_size.cr && git checkout v0.2.0 && make && cd .. diff --git a/shard.lock b/shard.lock index f2604c9..065bd2a 100644 --- a/shard.lock +++ b/shard.lock @@ -1,62 +1,62 @@ -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.4.0 baked_file_system: - github: schovi/baked_file_system - version: 0.9.8 + git: https://github.com/schovi/baked_file_system.git + version: 0.9.8+git.commit.fb3091b546797fbec3c25dc0e1e2cff60bb9033b 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 duktape: - github: jessedoyle/duktape.cr + git: https://github.com/jessedoyle/duktape.cr.git version: 0.20.0 exception_page: - github: crystal-loot/exception_page + git: https://github.com/crystal-loot/exception_page.git version: 0.1.4 http_proxy: - github: mamantoha/http_proxy + git: https://github.com/mamantoha/http_proxy.git version: 0.7.1 image_size: - github: hkalexling/image_size.cr + git: https://github.com/hkalexling/image_size.cr.git version: 0.4.0 kemal: - github: kemalcr/kemal - version: 0.26.1 + git: https://github.com/kemalcr/kemal.git + version: 0.27.0 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 myhtml: - github: kostya/myhtml + git: https://github.com/kostya/myhtml.git version: 1.5.1 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 bca96d9..d52dabb 100644 --- a/shard.yml +++ b/shard.yml @@ -8,7 +8,7 @@ targets: mango: main: src/mango.cr -crystal: 0.34.0 +crystal: 0.35.1 license: MIT @@ -21,6 +21,7 @@ dependencies: github: crystal-lang/crystal-sqlite3 baked_file_system: github: schovi/baked_file_system + version: 0.9.8+git.commit.fb3091b546797fbec3c25dc0e1e2cff60bb9033b archive: github: hkalexling/archive.cr ameba: diff --git a/src/archive.cr b/src/archive.cr index 29dedfb..068b6d5 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/handlers/static_handler.cr b/src/handlers/static_handler.cr index b3a2d0e..edb772d 100644 --- a/src/handlers/static_handler.cr +++ b/src/handlers/static_handler.cr @@ -23,7 +23,7 @@ class StaticHandler < Kemal::Handler slice = Bytes.new file.size file.read slice - return send_file env, slice, file.mime_type + return send_file env, slice, MIME.from_filename file.path end call_next env end diff --git a/src/logger.cr b/src/logger.cr index 3777e9c..92be20e 100644 --- a/src/logger.cr +++ b/src/logger.cr @@ -26,9 +26,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 @@ -45,12 +45,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 793763d..ff395d9 100644 --- a/src/mangadex/downloader.cr +++ b/src/mangadex/downloader.cr @@ -1,12 +1,12 @@ require "./api" -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) @@ -69,7 +69,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 diff --git a/src/plugin/downloader.cr b/src/plugin/downloader.cr index 31d066d..99cd52d 100644 --- a/src/plugin/downloader.cr +++ b/src/plugin/downloader.cr @@ -53,7 +53,7 @@ class Plugin end zip_path = File.join manga_dir, "#{chapter_title}.cbz.part" - writer = Zip::Writer.new zip_path + writer = Compress::Zip::Writer.new zip_path rescue e @queue.set_status Queue::JobStatus::Error, job unless e.message.nil?