Search in sources :

Example 1 with SiteProject

use of org.curioswitch.gradle.plugins.staticsite.StaticSiteExtension.SiteProject in project curiostack by curioswitch.

the class StaticSitePlugin method apply.

@Override
public void apply(Project project) {
    project.getPlugins().apply(NodePlugin.class);
    var config = StaticSiteExtension.create(project);
    var mergeSite = project.getTasks().register("mergeSite", Copy.class, t -> {
        t.from("src");
        t.into("build/site");
        for (SiteProject site : config.getSites().get()) {
            site.getProject().getPlugins().withType(LifecycleBasePlugin.class, unused -> t.dependsOn(site.getProject().getTasks().named(LifecycleBasePlugin.ASSEMBLE_TASK_NAME)));
            t.from(site.getBuildDir(), copy -> copy.into(site.getOutputSubDir()));
        }
    });
    var assemble = project.getTasks().named("assemble");
    assemble.configure(t -> t.dependsOn(mergeSite));
    var yarn = project.getRootProject().getTasks().named("yarn");
    var deployAlpha = project.getTasks().register("deployAlpha", GcloudTask.class, t -> {
        t.dependsOn(assemble);
        // TODO(choko): Remove this major hack - the command line has two --project flags
        // and we're just lucky the later is used.
        t.args(config.getAppEngineProject().map(appEngineProject -> ImmutableList.of("app", "deploy", "--project=" + appEngineProject)));
    });
    var deployProd = project.getTasks().register("deployProd", NodeTask.class, t -> {
        t.dependsOn(yarn, assemble);
        t.args(config.getFirebaseProject().map(firebaseProject -> ImmutableList.of("run", "firebase", "--project", firebaseProject, "deploy")));
    });
    project.getTasks().register("preview", NodeTask.class, t -> {
        t.dependsOn(yarn, assemble);
        t.args("run", "superstatic", "--port=8080");
    });
    CurioGenericCiPlugin.addToReleaseBuild(project, deployProd);
    project.afterEvaluate(unused -> {
        if (config.getAutoDeployAlpha().get()) {
            CurioGenericCiPlugin.addToMasterBuild(project, deployAlpha);
        }
    });
}
Also used : CurioGenericCiPlugin(org.curioswitch.gradle.plugins.ci.CurioGenericCiPlugin) NodeTask(org.curioswitch.gradle.plugins.nodejs.tasks.NodeTask) LifecycleBasePlugin(org.gradle.language.base.plugins.LifecycleBasePlugin) NodePlugin(org.curioswitch.gradle.plugins.nodejs.NodePlugin) ImmutableList(com.google.common.collect.ImmutableList) Project(org.gradle.api.Project) GcloudTask(org.curioswitch.gradle.plugins.gcloud.tasks.GcloudTask) SiteProject(org.curioswitch.gradle.plugins.staticsite.StaticSiteExtension.SiteProject) Plugin(org.gradle.api.Plugin) Copy(org.gradle.api.tasks.Copy) SiteProject(org.curioswitch.gradle.plugins.staticsite.StaticSiteExtension.SiteProject)

Aggregations

ImmutableList (com.google.common.collect.ImmutableList)1 CurioGenericCiPlugin (org.curioswitch.gradle.plugins.ci.CurioGenericCiPlugin)1 GcloudTask (org.curioswitch.gradle.plugins.gcloud.tasks.GcloudTask)1 NodePlugin (org.curioswitch.gradle.plugins.nodejs.NodePlugin)1 NodeTask (org.curioswitch.gradle.plugins.nodejs.tasks.NodeTask)1 SiteProject (org.curioswitch.gradle.plugins.staticsite.StaticSiteExtension.SiteProject)1 Plugin (org.gradle.api.Plugin)1 Project (org.gradle.api.Project)1 Copy (org.gradle.api.tasks.Copy)1 LifecycleBasePlugin (org.gradle.language.base.plugins.LifecycleBasePlugin)1