From b825ff7a6cee438fb8e7ef922f776200ae605f92 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Mon, 7 Dec 2020 22:00:12 -0500 Subject: [PATCH] add initial version --- mk-usb-car-music.rb | 93 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100755 mk-usb-car-music.rb diff --git a/mk-usb-car-music.rb b/mk-usb-car-music.rb new file mode 100755 index 0000000..f185da7 --- /dev/null +++ b/mk-usb-car-music.rb @@ -0,0 +1,93 @@ +#!/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))