#This script allows the user to specify how many files they would like to include in their Git repo. #It also allows them to specify how many insertions and deletions they would like. require 'git' class Dataset require 'git' #Initialize variables to hold data entered by the user def initialize (repo, files, inserts, deletes, message="Commits to a test data set") @repo = repo @files = files @inserts = inserts @deletes = deletes @message = message end def createRepo(repo) Dir.chdir repo Dir.mkdir "testrepo" Dir.chdir "testrepo" #Initialize this as a git repo $g = Git.init end def createFiles(files) puts files.inspect i = 1 while i <= files.to_i myFile = i.to_s puts myFile.inspect #Add the file and dump in some random content File.open(myFile, "wb") do |f2| f2.puts rand $g.add # git add -- "." puts i.inspect i += 1 end $g.commit(@message) end end def insertData(inserts) i = 1 while i <= inserts.to_i #Open the file and ad some content myFile = i.to_s puts myFile.inspect File.open(myFile, "wb") do |f2| f2.puts "Hello, world." $g.add # git add -- "." puts i.inspect i += 1 end $g.commit(@message) end end def deleteData(deletes) i = 1 while i <= deletes.to_i myFile = i.to_s puts myFile.inspect File.open(myFile, "wb") do |f2| File.foreach(myFile).with_index do |line,line_number| f2.puts line if line_number.even? # <== line numbers start at 0 end $g.add # git add -- "." puts i.inspect i += 1 end $g.commit(@message) end end #End class end def main() #Ask the user where they would like the Git repo to be created puts "Specify the location for your Git repo" userRepo = gets.chomp puts "Please enter the number of files required" userFiles = gets.chomp puts "Please enter the number of insertions" userInserts = gets.chomp puts "Please enter the number of deletions" userDeletes = gets.chomp #Create an instance of the class dataset = Dataset.new(userRepo, userFiles, userInserts, userDeletes) dataset.createRepo(userRepo) dataset.createFiles(userFiles) dataset.insertData(userInserts) dataset.deleteData(userDeletes) end #run main main()