Skip to content

Instantly share code, notes, and snippets.

@SupaHam
Last active August 29, 2015 14:20
Show Gist options
  • Save SupaHam/c4a34f3f6d92a3af2b09 to your computer and use it in GitHub Desktop.
Save SupaHam/c4a34f3f6d92a3af2b09 to your computer and use it in GitHub Desktop.
Server instance deploying script.
#!/usr/bin/python
import os, sys, yaml, shutil
homeDir = "/home/minecraft/"
serversDir = "/home/minecraft/"
dataDir = homeDir + ".deploy/"
srvTemplate = dataDir + "template"
# FILES
mcProps = "server.properties"
def get(key):
try:
return data[key]
except KeyError:
return None
def loadConfig():
global data
global dataFile
try:
data = yaml.load(file(dataDir + "data.yml", "r"))
except IOError: # First run
data = yaml.load("{}")
dataFile = file(dataDir + "data.yml", "w")
def set(key, value):
data[key] = value
yaml.dump(data, dataFile)
def cfgRepl(fileName, key, value):
key = str(key)
value = str(value)
os.system('sed -i "s/' + key + '=.*/' + key + '=' + value + '/" "' + fileName + '"')
def deploy(name, port, motd=None):
serverDir = serversDir + name + '/'
shutil.copytree(srvTemplate, serverDir)
cfgRepl(serverDir + mcProps, 'server-port', port)
cfgRepl(serverDir + mcProps, 'server-name', name)
if motd != None:
cfgRepl(serverDir + mcProps, 'motd', name)
pass
def main():
loadConfig()
argLength = len(sys.argv) - 1
if argLength == 0:
print "Incorrect usage: deploy <name> [port]"
return
name = sys.argv[1]
if argLength > 1:
port = sys.argv[2]
else:
lastPort = get('last-port')
if lastPort == None: lastPort = 25566
port = lastPort + 1
deploy(name, port)
set('last-port', port)
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment