예제 #1
0
파일: creator.py 프로젝트: Kcrong/initpy
def downloader(args):
    url = args.download
    from urllib2 import urlopen, HTTPError
    try:
        res = urlopen(url)
    except HTTPError:
        from initpy.prompt import color_print
        color_print("Wrong downloadable url!", "red")
        return
    from initpy.compact import StringIO
    from zipfile import ZipFile, BadZipfile
    try:
        template_zip = ZipFile(StringIO(res.read()))
    except BadZipfile:
        from initpy.prompt import color_print
        color_print("initpy only support zip file!", "red")
        return
    from os import path, getcwd, mkdir
    proj_path = path.join(getcwd(), args.name)
    try:
        mkdir(proj_path)
    except OSError:
        # Folder Exists
        pass
    zip_root = template_zip.namelist()[0]
    for fn in template_zip.namelist()[1:]:
        file_name = fn.replace(zip_root, '')
        file_path = path.join(proj_path, file_name)
        if file_path.endswith('/'):
            try:
                mkdir(file_path)
            except OSError:
                # Folder Exists
                pass
        else:
            _file = open(file_path, 'w')
            _file.write(template_zip.read(fn))
            _file.close()
예제 #2
0
def downloader(args):
    url = args.download
    from urllib2 import urlopen, HTTPError
    try:
        res = urlopen(url)
    except HTTPError:
        from initpy.prompt import color_print
        color_print("Wrong downloadable url!", "red")
        return
    from initpy.compact import StringIO
    from zipfile import ZipFile, BadZipfile
    try:
        template_zip = ZipFile(StringIO(res.read()))
    except BadZipfile:
        from initpy.prompt import color_print
        color_print("initpy only support zip file!", "red")
        return
    from os import path, getcwd, mkdir
    proj_path = path.join(getcwd(), args.name)
    try:
        mkdir(proj_path)
    except OSError:
        # Folder Exists
        pass
    zip_root = template_zip.namelist()[0]
    for fn in template_zip.namelist()[1:]:
        file_name = fn.replace(zip_root, '')
        file_path = path.join(proj_path, file_name)
        if file_path.endswith('/'):
            try:
                mkdir(file_path)
            except OSError:
                # Folder Exists
                pass
        else:
            _file = open(file_path, 'w')
            _file.write(template_zip.read(fn))
            _file.close()
예제 #3
0
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('--flask', '-f', action='store_true')
    parser.add_argument('--tornado-web', '-tw', action='store_true')
    parser.add_argument('--falcon', '-fc', action='store_true')
    parser.add_argument('--hosted', '-hd', type=str)
    parser.add_argument('--download', '-d', type=str)
    parser.add_argument('name', metavar='name', type=str)
    args = parser.parse_args()

    if args.name != '':
        if args.flask and args.tornado_web and args.falcon and args.download \
                and args.hosted:
            color_print('Please use one option', 'red')
            parser.print_help()
            return

        if args.flask or args.tornado_web or args.falcon:
            end_message = "You can install \"pip install -r requirements/dev.txt\""

            if args.flask:
                end_message += "\nYou can run \"python manage.py run\""
                from initpy.creator import FlaskCreator
                creator = FlaskCreator(getcwd())
            elif args.tornado_web:
                end_message += "\nYou can run \"python app.py\""
                from initpy.creator import TornadoCreator
                creator = TornadoCreator(getcwd())
            elif args.falcon:
                end_message += "\nYou can run \"python manage.py\""
                from initpy.creator import FalconCreator
                creator = FalconCreator(getcwd())

            from initpy.prompt import color_input
            module = color_input('Please input base module name [common]: ',
                                 'yellow') or "common"
            creator.create_project(args.name, module)

            color_print("\n".join(creator.errors), "red")
            color_print("Successfully created " + args.name + "!", "blue")
            color_print(end_message, "magenta")

        elif args.download:
            from initpy.creator import downloader
            downloader(args)

        elif args.hosted:
            url = 'https://raw.githubusercontent.com/Parkayun/initpy-index/'
            url += 'master/%s/deatil.json' % args.hosted
            from urllib2 import urlopen, HTTPError
            try:
                res = urlopen(url).read()
                from json import loads
                detail = loads(res.replace('\n', ''))
            except HTTPError:
                color_print("Template not found!", "red")
                return
            except ValueError:
                color_print("This template have a error!", "red")
                return

            args.download = detail['zip']
            color_print("Downloading " + detail['name'], "yellow")
            from initpy.creator import downloader
            downloader(args)
            color_print("Successfully created " + args.name + "!", "blue")

        else:
            from initpy.creator import Creator
            creator = Creator(getcwd())
            if args.name.endswith('/'):
                try:
                    creator.create_module(creator.root_path, args.name[:-1])
                    color_print("Successfully created " + args.name + "!",
                                "blue")
                except IOError:
                    # file exists what contain same name
                    pass
            else:
                extension = ''
                tmpl = ''
                try:
                    extension = args.name.split('.')[-1]
                except IndexError:
                    pass
                if extension == 'py':
                    from initpy.templates.blank import python
                    tmpl = python
                creator.create_file(creator.root_path, args.name, tmpl)
                color_print("Successfully created " + args.name + "!", "blue")
