| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- # Copyright (c) 2013 Daniele Bartolini, Michele Rossi
- # Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
- #
- # Permission is hereby granted, free of charge, to any person
- # obtaining a copy of this software and associated documentation
- # files (the "Software"), to deal in the Software without
- # restriction, including without limitation the rights to use,
- # copy, modify, merge, publish, distribute, sublicense, and/or sell
- # copies of the Software, and to permit persons to whom the
- # Software is furnished to do so, subject to the following
- # conditions:
- #
- # The above copyright notice and this permission notice shall be
- # included in all copies or substantial portions of the Software.
- #
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- # OTHER DEALINGS IN THE SOFTWARE.
- require 'optparse'
- require 'ostruct'
- $extension = [".cpp", ".h"]
- $files_list = Array.new
- #------------------------------------------------------------------------------
- def validate_command_line(args)
- if args.length != 2
- return false
- end
- if args[0] != "--path"
- return false
- end
- return true
- end
- #------------------------------------------------------------------------------
- def parse_command_line(args)
- banner = "Usage: crown-android.rb --target <android-target> --name <project-name> --path <project-path>\n"
- if not validate_command_line(args)
- print banner
- exit
- end
- options = OpenStruct.new
- OptionParser.new do |opts|
- opts.banner = banner
- opts.on("-p", "--path PATH", "Code Path to clean") do |p|
- options.path = p
- end
- opts.on_tail("-h", "--help", "Show this message") do
- puts opts
- exit
- end
- end.parse!(args)
- return options
- end
-
- #------------------------------------------------------------------------------
- def lists_files(path)
- files = Dir.entries(path)
- for entry in files
- if entry == "." || entry == ".."
- next
- end
- tmp = path + '/' + entry
- if File.directory?(tmp)
- lists_files(tmp)
- elsif File.file?(tmp)
- ext = File.extname(tmp)
- if ext == $extension[0] || ext == $extension[1] || ext == $extension[2]
- $files_list.push(tmp);
- end
- end
- end
-
- end
- #------------------------------------------------------------------------------
- def clean_file(file_name)
- lines = []
- # Copies each file's line
- File.open(file_name) do |file|
- file.each_line do |line|
- lines << line
- end
- end
- clean = true
- lines.each_index do |index|
- line = lines[index]
- #match one or more spaces/tabs at the end of the line -> nothing
- new_line = line.gsub(/[ \t]+$/, "")
- if(new_line != line)
- if(clean)
- puts "Cleaning '#{file_name}'"
- clean = false
- end
- lines[index] = new_line
- end
- end
- if(!clean)
- File.open(file_name, 'w') do |file|
- lines.each { |line| file.write(line) }
- end
- end
- end
- opts = parse_command_line(ARGV)
- lists_files(opts.path)
- $files_list.each { |file| clean_file(file) }
|