-- RENAME THIS PROGRAM TO STARTUP --
-- enderchest for fuel goes in slot 15
-- enderchest for item dropoff goes in slot 16

-- ARGS --

args = {...}
args[1] = tonumber(args[1])


-- VARIABLES --

file = "config"
usage = ("usage: programname [#] [left or right]")

-- STARTUP CODE --

if fs.exists(file) then
	f = fs.open(file, "r")
	left = tonumber(f.readLine())
	turn = f.readLine()
	len = tonumber(f.readLine())
	f.close()
	print("loaded config")
else
	if #args ~= 2 then
		return print(usage)
	elseif args[2] ~= "left" then
		if args[2] ~= "right" then
			return print(usage)
		end
	elseif args[2] ~= "right" then
		if args[2] ~= "left" then
			return print(usage)
		end
	end

	f = fs.open(file, "w")
	f.writeLine("1")
	f.writeLine(args[2])
	f.writeLine(tostring(args[1]))
	f.close()
	print("config made")

	print("rebooting computer to save changes")
	sleep(3)
	os.reboot()

end

-- FUNCTIONS --

function refuel(poo)
	digUp()
	if turtle.getFuelLevel() < poo then
		turtle.select(15)
		turtle.placeUp()
		turtle.suckUp()
		turtle.dropUp(turtle.getItemCount(15)-2)
		turtle.refuel()
		turtle.refuel()
		turtle.digUp()
	end
end

function unload()
	digUp()
	if turtle.getItemCount(9) > 0 then
		turtle.select(16)
		turtle.placeUp()
		for o = 1,9 do
			turtle.select(o)
			turtle.dropUp()
		end
		turtle.select(16)
		digUp()
		if turtle.getItemCount(10) > 0 then
			turtle.select(10)
			turtle.transferTo(1)
		end
	end
	turtle.select(1)
end

function dig()
  repeat
    turtle.dig()
    sleep(0.45)
  until not turtle.detect()
end

function digUp()
  repeat
    turtle.digUp()
    sleep(0.45)
  until not turtle.detectUp()
end

function goforward()
  while not turtle.forward() do
    turtle.attack()
  end
end

function toggle(var)
	if turn == "left" then
		turn = "right"
	elseif turn == "right" then
		turn = "left"
	end
end

function save(lol,haha)
	f = fs.open(file,"w")
	f.writeLine(tostring(lol+1))
	f.writeLine(haha)
	f.writeLine(len)
	f.close()
end

-- CODE --

if turtle.getItemCount(16) < 1 then
	turtle.select(16)
	turtle.digUp()
elseif turtle.getItemCount(15) < 1 then
	turtle.select(15)
	turtle.digUp()
end

while true do

	turtle.select(1)

	for i = left,len-1 do
		refuel(10)
		unload()
		turtle.digDown()
		digUp()
		dig()
		goforward()
		save(i,turn)
	end

	if turn == "left" then
		digUp()
		turtle.digDown()
		turtle.turnLeft()
		dig()
		goforward()
		turtle.turnLeft()
	elseif turn == "right" then
		digUp()
		turtle.digDown()
		turtle.turnRight()
		dig()
		goforward()
		turtle.turnRight()
	end

	toggle(turn)
	left = 1
	save(left,turn)
end