Beispiel #1
0
def main():
    parser = OptionParser(usage='%prog [options] cmd', version="%prog " + couchapp.__VERSION__)
    parser.add_option('-v',  action='store_true', dest='verbose',
            help='print message to stdout')
    group = OptionGroup(parser, "init", "couchapp init [options] [appdir]")
    group.add_option("--db", action="store", help="full uri of default database")
    parser.add_option_group(group)

    options, args = parser.parse_args()

    if len(args) < 1:
        return parser.error('incorrect number of arguments')

    if args[0] == 'generate':
        if len(args) < 2:
            return parser.error('cmd: "generate appname"'+
                    '\n\nIncorrect number of arguments, appname is'+
                    ' missing')
        appname = args[1]
        generate(appname, options.verbose)
    elif args[0] == 'push':
        appname = ''
        rel_path = '.'
        dbstring = ''
        if len(args) == 4:
            if in_couchapp():
                return parser.error('incorrect number of arguments')
            rel_path = args[1]
            appname = args[2]
            dbstring = args[3]
        elif len(args) == 3:
            rel_path = in_couchapp()
            if rel_path:
                if args[1] != '.':
                    appname = args[1]
                dbstring = args[2]
            else:
                rel_path = args[1]
                dbstring = args[2]
        elif len(args) == 2:
            rel_path = in_couchapp()
            if rel_path:
                if args[1] != '.':
                    dbstring = args[1]
            else:
                rel_path = args[1]
        elif len(args) == 1:
            rel_path = in_couchapp()
            if not rel_path:
                rel_path = '.'

        appdir = os.path.normpath(os.path.join(os.getcwd(), rel_path))
        if not appname: 
            appname = ''.join(appdir.split('/')[-1:])
        push(appdir, appname, dbstring, options.verbose)
    elif args[0] == 'clone' or args[0] == 'pull':
        if len(args) < 2:
            return parser.error('incorrect number of arguments')
        if len(args) == 3:
            app_dir = args[2]
        else:
            app_dir = ''
        clone(args[1], app_dir, options.verbose)
    
    elif args[0] == 'init':
        dburl = options.db or ''
        try:
            appdir = args[1]
        except IndexError:
            appdir = '.'
        init(appdir, dburl, options.verbose)
    else:
        print "%s is unknown" % args[0]
