view create.py @ 11:5e2df576a42d

add new command 'create' to ie-docker, create is make new repository for ie-docker.
author taira
date Mon, 26 Jan 2015 13:20:35 +0900
parents
children 1730494d9ecc
line wrap: on
line source

#!/usr/bin/python

import os, re
import argparse

base_path = "/media/fcs/docker-hg/"

def ie_mkdir(projectname):
    username = os.getlogin()
    m = re.match('^([ek]\d\d[58]\d\d\d)$', username)
    if m is not None:
        dir = base_path + "students/" + username[:3] + os.sep + username
        
        mkdir1(dir)
        os.system("/bin/chown "+os.getlogin()+" "+ dir)

        if (len(os.listdir(dir)) > 4):
            print("Too many project.")
            exit()

        dir = dir + os.sep + projectname
        mkdir1(dir)
        os.system("/bin/chown "+os.getlogin()+" "+ dir)
        return dir
    print("Permission denied. You are not permitted user.")
    exit()
        

def check_name(name):
    m=re.match('^([ek](\d\d)[58]\d\d\d)$', name)
    if m is not None:
        if m.group(1)==m.group(2):
            return 0
        else:
            return 1
    elif re.match('^[-a-z0-9]+',name):
        return 0
    else:
        return 1

# make necessary sub directory
#   /etc/libvirt/qemu/teachers
#   /var/log/libvirt/qemu/teachers
#   /var/run/libvirt/qemu/teachers

def mkdir1(name):
    if not os.path.exists(name):
        os.makedirs(name);

def change_own(base_path):
    if not os.path.isdir(base_path):
        os.system("/bin/chown " + os.getlogin() + " " + base_path)
        return

    for f in os.listdir(base_path):
        path = os.path.join(base_path, f)
        os.system("/bin/chown " + os.getlogin() + " " + path)
        print(path)
        if os.path.isdir(path):
            change_own(path)


def make_hgrepo(projpath):
    os.chdir(projpath)
    os.system("hg init")

    dockerfile = "Dockerfile" 
    fd = open(dockerfile, "w")
    fd.write("# Using ie-docker, you sould edit this file\n")
    fd.write("FROM fedora\n")
    fd.close()

    os.system("hg add " + dockerfile)
    os.system("hg commit -u " + os.getlogin() + " -m systemcommit")

    change_own(os.getcwd())

#
# main method
#

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description='Create new project for ie-docker.')
    parser.add_argument('projectname', metavar='project name', help='ie-docker project name')
    args = parser.parse_args()

    projpath = ie_mkdir(args.projectname)
    
    make_hgrepo(projpath)

    print("Create your project on " + projpath)
    print("Exec on your client : hg clone ssh://your_account@" + os.uname()[1] + os.sep + projpath)