#!/usr/bin/env ruby require "fileutils" MUSIC_DIR = "/pegasus/pub/music/artists" ARTISTS = < (i + 1) device = args[i + 1] end end end if device == "" $stderr.puts "Specify device." return 1 end run(*%W[sudo mkfs.vfat -n JOSHMUSIC #{device}]) or raise FileUtils.rm_rf(MOUNT_DIR) FileUtils.mkdir(MOUNT_DIR) run(*%W[sudo mount #{device} #{MOUNT_DIR} -o uid=#{`whoami`.chomp}]) or raise begin ARTISTS.each do |artist| src = "#{MUSIC_DIR}/#{artist}" dest = "#{MOUNT_DIR}/#{artist}" src_folders = Dir["#{src}/*"].select do |path| File.directory?(path) end.sort FileUtils.mkdir(dest) src_folders.each do |src_folder| puts "Copying #{src_folder}..." dest_folder = "#{dest}/#{File.basename(src_folder)}" FileUtils.mkdir(dest_folder) src_files = Dir["#{src_folder}/*"].select do |path| File.file?(path) end.sort src_files.each do |src_file| FileUtils.cp(src_file, dest_folder) end end end ensure run(*%W[sudo umount #{MOUNT_DIR}]) or raise end return 0 end exit(main(ARGV))