예제 #4
0
파일: run.py 프로젝트: Kcrong/initpy
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('--flask', '-f', action='store_true')
    parser.add_argument('--tornado-web', '-tw', action='store_true')
    parser.add_argument('--falcon', '-fc', action='store_true')
    parser.add_argument('--hosted', '-hd', type=str)
    parser.add_argument('--download', '-d', type=str)
    parser.add_argument('name', metavar='name', type=str)
    args = parser.parse_args()

    if args.name != '':
        if args.flask and args.tornado_web and args.falcon and args.download \
                and args.hosted:
            color_print('Please use one option', 'red')
            parser.print_help()
            return

        if args.flask or args.tornado_web or args.falcon:
            end_message = "You can install \"pip install -r requirements/dev.txt\""

            if args.flask:
                end_message += "\nYou can run \"python manage.py run\""
                from initpy.creator import FlaskCreator
                creator = FlaskCreator(getcwd())
            elif args.tornado_web:
                end_message += "\nYou can run \"python app.py\""
                from initpy.creator import TornadoCreator
                creator = TornadoCreator(getcwd())
            elif args.falcon:
                end_message += "\nYou can run \"python manage.py\""
                from initpy.creator import FalconCreator
                creator = FalconCreator(getcwd())

            from initpy.prompt import color_input
            module = color_input('Please input base module name [common]: ',
                    'yellow') or "common"
            creator.create_project(args.name, module)

            color_print("\n".join(creator.errors), "red")
            color_print("Successfully created "+args.name+"!", "blue")
            color_print(end_message, "magenta")

        elif args.download:
            from initpy.creator import downloader
            downloader(args)

        elif args.hosted:
            url = 'https://raw.githubusercontent.com/Parkayun/initpy-index/'
            url += 'master/%s/deatil.json' % args.hosted
            from urllib2 import urlopen, HTTPError
            try:
                res = urlopen(url).read()
                from json import loads
                detail = loads(res.replace('\n', ''))
            except HTTPError:
                color_print("Template not found!", "red")
                return
            except ValueError:
                color_print("This template have a error!", "red")
                return

            args.download = detail['zip']
            color_print("Downloading "+detail['name'], "yellow")
            from initpy.creator import downloader
            downloader(args)
            color_print("Successfully created "+args.name+"!", "blue")

        else:
            from initpy.creator import Creator
            creator = Creator(getcwd())
            if args.name.endswith('/'):
                try:
                    creator.create_module(creator.root_path, args.name[:-1])
                    color_print("Successfully created "+args.name+"!", "blue")
                except IOError:
                    # file exists what contain same name
                    pass
            else:
                extension = ''
                tmpl = ''
                try:
                    extension = args.name.split('.')[-1]
                except IndexError:
                    pass
                if extension == 'py':
                    from initpy.templates.blank import python
                    tmpl = python
                creator.create_file(creator.root_path, args.name, tmpl)
                color_print("Successfully created "+args.name+"!", "blue")