Exemplo n.º 1
0
    def test_correct_lower_upper(self):
        def user_input1(x):
            self.assertEquals(prompt.YES.upper(), x[6])
            self.assertEquals(prompt.NO.lower(), x[8])
            return prompt.YES

        prompt.user_input = user_input1
        r = prompt.prompt("")

        def user_input2(x):
            self.assertEquals(prompt.YES.lower(), x[6])
            self.assertEquals(prompt.NO.upper(), x[8])
            return prompt.YES

        prompt.user_input = user_input2
        r = prompt.prompt("", prompt.NO)
Exemplo n.º 2
0
 def test_yes_yes_case(self):
     prompt.user_input = lambda x: prompt.YES
     r = prompt.prompt("test")
     self.assertEquals(prompt.YES, r)
Exemplo n.º 3
0
def install(args):
    """Install a given package"""
    try:
        pkgnames = args.package
        workingdir = args.build_dir or BUILD_DIR
    except AttributeError:
        pkgnames = args
        workingdir = BUILD_DIR

    if os.getuid() == 0:
        print('Installations as root are not allowed. Exiting.')
        return

    print(_("resolving dependencies..."))

    editor = os.getenv('EDITOR') or 'vim'
    # Check packages, to fail early
    packages = []
    for pkgname in pkgnames:
        try:
            # Make sure the package exists
            ccr.info(pkgname)
        except ccr.PackageNotFound:
            print(_("Package not found: {pkg}").format(pkg=pkgname))
            return 1

        packages += dependency_chain(pkgname, workingdir)

    # Check dependencies
    for pkgname in packages:
        try:
            # Make sure the package exists
            ccr.info(pkgname)
        except ccr.PackageNotFound:
            print(_("Package not found: {pkg}").format(pkg=pkgname))
            return 1

    print_targets(packages)
    response = prompt.prompt(_("Proceed with installation?"), major=True)
    if response == prompt.NO:
        return 0
    for package in packages:
        try:
            get_source_files([package], workingdir)
        except (requests.exceptions.HTTPError, tarfile.ReadError):
            print(_("Package not found: {pkg}").format(pkg=package))
            return 1
        # Ask to edit the PKGBUILD
        response = prompt.prompt(_("Edit {pkg} PKGBUILD with $EDITOR?").format(pkg=package), color='yellow')
        if response == prompt.YES:
            subprocess.call([editor, "{d}/{pkg}/PKGBUILD".format(d=workingdir, pkg=package)])
        # Ask to edit the .install, if it exists
        if os.path.isfile("{d}/{pkg}/{pkg}.install".format(d=workingdir, pkg=package)):
            response = prompt.prompt(_("Edit {pkg}.install with $EDITOR?").format(pkg=package), color='yellow')
            if response == prompt.YES:
                subprocess.call([editor, "{d}/{pkg}/{pkg}.install".format(d=workingdir, pkg=package)])
        # makepkg
        curdir = os.getcwd()
        os.chdir(os.path.join(workingdir, package))
        try:
            subprocess.check_call(["makepkg", "-rsi"])
        except subprocess.CalledProcessError:
            return 1

        os.chdir(curdir)
Exemplo n.º 4
0
 def test_no_no_case(self):
     prompt.user_input = lambda x: prompt.NO
     r = prompt.prompt("test", prompt.NO)
     self.assertEquals(prompt.NO, r)
Exemplo n.º 5
0
def install(args):
    """Install a given package"""
    try:
        pkgnames = args.package
        workingdir = args.build_dir or BUILD_DIR
    except AttributeError:
        pkgnames = args
        workingdir = BUILD_DIR

    if os.getuid() == 0:
        print('Installations as root are not allowed. Exiting.')
        return

    print(_("resolving dependencies..."))

    editor = os.getenv('EDITOR') or 'vim'
    # Check packages, to fail early
    packages = []
    for pkgname in pkgnames:
        try:
            # Make sure the package exists
            ccr.info(pkgname)
        except ccr.PackageNotFound:
            print(_("Package not found: {pkg}").format(pkg=pkgname))
            return 1

        packages += dependency_chain(pkgname, workingdir)

    # Check dependencies
    for pkgname in packages:
        try:
            # Make sure the package exists
            ccr.info(pkgname)
        except ccr.PackageNotFound:
            print(_("Package not found: {pkg}").format(pkg=pkgname))
            return 1

    print_targets(packages)
    response = prompt.prompt(_("Proceed with installation?"), major=True)
    if response == prompt.NO:
        return 0
    for package in packages:
        try:
            get_source_files([package], workingdir)
        except (requests.exceptions.HTTPError, tarfile.ReadError):
            print(_("Package not found: {pkg}").format(pkg=package))
            return 1
        # Ask to edit the PKGBUILD
        response = prompt.prompt(
            _("Edit {pkg} PKGBUILD with $EDITOR?").format(pkg=package),
            color='yellow')
        if response == prompt.YES:
            subprocess.call([
                editor, "{d}/{pkg}/PKGBUILD".format(d=workingdir, pkg=package)
            ])
        # Ask to edit the .install, if it exists
        if os.path.isfile("{d}/{pkg}/{pkg}.install".format(d=workingdir,
                                                           pkg=package)):
            response = prompt.prompt(
                _("Edit {pkg}.install with $EDITOR?").format(pkg=package),
                color='yellow')
            if response == prompt.YES:
                subprocess.call([
                    editor, "{d}/{pkg}/{pkg}.install".format(d=workingdir,
                                                             pkg=package)
                ])
        # makepkg
        curdir = os.getcwd()
        os.chdir(os.path.join(workingdir, package))
        try:
            subprocess.check_call(["makepkg", "-rsi"])
        except subprocess.CalledProcessError:
            return 1

        os.chdir(curdir)