mirror of
https://github.com/hkalexling/Mango.git
synced 2025-08-03 11:25:29 -04:00
Fix CLI tool not exiting
This commit is contained in:
parent
99a77966ad
commit
c07f421322
@ -6,6 +6,7 @@
|
|||||||
class MainFiber
|
class MainFiber
|
||||||
@@channel = Channel(-> Nil).new
|
@@channel = Channel(-> Nil).new
|
||||||
@@done = Channel(Bool).new
|
@@done = Channel(Bool).new
|
||||||
|
@@main_fiber = Fiber.current
|
||||||
|
|
||||||
def self.start_and_block
|
def self.start_and_block
|
||||||
loop do
|
loop do
|
||||||
@ -21,9 +22,13 @@ class MainFiber
|
|||||||
end
|
end
|
||||||
|
|
||||||
def self.run(&block : -> Nil)
|
def self.run(&block : -> Nil)
|
||||||
|
if @@main_fiber == Fiber.current
|
||||||
|
block.call
|
||||||
|
else
|
||||||
@@channel.send block
|
@@channel.send block
|
||||||
until @@done.receive
|
until @@done.receive
|
||||||
Fiber.yield
|
Fiber.yield
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
19
src/mango.cr
19
src/mango.cr
@ -45,19 +45,24 @@ class CLI < Clim
|
|||||||
version "Version #{MANGO_VERSION}", short: "-v"
|
version "Version #{MANGO_VERSION}", short: "-v"
|
||||||
common_option
|
common_option
|
||||||
run do |opts|
|
run do |opts|
|
||||||
Config.load(opts.config).set_current
|
|
||||||
MangaDex::Downloader.default
|
|
||||||
Plugin::Downloader.default
|
|
||||||
|
|
||||||
puts BANNER
|
puts BANNER
|
||||||
puts DESCRIPTION
|
puts DESCRIPTION
|
||||||
puts
|
puts
|
||||||
|
|
||||||
# empty ARGV so it won't be passed to Kemal
|
# empty ARGV so it won't be passed to Kemal
|
||||||
ARGV.clear
|
ARGV.clear
|
||||||
|
|
||||||
|
Config.load(opts.config).set_current
|
||||||
|
MangaDex::Downloader.default
|
||||||
|
Plugin::Downloader.default
|
||||||
|
|
||||||
|
spawn do
|
||||||
Server.new.start
|
Server.new.start
|
||||||
end
|
end
|
||||||
|
|
||||||
|
MainFiber.start_and_block
|
||||||
|
end
|
||||||
|
|
||||||
sub "admin" do
|
sub "admin" do
|
||||||
desc "Run admin tools"
|
desc "Run admin tools"
|
||||||
usage "mango admin [tool]"
|
usage "mango admin [tool]"
|
||||||
@ -123,8 +128,4 @@ class CLI < Clim
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
spawn do
|
CLI.start(ARGV)
|
||||||
CLI.start(ARGV)
|
|
||||||
end
|
|
||||||
|
|
||||||
MainFiber.start_and_block
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user