Beispiel #2
0
def main():
    parser = OptionParser(usage='%prog [options] cmd', version="%prog " + couchapp.__version__)
    parser.add_option('-v', dest='verbose', default=1, help='print message to stdout')
    parser.add_option('-q', dest='verbose', action='store_const', const=0, help="don't print any message")
    
    # generate options
    parser.add_option_group(OptionGroup(parser, "Generate a new CouchApp! (start here)",
            "couchapp generate <appname> [appdir]"))
            
    # push options
    group_push = OptionGroup(parser, "Pushes a CouchApp to CouchDB", 
            "couchapp push [options] [appdir] [appname] [dburl]")
    group_push.add_option("--disable-css", action="store_true", 
        dest="css", help="disable css compression")
    group_push.add_option("--disable-js", action="store_true", 
        dest="js", help="disable js compression")
    parser.add_option_group(group_push)
    
    # clone options
    parser.add_option_group(OptionGroup(parser, 
        "Clones/Pulls a CouchApp from a url (like http://host/db/_design/CA_name)",
        "couchapp clone/pull <dburl> [dir]"))
            
    # init options
    group_init = OptionGroup(parser, "Initialize CouchApp .couchapprc", "couchapp init [options] <appdir>")
    group_init.add_option("--db", action="store", help="full url of default database")
    parser.add_option_group(group_init)

    options, args = parser.parse_args()


    if len(args) < 1:
        return parser.error('incorrect number of arguments')

    if args[0] == 'generate':
        if len(args) < 2:
            return parser.error('cmd: "generate appname"'+
                    '\n\nIncorrect number of arguments, appname is'+
                    ' missing')
        appname = args[1]
        generate(appname, options.verbose)
    elif args[0] == 'push':
        appname = ''
        rel_path = '.'
        dbstring = ''
        # generate [dir] [appname] [url] case
        if len(args) == 4:
            if in_couchapp():
                return parser.error('Incorrect number of arguments, you\'re in an app.')
            rel_path = args[1]
            appname = args[2]
            dbstring = args[3]
            
        # generate [dir/appname] [url] case
        elif len(args) == 3:
            rel_path = in_couchapp()
            if rel_path:
                if args[1] != '.':
                    appname = args[1]
                dbstring = args[2]
            else:
                rel_path = args[1]
                dbstring = args[2]
        
        # generate [dir/url] case
        elif len(args) == 2:
            rel_path = in_couchapp()
            if rel_path:
                if args[1] != '.':
                    dbstring = args[1]
            else:
                rel_path = args[1]
                
        # just generate
        elif len(args) == 1:
            rel_path = in_couchapp()
            if not rel_path:
                rel_path = '.'

        appdir = os.path.normpath(os.path.join(os.getcwd(), rel_path))
        # Derive appname from the directory name (/home/foo/sofa => sofa)
        if not appname: 
            appname = ''.join(appdir.split('/')[-1:])
        # PUSH IT!
        push(appdir, appname, dbstring, options.verbose, options=options)
      
    elif args[0] == 'clone' or args[0] == 'pull':
        if len(args) < 2:
            return parser.error('Incorrect number of arguments (at least two)')
        # clone/pull <url> [dir] case
        if len(args) == 3:
            app_dir = args[2]
        # clone/pull <url>
        else:
            app_dir = ''
        # CLONE IT!
        clone(args[1], app_dir, options.verbose)
    
    elif args[0] == 'init':
        dburl = options.db or ''
        try:
            appdir = args[1]
        except IndexError:
            appdir = '.'
        init(appdir, dburl, options.verbose)
    else:
        print "%s is an unknown command, sorry." % args[0]
