main
sandyx 11 months ago
parent 3b6cf68dde
commit fe4edf60f7

35
rub

@ -15,6 +15,8 @@ ANSI_CLEAR = "\e[0m"
RUB = "#{ANSI_RED}RUB#{ANSI_CLEAR}" RUB = "#{ANSI_RED}RUB#{ANSI_CLEAR}"
RUBDIR = "#{Dir.home}/.rub/" RUBDIR = "#{Dir.home}/.rub/"
RUBGIT="#{RUBDIR}/rub/" RUBGIT="#{RUBDIR}/rub/"
RUBNET_SERVERS=["127.0.0.1"]
RUBNET_PORT=6969
TMPLDIR = "#{RUBDIR}/templates" TMPLDIR = "#{RUBDIR}/templates"
RUBEDR="mousepad" RUBEDR="mousepad"
@ -44,7 +46,7 @@ def rub_init(name="app", tmpl="c")
when "cpp" when "cpp"
TMPL::CPP.call(name, tmpl) TMPL::CPP.call(name, tmpl)
else else
error("oops!") error("oops! :c")
end end
end end
@ -74,6 +76,31 @@ def rub_edit(file)
`#{RUBEDR} #{file}` `#{RUBEDR} #{file}`
end end
def rubnet_start
message("starting rubnet server...")
pid = fork do
require './rubnet.rb'
end
message("rubnet pid: #{pid}")
end
def rubnet_end
end
def rubnet_ctrl(cmd)
case cmd
when "start"
when "stop"
else
error("unknown rubnet command")
end
end
def parse_arg(arg) def parse_arg(arg)
case arg case arg
when "init" when "init"
@ -95,6 +122,9 @@ def parse_arg(arg)
when "delete" when "delete"
rub_delete rub_delete
when "server"
error("specify a command for rubnet server")
else #if none of the above, pass args onto build.rb else #if none of the above, pass args onto build.rb
require "#{Dir.pwd}/build.rb" require "#{Dir.pwd}/build.rb"
exit 0 exit 0
@ -116,6 +146,9 @@ def parse_args(argv)
when "edit" when "edit"
rub_edit(argv[1]) rub_edit(argv[1])
when "server"
rubnet_ctrl(argv[1])
end end
end end

@ -0,0 +1,61 @@
#the rubnet server
require 'socket'
HTTP_NIL = "NIL"
RUBNET = "#{ANSI_RED}RUBNET#{ANSI_CLEAR}"
RUBNET_COMPILE = 'COMPILE'
def rubnet_message(msg)
puts "#{RUBNET}: #{msg}"
end
class Request
attr_reader :method
attr_reader :data
attr_reader :uri
attr_reader :version
attr_reader :headers
def parse_request(str)
if @data[0].nil?
@method = HTTP_NIL
return
end
@method = @data[0].split(" ")[0]
@uri = @data[0].split(" ")[1]
@version = @data[0].split(" ")[2]
@headers = @data.map.drop(1) { |header|
{header.split(": ")[0] => header.split(": ")[1]}
}
end
def initialize(cli)
@data = [cli.gets]
parse_request(@data)
end
end
def rubnet_main
TCPServer.open("127.0.0.1", RUBNET_PORT) { |srv|
mutex = Mutex.new
loop do
cli = srv.accept
mutex.synchronize {
h = Request.new(cli)
case h.method
when RUBNET_COMPILE
rubnet_compile(h)
else
rubnet_message("unknown method: #{h.method}")
end
}
end
}
end
rubnet_main
Loading…
Cancel
Save