xbs/xbs.rb
2021-11-16 18:21:02 +00:00

248 lines
6 KiB
Ruby

require 'fileutils'
def process (line)
s = line.split
if s[0] == "build"
puts "Building via ewfm."
runner = `ruby main.rb`
end
if s[0] == "run"
if s.length() != 2
puts "Invalid amount of arguments at run line."
else
puts "Running command " + s[1]
runner = `#{s[1]}`
end
end
if s[0] == "remove"
if s.length() != 2
puts "Invalid amount of arguments at remove line."
else
puts "Deleting " + s[1]
if Dir.exist?(s[1])
FileUtils.remove_dir(s[1])
else
FileUtils.rm(s[1])
end
end
end
if s[0] == "copy"
if s.length() != 3
puts "Invaid amount of arguments at copy line."
else
puts "Copying " + s[1]
FileUtils.cp_r(s[1], s[2])
end
end
if s[0] == "remote"
if s.length() != 3
puts "Invalid amount of arguments at remote line."
else
puts "Running command " + s[2]+ " on remote host " + s[1]
runner = `ssh #{s[1]} '#{s[2]}'`
end
end
if s[0] == "upload"
if s.length() != 3
puts "Invalid amount of arguments at upload line."
else
puts "Uploading " + s[2] + " to remote host " + s[1]
runner = `scp #{s[2]} #{s[1]}:#{s[2]}`
end
end
if s[0] == "archive"
if s.length() != 3
puts "Invalid amount of arguments at archive line."
else
puts "Archiving " + s[2] + " with algorithm " + s[1]
if s[1] == "tar"
runner = `tar -c #{s[2]} -f #{s[2]}.tar`
end
if s[1] == "lzma"
runner = `lzma -z #{s[2]}`
end
if s[1] == "xz"
runner = `xz -z #{s[2]}`
end
if s[1] == "gzip"
runner = `gzip #{s[2]}`
end
if s[1] == "gz"
runner = `gzip #{s[2]}`
end
if s[1] == "compress"
runner = `compress #{s[2]}`
end
if s[1] == "ncompress"
runner = `compress #{s[2]}`
end
if s[1] == "z"
runner = `compress #{s[2]}`
end
if s[1] == "bzip2"
runner = `bzip2 -z #{s[2]}`
end
if s[1] == "bz2"
runner = `bzip2 -z #{s[2]}`
end
if s[1] == "zip"
runner = `zip #{s[2]}.zip #{s[2]}`
end
end
end
if s[0] == "move"
if s.length() != 3
puts "Invalid amount of arguments at move line."
else
puts "Moving " + s[2] + " to " + s[1]
FileUtils.mv(s[1], s[2])
end
end
end
if ARGV[0] == "init"
if not File.exist?('main.rb')
puts "ewfm installation not found."
exit
end
if File.exist?('build.xbs')
puts "xbs already initialised in this installation."
exit
end
puts "Initalising xbs."
if File.exist?('input/site.conf')
f = File.new('build.xbs', "w")
f.syswrite("default")
FileUtils.mkdir_p("sites/")
FileUtils.move("input/", "sites/")
FileUtils.move("sites/input/", "sites/default/")
b = File.new('sites/default/make.xbs', 'w')
b.syswrite("build")
else
f = File.new('build.xbs', "w")
FileUtils.mkdir_p("sites/")
end
exit
end
if ARGV[0] == "install"
if not File.exist?('main.rb')
puts "ewfm installation not found."
exit
end
if ARGV.length() != 2
puts "Usage: xbs install <theme/processor>"
exit
end
if not File.exist?(ARGV[1])
puts "Folder not found."
exit
end
if File.exist?(ARGV[1] + "/template.html")
if File.exist?(ARGV[1] + "/dist")
puts "Installing theme " + ARGV[1]
FileUtils.move(ARGV[1], "themes")
end
exit
end
if File.exist?(ARGV[1] + "/pre.sh")
puts "Installing processor " + ARGV[1]
if not File.exist?("proc/")
FileUtils.mkdir_p("proc/")
end
FileUtils.move(ARGV[1], "proc")
exit
end
if File.exist?(ARGV[1] + "/post.sh")
puts "Installing processor " + ARGV[1]
if not File.exist?("proc/")
FileUtils.mkdir_p("proc/")
end
FileUtils.move(ARGV[1], "proc")
exit
end
end
if ARGV[0] == "build"
if not File.exist?('main.rb')
puts "ewfm installation not found."
exit
end
if ARGV.length() != 1
puts "Building site " + ARGV[1]
if File.exist?('input/site.conf')
puts "There is a site in input, this is being moved."
FileUtils.move("input", "input-backup")
end
if not File.exist?('sites/' + ARGV[1] + '/make.xbs')
puts ARGV[1] + " either doesn't exist or has no makefile."
exit
end
puts "Beginning build of " + ARGV[1] + "."
if File.exist?("output/")
FileUtils.remove_dir("output")
end
FileUtils.mkdir_p("output/")
FileUtils.move("sites/" + ARGV[1], "input/")
a = IO.readlines("input/make.xbs", chomp: true)
for line in a
process(line)
end
FileUtils.move("input/", "sites/" + ARGV[1])
puts "Build complete successfully."
exit
end
if not File.exist?("build.xbs")
puts "No site inputted and no build.xbs found."
exit
else
sites = IO.readlines("build.xbs", chomp: true)
for site in sites
puts "Building site " + site
if File.exist?('input/site.conf')
puts "There is a site in input, this is being moved."
FileUtils.move("input", "input-backup")
end
if not File.exist?('sites/' + site + '/make.xbs')
puts site + " either doesn't exist or has no makefile."
exit
end
puts "Beginning build of " + site + "."
if Dir.exist?("output/")
FileUtils.remove_dir("output")
end
FileUtils.mkdir_p("output/")
FileUtils.move("sites/" + site, "input/")
a = IO.readlines("input/make.xbs", chomp: true)
for line in a
process(line)
end
FileUtils.move("input/", "sites/" + site)
puts "Build complete successfully."
end
end
end
if ARGV[0] == "new"
if not File.exist?('main.rb')
puts "ewfm installation not found."
exit
end
if ARGV.length() != 2
puts "Usage: xbs new <name>"
exit
end
dir = "sites/" + ARGV[1]
FileUtils.mkdir_p("sites/" + ARGV[1])
f = File.new(dir + '/site.conf', "w")
f.syswrite("example.com\nNew site\nlinear-base")
b = File.new(dir + '/inclusions.conf', "w")
b.syswrite(".jpeg\n.jpg\n.gif\n.png\n.bmp\n.webm\n.webp\n.txt\n.rtf\n.doc\n.xls\n.docx\n.xlsx\n.zip\n.tar\n.gz\n.tgz\n.txz\n.lzma\n.xz\n.bz2\n.bzip2\n.tbz\n.tbz2")
c = File.new(dir + '/make.xbs', "w")
c.syswrite("build")
puts "Site created, please edit the files included in " + dir + "."
end
if ARGV[0] == "help"
puts "xbs is a build system for ewfm.\ninit - Initialises xbs for your ewfm setup\ninstall <theme/processor> - Installs a theme or processor automatically.\nbuild <optional: site> - builds your sites\nnew <name> - creates a site.\n\nCreated by threeoh6000\newfm.colean.cc"
end