#!/usr/bin/env ruby # Copyright (C) 2015 all contributors # License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt) usage = "#$0 [-d DATABASE-URI] ACTION [ARGS]" Thread.abort_on_exception = $stderr.sync = $stdout.sync = true trap(:INT, 'SYSTEM_DEFAULT') trap(:PIPE, 'SYSTEM_DEFAULT') require 'dtas/mlib' require 'optparse' path = '~/.dtas/mlib.sqlite' db = File.expand_path(path) OptionParser.new('', 24, ' ') do |op| op.banner = usage op.on('-d', '--database ', "database (default: #{path}") do |d| db = d end op.on('-h', '--help') do puts(op.to_s) exit end op.parse!(ARGV) end unless db.include?('://') dir = File.dirname(db) unless File.directory?(dir) require 'fileutils' FileUtils.mkpath(dir) end end def mlib(db, migrate = false) m = DTAS::Mlib.new(db) m.migrate if migrate m end case action = ARGV.shift when 'update', 'up' directory = ARGV.shift or abort "DIRECTORY required\n#{usage}" mlib(db, migrate = true).update(directory) when 'dump' # mainly for debugging directory = ARGV.shift || '/' mlib(db).dump(directory) else abort usage end