Compare commits

..

2 Commits

Author SHA1 Message Date
Alex Ling 5f21653e07 Bump version to v0.7.1 2020-06-20 16:25:14 +00:00
Alex Ling 0035cd9177 Revert "Upgrade Crystal to 0.35.1"
Kemal is having some issues in 0.35.0: https://github.com/kemalcr/kemal/issues/575
2020-06-20 16:24:01 +00:00
9 changed files with 37 additions and 40 deletions
+1 -1
View File
@@ -12,7 +12,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: container:
image: crystallang/crystal:0.35.1-alpine image: crystallang/crystal:0.34.0-alpine
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
+1 -1
View File
@@ -1,4 +1,4 @@
FROM crystallang/crystal:0.35.1-alpine AS builder FROM crystallang/crystal:0.34.0-alpine AS builder
WORKDIR /Mango WORKDIR /Mango
+1 -1
View File
@@ -50,7 +50,7 @@ The official docker images are available on [Dockerhub](https://hub.docker.com/r
### CLI ### CLI
``` ```
Mango - Manga Server and Web Reader. Version 0.7.0 Mango - Manga Server and Web Reader. Version 0.7.1
Usage: Usage:
+13 -13
View File
@@ -1,46 +1,46 @@
version: 2.0 version: 1.0
shards: shards:
ameba: ameba:
git: https://github.com/crystal-ameba/ameba.git github: crystal-ameba/ameba
version: 0.12.1 version: 0.12.1
archive: archive:
git: https://github.com/hkalexling/archive.cr.git github: hkalexling/archive.cr
version: 0.2.0 version: 0.2.0
baked_file_system: baked_file_system:
git: https://github.com/schovi/baked_file_system.git github: schovi/baked_file_system
version: 0.9.8 version: 0.9.8
clim: clim:
git: https://github.com/at-grandpa/clim.git github: at-grandpa/clim
version: 0.12.0 version: 0.12.0
db: db:
git: https://github.com/crystal-lang/crystal-db.git github: crystal-lang/crystal-db
version: 0.9.0 version: 0.9.0
exception_page: exception_page:
git: https://github.com/crystal-loot/exception_page.git github: crystal-loot/exception_page
version: 0.1.4 version: 0.1.4
kemal: kemal:
git: https://github.com/kemalcr/kemal.git github: kemalcr/kemal
version: 0.26.1+git.commit.a8c0f09b858162bd13c96663febef5527b322a32 version: 0.26.1
kemal-session: kemal-session:
git: https://github.com/kemalcr/kemal-session.git github: kemalcr/kemal-session
version: 0.12.1 version: 0.12.1
kilt: kilt:
git: https://github.com/jeromegn/kilt.git github: jeromegn/kilt
version: 0.4.0 version: 0.4.0
radix: radix:
git: https://github.com/luislavena/radix.git github: luislavena/radix
version: 0.3.9 version: 0.3.9
sqlite3: sqlite3:
git: https://github.com/crystal-lang/crystal-sqlite3.git github: crystal-lang/crystal-sqlite3
version: 0.16.0 version: 0.16.0
+2 -3
View File
@@ -1,5 +1,5 @@
name: mango name: mango
version: 0.7.0 version: 0.7.1
authors: authors:
- Alex Ling <hkalexling@gmail.com> - Alex Ling <hkalexling@gmail.com>
@@ -8,14 +8,13 @@ targets:
mango: mango:
main: src/mango.cr main: src/mango.cr
crystal: 0.35.0 crystal: 0.34.0
license: MIT license: MIT
dependencies: dependencies:
kemal: kemal:
github: kemalcr/kemal github: kemalcr/kemal
commit: a8c0f09b858162bd13c96663febef5527b322a32
kemal-session: kemal-session:
github: kemalcr/kemal-session github: kemalcr/kemal-session
sqlite3: sqlite3:
+11 -11
View File
@@ -1,13 +1,13 @@
require "compress/zip" require "zip"
require "archive" require "archive"
# A unified class to handle all supported archive formats. It uses the # A unified class to handle all supported archive formats. It uses the ::Zip
# Compress::Zip module in crystal standard library if the target file is a # module in crystal standard library if the target file is a zip archive.
# zip archive. Otherwise it uses `archive.cr`. # Otherwise it uses `archive.cr`.
class ArchiveFile class ArchiveFile
def initialize(@filename : String) def initialize(@filename : String)
if [".cbz", ".zip"].includes? File.extname filename if [".cbz", ".zip"].includes? File.extname filename
@archive_file = Compress::Zip::File.new filename @archive_file = Zip::File.new filename
else else
@archive_file = Archive::File.new filename @archive_file = Archive::File.new filename
end end
@@ -20,16 +20,16 @@ class ArchiveFile
end end
def close def close
if @archive_file.is_a? Compress::Zip::File if @archive_file.is_a? Zip::File
@archive_file.as(Compress::Zip::File).close @archive_file.as(Zip::File).close
end end
end end
# Lists all file entries # Lists all file entries
def entries def entries
ary = [] of Compress::Zip::File::Entry | Archive::Entry ary = [] of Zip::File::Entry | Archive::Entry
@archive_file.entries.map do |e| @archive_file.entries.map do |e|
if (e.is_a? Compress::Zip::File::Entry && e.file?) || if (e.is_a? Zip::File::Entry && e.file?) ||
(e.is_a? Archive::Entry && e.info.file?) (e.is_a? Archive::Entry && e.info.file?)
ary.push e ary.push e
end end
@@ -37,8 +37,8 @@ class ArchiveFile
ary ary
end end
def read_entry(e : Compress::Zip::File::Entry | Archive::Entry) : Bytes? def read_entry(e : Zip::File::Entry | Archive::Entry) : Bytes?
if e.is_a? Compress::Zip::File::Entry if e.is_a? Zip::File::Entry
data = nil data = nil
e.open do |io| e.open do |io|
slice = Bytes.new e.uncompressed_size slice = Bytes.new e.uncompressed_size
+4 -6
View File
@@ -31,9 +31,9 @@ class Logger
{% end %} {% end %}
@log = Log.for("") @log = Log.for("")
@backend = Log::IOBackend.new
format_proc = ->(entry : Log::Entry, io : IO) do @backend = Log::IOBackend.new
@backend.formatter = ->(entry : Log::Entry, io : IO) do
color = :default color = :default
{% begin %} {% begin %}
case entry.severity.label.to_s().downcase case entry.severity.label.to_s().downcase
@@ -50,14 +50,12 @@ class Logger
io << entry.message io << entry.message
end end
@backend.formatter = Log::Formatter.new &format_proc Log.builder.bind "*", @@severity, @backend
Log.setup @@severity, @backend
end end
# Ignores @@severity and always log msg # Ignores @@severity and always log msg
def log(msg) def log(msg)
@backend.write Log::Entry.new "", Log::Severity::None, msg, @backend.write Log::Entry.new "", Log::Severity::None, msg, nil
Log::Metadata.empty, nil
end end
def self.log(msg) def self.log(msg)
+3 -3
View File
@@ -1,13 +1,13 @@
require "./api" require "./api"
require "sqlite3" require "sqlite3"
require "compress/zip" require "zip"
module MangaDex module MangaDex
class PageJob class PageJob
property success = false property success = false
property url : String property url : String
property filename : String property filename : String
property writer : Compress::Zip::Writer property writer : Zip::Writer
property tries_remaning : Int32 property tries_remaning : Int32
def initialize(@url, @filename, @writer, @tries_remaning) 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 # Find the number of digits needed to store the number of pages
len = Math.log10(chapter.pages.size).to_i + 1 len = Math.log10(chapter.pages.size).to_i + 1
writer = Compress::Zip::Writer.new zip_path writer = Zip::Writer.new zip_path
# Create a buffered channel. It works as an FIFO queue # Create a buffered channel. It works as an FIFO queue
channel = Channel(PageJob).new chapter.pages.size channel = Channel(PageJob).new chapter.pages.size
spawn do spawn do
+1 -1
View File
@@ -4,7 +4,7 @@ require "./mangadex/*"
require "option_parser" require "option_parser"
require "clim" require "clim"
MANGO_VERSION = "0.7.0" MANGO_VERSION = "0.7.1"
macro common_option macro common_option
option "-c PATH", "--config=PATH", type: String, option "-c PATH", "--config=PATH", type: String,