From 43008cf0d765a797cb809dd608b0ef3041ea5bd5 Mon Sep 17 00:00:00 2001 From: Jesse Brault Date: Sat, 8 Nov 2025 16:15:03 -0600 Subject: [PATCH] Add profiling option, update CLI displayed version. --- .../ssg/AbstractBuildCommand.groovy | 19 +++++++++++++++++++ .../ssg/StaticSiteGeneratorCli.groovy | 2 +- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/cli/src/main/groovy/com/jessebrault/ssg/AbstractBuildCommand.groovy b/cli/src/main/groovy/com/jessebrault/ssg/AbstractBuildCommand.groovy index 65ea35e..2cbf581 100644 --- a/cli/src/main/groovy/com/jessebrault/ssg/AbstractBuildCommand.groovy +++ b/cli/src/main/groovy/com/jessebrault/ssg/AbstractBuildCommand.groovy @@ -68,6 +68,12 @@ abstract class AbstractBuildCommand extends AbstractSubCommand { ) boolean dryRun + @CommandLine.Option( + names = ['--profile'], + description = 'Log elapsed times for build steps.' + ) + boolean profile + protected StaticSiteGenerator staticSiteGenerator = null protected final Integer doSingleBuild(String buildName) { @@ -77,6 +83,7 @@ abstract class AbstractBuildCommand extends AbstractSubCommand { def groovyClassLoader = new GroovyClassLoader(this.class.classLoader) if (this.gradle) { + def gradleStartTime = System.currentTimeMillis() def projectConnection = GradleConnector.newConnector() .forProjectDirectory( this.commonCliOptions.projectDir.toPath().resolve(this.gradleProjectDir).toFile() @@ -97,6 +104,11 @@ abstract class AbstractBuildCommand extends AbstractSubCommand { projectConnection.newBuild().forTasks('ssgJars').run() projectConnection.close() + + if (this.profile) { + def gradleElapsedTime = System.currentTimeMillis() - gradleStartTime + logger.info("Gradle connection elapsed time: ${gradleElapsedTime / 1000} seconds") + } } this.libDirs.each { libDir -> @@ -123,6 +135,8 @@ abstract class AbstractBuildCommand extends AbstractSubCommand { ) } + def buildStartTime = System.currentTimeMillis() + final Collection diagnostics = this.staticSiteGenerator.doBuild( this.commonCliOptions.projectDir, buildName, @@ -130,6 +144,11 @@ abstract class AbstractBuildCommand extends AbstractSubCommand { this.scriptArgs ?: [:] ) + def buildElapsedTime = System.currentTimeMillis() - buildStartTime + if (this.profile) { + logger.info("Build $buildName elapsed time: ${buildElapsedTime / 1000} seconds") + } + if (!diagnostics.isEmpty()) { diagnostics.each { logger.error(it.message) diff --git a/cli/src/main/groovy/com/jessebrault/ssg/StaticSiteGeneratorCli.groovy b/cli/src/main/groovy/com/jessebrault/ssg/StaticSiteGeneratorCli.groovy index c499730..db2fa4a 100644 --- a/cli/src/main/groovy/com/jessebrault/ssg/StaticSiteGeneratorCli.groovy +++ b/cli/src/main/groovy/com/jessebrault/ssg/StaticSiteGeneratorCli.groovy @@ -5,7 +5,7 @@ import picocli.CommandLine @CommandLine.Command( name = 'ssg', mixinStandardHelpOptions = true, - version = '0.4.0', + version = '0.6.0-SNAPSHOT', description = 'A static site generator which can interface with Gradle for high extensibility.', subcommands = [SsgInit, SsgBuild, SsgWatch] )