private Task createPythonUnixTask()

in src/main/groovy/com/jetbrains/python/envs/PythonEnvsPlugin.groovy [154:203]


    private Task createPythonUnixTask(Project project, Python env) {

        return project.tasks.create(name: "Bootstrap_${env.type}_'$env.name'") {

            dependsOn "install_python_build"

            onlyIf {
                isUnix && (!env.envDir.exists() || isPythonInvalid(project, env))
            }

            doFirst {
                env.envDir.mkdirs()
                env.envDir.deleteDir()
            }

            doLast {
                project.logger.quiet("Creating $env.type '$env.name' at $env.envDir directory")
                try {
                    project.exec {
                        executable new File(project.buildDir, "python-build/bin/python-build")
                        if (env.patchFileUri != null) {
                            project.logger.quiet("Applying patch from ${env.patchFileUri} to ${env.name}")
                            if (Paths.get(env.patchFileUri).isAbsolute()) {
                                standardInput = new FileInputStream(env.patchFileUri)
                            }
                            else {
                                standardInput = new StringInputStream(new URI(env.patchFileUri).toURL().text)
                            }
                            args "-p", env.version, env.envDir
                        }
                        else {
                            args env.version, env.envDir
                        }
                    }
                    project.logger.quiet("Successfully")
                }
                catch (Exception e) {
                    if (isPythonInvalid(project, env)) {
                        project.logger.error(e.message)
                        throw new GradleException(e.message)
                    } else {
                        project.logger.warn(e.message)
                    }
                }

                upgradePipAndSetuptools(project, env)
                pipInstall(project, env, env.packages)
            }
        }
    }