Beispiel #3
0
def main():
    parser = OptionParser(usage='%prog [options] cmd', version="%prog " + couchapp.__version__)
    parser.add_option('-v', dest='verbose', default=1,  action='store_const', const=2, help='print message to stdout')
    parser.add_option('-q', dest='verbose', action='store_const', const=0, help="don't print any message")
    
    # generate options
    parser.add_option_group(OptionGroup(parser, "Generate a new CouchApp! (start here)",
            "couchapp generate <appname> [appdir]"))
            
    # push options
    group_push = OptionGroup(parser, "Pushes a CouchApp to CouchDB", 
            "couchapp push [options] [appdir] [appname] [dburl]")
    group_push.add_option("--atomic", action="store_true", default=False, 
            help="store atomically the couchapp.")
    group_push.add_option("--export", action="store_true", default=False, 
            help="Export the generated design doc to your console. If --output is specified, write to the file.")
    group_push.add_option("--output", action="store", default=None, 
               help="Combined with --export it allow you to save the generated design doc to the file.")
    parser.add_option_group(group_push)
    
    # clone options
    parser.add_option_group(OptionGroup(parser, 
        "Clones/Pulls a CouchApp from a url (like http://host/db/_design/CA_name)",
        "couchapp clone/pull <dburl> [dir]"))
            
    # init options
    group_init = OptionGroup(parser, "Initialize CouchApp .couchapprc", "couchapp init [options] <appdir>")
    group_init.add_option("--db", action="store", help="full url of default database")
    parser.add_option_group(group_init)
    
    group_vendor = OptionGroup(parser, "Install a vendor", "couchapp vendor install vendor_url [option][appdir]")
    group_vendor.add_option("--scm", action="store", default='git', 
                                help="scm used to install the vendor, by default git")
    parser.add_option_group(group_vendor)
    
    options, args = parser.parse_args()


    if len(args) < 1:
        return parser.error('incorrect number of arguments')
        
    cli = CouchappCli(options.verbose)

    if args[0] == 'generate':
        if len(args) < 2:
            return parser.error('cmd: "generate appname"'+
                    '\n\nIncorrect number of arguments, appname is'+
                    ' missing')
        if len(args) == 2:
            appname = args[1]
            cli.generate_app(appname)
        elif len(args) == 3:
            rel_path = in_couchapp()
            if not rel_path:
                rel_path = '.'
            appdir = os.path.normpath(os.path.join(os.getcwd(), rel_path))    
            kind = args[1]
            name = args[2]
            cli.generate(appdir, kind, name)
        elif len(args) == 4:
            rel_path = in_couchapp()
            if not rel_path:
                rel_path = '.'
            appdir = os.path.normpath(os.path.join(os.getcwd(), rel_path))    
            kind = args[1]
            name = args[2]
            template = args[3]
            cli.generate(appdir, kind, name, template)
    elif args[0] == 'push':
        appname = ''
        rel_path = '.'
        dbstring = ''
        # generate [dir] [appname] [url] case
        if len(args) == 4:
            # we test if we are in a couchapp here
            # in case it's true, abort
            if in_couchapp():
                return parser.error('Incorrect number of arguments, you\'re in an app.')
            rel_path = args[1]
            appname = args[2]
            dbstring = args[3]
            
        # generate [dir/appname] [url] case
        elif len(args) == 3:
            rel_path = in_couchapp()
            if rel_path:
                if args[1] != '.':
                    appname = args[1]
                dbstring = args[2]
            else:
                rel_path = args[1]
                dbstring = args[2]
        
        # generate [dir/url] case
        elif len(args) == 2:
            rel_path = in_couchapp()
            if rel_path:
                if args[1] != '.':
                    dbstring = args[1]
            else:
                rel_path = args[1]
                
        # just generate
        elif len(args) == 1:
            rel_path = in_couchapp()
            if not rel_path:
                rel_path = '.'

        appdir = os.path.normpath(os.path.join(os.getcwd(), rel_path))
        # Derive appname from the directory name (/home/foo/sofa => sofa)
        if not appname: 
            h, appname = os.path.split(appdir)
            
        # PUSH IT!
        cli.push(appdir, appname, dbstring, options=options)
    elif args[0] == 'pushapps':
        if len(args) < 2:
            return parser.error('Incorrect number of arguments (at least two)')
        dbstring = ''
        if len(args) == 3:
            rel_path = args[1]
            dbstring = args[2]
        elif len(args) == 2:
            dbstring = args[1]
            rel_path = '.'
        appsdir = os.path.normpath(os.path.join(os.getcwd(), rel_path))
        cli.pushapps(appsdir, dbstring, options=options)
    elif args[0] == 'pushdocs':
        if len(args) < 2:
            return parser.error('Incorrect number of arguments (at least two)')
        dbstring = ''
        if len(args) == 3:
            rel_path = args[1]
            dbstring = args[2]
        elif len(args) == 2:
            dbstring = args[1]
            rel_path = '.'
        docsdir = os.path.normpath(os.path.join(os.getcwd(), rel_path))
        cli.pushdocs(docsdir, dbstring, options=options)
    elif args[0] == 'clone':
        if len(args) < 2:
            return parser.error('Incorrect number of arguments (at least two)')
        # clone/pull <url> [dir] case
        if len(args) == 3:
            app_dir = args[2]
        # clone/pull <url>
        else:
            app_dir = ''
        # CLONE IT!
        cli.clone(args[1], app_dir)
    
    elif args[0] == 'init':
        dburl = options.db or ''
        try:
            appdir = args[1]
        except IndexError:
            appdir = '.'
        cli.init(appdir, dburl)
    elif args[0] == 'vendor':
        if len(args) < 2:
            return parser.error('Incorrect number of arguments (at least two)')
        action = args[1]
        if action == 'update':
            try:
                appdir = args[2]
            except IndexError:
                appdir = '.'
            cli.vendor_update(appdir)
        elif action == 'install':
            if len(args) < 3:
                return parser.error('Incorrect number of arguments')                
            try:
                appdir = args[3]
            except IndexError:
                appdir = '.'
            cli.vendor_install(appdir, args[2], options.scm)
        else:
            print >>sys.stderr, "%s is an unknown vendor action, sorry." % action      
    else:
        print "%s is an unknown command, sorry." % args[0]