#!/usr/bin/env ruby # Rubyripper - A secure ripper for Linux/BSD/OSX # Copyright (C) 2007 Bouke Woudstra (rubyripperdev@gmail.com) # # This file is part of Rubyripper. Rubyripper is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see $PREFIX='/usr/local' $BINDIR='/bin' $LOCALE='/share/locale' $ICONDIR='/share/icons/hicolor/128x128/apps' $DESKTOP='/share/applications' $RUBYDIR= "#{$:[0]}" $RUBYDIR= $RUBYDIR[$RUBYDIR.index('/lib')..-1] # remove the prefix if RUBY_PLATFORM.include?('darwin') $INSTALL = 'install' else $INSTALL = 'install -D' end $GTK2 = false $CLI = false $LANG_ALL = false $LANG = [] require './rr_lib.rb' if ARGV.include?('--help') || ARGV.include?('-h') || ARGV.length == 0 puts "" puts "--prefix= (default: #{$PREFIX})" puts "--bindir= (default: #{$BINDIR})" puts "--locale= (default: #{$LOCALE})" puts "--icondir= (default: #{$ICONDIR})" puts "--desktop= (default: #{$DESKTOP})" puts "--ruby= (default: #{$RUBYDIR})" puts "" puts "--enable-gtk2 (install the gtk2 frontend)" puts "--enable-cli (install the cli frontend)" puts "--enable-lang-all (install all locale files)" puts "--enable-lang= (install specific locale file, separate with a comma)" puts "" puts "--update-lang (updates the locale files)" puts "--update-lib (resets file locations in ruby files)" puts "" exit() end def update_lang #will be called by the self-created Makefile :) require 'gettext/utils' GetText.update_pofiles("rubyripper", ["rubyripper_cli.rb","rubyripper_gtk2.rb", "rr_lib.rb"], "Rubyripper #{$rr_version}", "./locale/po") GetText.create_mofiles(true, "./locale/po", "./locale") exit() end def check_deps puts "Checking the NEEDED dependencies...." begin require 'gettext' rescue LoadError puts "ruby-gettext is not found. Please install ruby-gettext.\nInstall can't proceed." exit() end installed('cdparanoia') ? puts("cdparanoia found...") : puts("cdparanoia NOT found") puts "\nChecking the OPTIONAL dependencies..." puts "Testing support for the graphical frontend..." begin require 'gtk2' puts "ruby-gtk2 bindings found" rescue LoadError puts "ruby-gtk2 is not found. The graphical frontend won't work!" end puts "\nTesting support for freedb metadata fetching..." (installed('cd-discid') || installed('discid')) ? puts("cd-discid or discid found...") : puts("Neither cd-discid or discid could be found.") puts "\nTesting support for ejecting the disk tray..." (installed('eject') || installed('diskutil')) ? puts("eject or disktutil found...") : puts("Neither eject or disktutil could be found.") puts "\nTesting support for different codecs on your system..." installed('flac') ? puts("flac found...") : puts("flac NOT found.") installed('oggenc') ? puts("oggenc (vorbis) found...") : puts("oggenc (vorbis) NOT found.") installed('lame') ? puts("lame (mp3) found...") : puts("lame (mp3) NOT found.") puts "\nTesting support for replaygain..." installed('wavgain') ? puts("wavgain found...") : puts("wavgain NOT found.") installed('vorbisgain') ? puts("vorbisgain found...") : puts("vorbisgain NOT found.") installed('mp3gain') ? puts("mp3gain found...") : puts("mp3gain NOT found.") puts "\nTesting support for normalize..." installed('normalize') ? puts("normalize found...") : puts("normalize NOT found") end def update_lib ['rr_lib.rb', 'rubyripper_gtk2.rb', 'rubyripper_cli.rb'].each do |filename| file = File.readlines(filename) index = 0 file.each do |line| if line =~ /LOCALE=/ file[index] = "LOCALE=[ENV['PWD'] + \"/locale\", \"#{$PREFIX + $LOCALE}\"]" break elsif line =~ /ICONDIR=/ file[index] = "ICONDIR=[ENV['PWD'], \"#{$PREFIX + $ICONDIR}\"]" elsif line =~ /RUBYDIR=/ file[index] = "RUBYDIR=[ENV['PWD'], File.dirname(__FILE__), \"#{$PREFIX + $RUBYDIR}\"]" break end index += 1 end outputfile = File.open(filename, "w+") file.each{|line| outputfile.puts line} outputfile.close() end end ARGV.each do |argument| if argument[0,9] == "--prefix=" $PREFIX = argument[9..-1] elsif argument[0,9] == "--bindir=" $BINDIR = argument[9..-1] elsif argument[0,9] == "--locale=" $LOCALE = argument[9..-1] elsif argument[0,10] == "--icondir=" $ICONDIR = argument[10..-1] elsif argument[0,10] == "--desktop=" $DESKTOP = argument[10..-1] elsif argument[0,7] == "--ruby=" $RUBYDIR = argument[7..-1] elsif argument == '--enable-gtk2' $GTK2 = true elsif argument == '--enable-cli' $CLI = true elsif argument == '--enable-lang-all' $LANG_ALL = true elsif argument[0,14] == '--enable-lang=' $LANG = argument[14..-1].split(',') elsif argument == "--update-lang" update_lang() elsif argument == "--update-lib" update_lib() exit() end end if $LANG_ALL $LANG=["nl", "de", "hu", "ru", "es"] end unless ($GTK2 || $CLI) puts "You have to choose at least one frontend you want to install!" puts "" exit() end check_deps() puts "Creating the Makefile..." makefile = File.new("Makefile", "w+") makefile.puts "#This Makefile is automatically created by configure" makefile.puts "" makefile.puts "BINDIR=#{$PREFIX}#{$BINDIR}" makefile.puts "LOCALE=#{$PREFIX}#{$LOCALE}" makefile.puts "ICONDIR=#{$PREFIX}#{$ICONDIR}" makefile.puts "DESKTOP=#{$PREFIX}#{$DESKTOP}" makefile.puts "RUBYDIR=#{$PREFIX}#{$RUBYDIR}" makefile.puts "" makefile.puts "all:" makefile.puts "\t`ruby configure --update-lang` #update the locale files" makefile.puts "" makefile.puts "install: all" makefile.puts "\t#{$INSTALL} rr_lib.rb $(prefix)$(DESTDIR)$(RUBYDIR)/rr_lib.rb" if $GTK2 makefile.puts "\t#{$INSTALL} -m 755 rubyripper_gtk2.rb $(prefix)$(DESTDIR)$(BINDIR)/rrip_gui" makefile.puts "\t#{$INSTALL} rubyripper.png $(prefix)$(DESTDIR)$(ICONDIR)/rubyripper.png" makefile.puts "\t#{$INSTALL} rubyripper.desktop $(prefix)$(DESTDIR)$(DESKTOP)/rubyripper.desktop" end if $CLI makefile.puts "\tinstall -m 755 -D rubyripper_cli.rb $(prefix)$(DESTDIR)$(BINDIR)/rrip_cli" end $LANG.each do |lang| makefile.puts "\t#{$INSTALL} locale/#{lang}/LC_MESSAGES/rubyripper.mo $(prefix)$(DESTDIR)$(LOCALE)/#{lang}/LC_MESSAGES/rubyripper.mo" end makefile.puts "" makefile.puts "uninstall:" makefile.puts "\trm $(prefix)$(DESTDIR)$(RUBYDIR)/rr_lib.rb" if $GTK2 makefile.puts "\trm $(prefix)$(DESTDIR)$(BINDIR)/rrip_gui" makefile.puts "\trm $(prefix)$(DESTDIR)$(ICONDIR)/rubyripper.png" makefile.puts "\trm $(prefix)$(DESTDIR)$(DESKTOP)/rubyripper.desktop" end if $CLI makefile.puts "\trm $(prefix)$(DESTDIR)$(BINDIR)/rrip_cli" end $LANG.each do |lang| makefile.puts "\trm $(prefix)$(DESTDIR)$(LOCALE)/#{lang}/LC_MESSAGES/rubyripper.mo" end makefile.puts "" makefile.puts "clean:" makefile.puts "\t`ruby configure --update-lib`" makefile.puts "\trm Makefile" makefile.puts "distclean:" makefile.puts "" makefile.close update_lib() #set file locations in the ruby files puts "A summary of your settings:" puts "" puts "Using the following locations for install:" puts "* Executables: #{$PREFIX}#{$BINDIR}" puts "* Localization files: #{$PREFIX}#{$LOCALE}" puts "* Icon file: #{$PREFIX}#{$ICONDIR}" puts "* Desktop file: #{$PREFIX}#{$DESKTOP}" puts "* Ruby library: #{$PREFIX}#{$RUBYDIR}" puts "" if $GTK2 == true: puts "Gtk2 frontend will be installed" end if $CLI == true: puts "Cli frontend will be installed" end unless $LANG.empty?: puts "Languages to be installed: #{$LANG.join(', ')}" end puts "" puts "You can now run make install" puts "Make sure you've got the writing privileges" puts ""