diff --git a/README.md b/README.md index 2cfbcca..b1bff93 100644 --- a/README.md +++ b/README.md @@ -19,33 +19,14 @@ Add a dependency in build.gradle ```groovy repositories { - maven { url "https://jitpack.io" } + maven { url "https://repo.grails.org/grails/core/" } } dependencies { - compile 'com.github.gpc:grails-web-console:6.0-M2' + compile 'com.github.gpc:grails-web-console:7.0.0-SNAPSHOT' } ``` -In addition if you don't want to use jitpack.io then use following github package registry: - -```groovy -repositories { - maven { - name = "GitHubPackages" - url = uri("https://maven.pkg.github.com/gpc/grails-web-console") - credentials { - username = project.findProperty("gpr.user") ?: System.getenv("GITHUB_USERNAME") - password = project.findProperty("gpr.key") ?: System.getenv("GITHUB_TOKEN") - } - } - } - -dependencies { - compile 'org.grails.plugins:grails-web-console:6.0-M2' -} - -``` ## Usage diff --git a/app/build.gradle b/app/build.gradle index c770b13..021fd62 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,8 +13,7 @@ plugins { group = "grails.app" repositories { - mavenCentral() - maven { url "https://repo.grails.org/grails/core/" } + maven { url "https://repo.grails.org/grails/core" } } configurations { diff --git a/plugin/build.gradle b/plugin/build.gradle index 2a7bdb0..5da5de1 100644 --- a/plugin/build.gradle +++ b/plugin/build.gradle @@ -13,8 +13,6 @@ plugins { group "org.grails.plugins" repositories { - mavenCentral() - maven { url "https://repo1.maven.org/maven2/" } maven { url "https://repo.grails.org/grails/core" } } diff --git a/plugin/grails-app/services/org/grails/plugins/console/ConsoleService.groovy b/plugin/grails-app/services/org/grails/plugins/console/ConsoleService.groovy index 5123a33..ec3f5b5 100644 --- a/plugin/grails-app/services/org/grails/plugins/console/ConsoleService.groovy +++ b/plugin/grails-app/services/org/grails/plugins/console/ConsoleService.groovy @@ -3,6 +3,9 @@ package org.grails.plugins.console import org.codehaus.groovy.control.CompilerConfiguration import org.codehaus.groovy.control.customizers.ImportCustomizer import grails.core.GrailsApplication +import org.grails.core.artefact.DomainClassArtefactHandler + +import java.nio.charset.StandardCharsets class ConsoleService { @@ -37,7 +40,7 @@ class ConsoleService { evaluation.totalTime = System.currentTimeMillis() - startTime evaluation.console = console - evaluation.output = baos.toString('UTF8') + evaluation.output = baos.toString(StandardCharsets.UTF_8.name()) evaluation } @@ -57,7 +60,9 @@ class ConsoleService { CompilerConfiguration configuration = new CompilerConfiguration() if (autoImportDomains) { ImportCustomizer importCustomizer = new ImportCustomizer() - importCustomizer.addImports(*grailsApplication.domainClasses*.fullName) + grailsApplication.getArtefacts(DomainClassArtefactHandler.TYPE).each { domainClass -> + importCustomizer.addImport(domainClass.clazz.simpleName, domainClass.clazz.name) + } configuration.addCompilationCustomizers importCustomizer } configuration diff --git a/plugin/src/main/groovy/org/grails/plugins/console/ConsoleConfig.groovy b/plugin/src/main/groovy/org/grails/plugins/console/ConsoleConfig.groovy index ffe9940..6fb5d1e 100644 --- a/plugin/src/main/groovy/org/grails/plugins/console/ConsoleConfig.groovy +++ b/plugin/src/main/groovy/org/grails/plugins/console/ConsoleConfig.groovy @@ -1,57 +1,36 @@ package org.grails.plugins.console +import grails.config.Config import grails.util.Environment class ConsoleConfig { boolean enabled - String newFileText = null - boolean indentWithTabs = false - int tabSize = 4 - int indentUnit = 4 - String remoteFileStoreDefaultPath = null - boolean remoteFileStoreEnabled = true - boolean csrfProtectionEnabled = true + String newFileText + boolean indentWithTabs + int tabSize + int indentUnit + String remoteFileStoreDefaultPath + boolean remoteFileStoreEnabled + boolean csrfProtectionEnabled def baseUrl - ConsoleConfig(Map config) { - - if (config.enabled instanceof Boolean) { - enabled = config.enabled - } else { - enabled = Environment.current == Environment.DEVELOPMENT - } - - if (config.newFileText instanceof String) { - newFileText = config.newFileText - } - - if (config.indentWithTabs instanceof Boolean) { - indentWithTabs = config.indentWithTabs - } - - if (config.tabSize instanceof Integer) { - tabSize = config.tabSize as Integer - } - - if (config.indentUnit instanceof Integer) { - indentUnit = config.indentUnit as Integer - } - - if (config.fileStore && config.fileStore.remote && config.fileStore.remote.defaultPath instanceof String) { - remoteFileStoreDefaultPath = config.fileStore.remote.defaultPath - } - - if (config.fileStore && config.fileStore.remote && config.fileStore.remote.enabled instanceof Boolean) { - remoteFileStoreEnabled = config.fileStore.remote.enabled - } - - if (config.csrfProtection && config.csrfProtection.enabled instanceof Boolean) { - csrfProtectionEnabled = config.csrfProtection.enabled - } - - if (config.baseUrl instanceof List || config.baseUrl instanceof String) { - baseUrl = config.baseUrl + ConsoleConfig(Config config, String basePath) { + enabled = config.getProperty("${basePath}${basePath ? '.' : ''}enabled", Boolean, Environment.current == Environment.DEVELOPMENT) + newFileText = config.getProperty("${basePath}${basePath ? '.' : ''}newFileText") as String + indentWithTabs = config.getProperty("${basePath}${basePath ? '.' : ''}indentWithTabs", Boolean, false) + tabSize = config.getProperty("${basePath}${basePath ? '.' : ''}tabSize", Integer, 4) + indentUnit = config.getProperty("${basePath}${basePath ? '.' : ''}indentUnit", Integer, 4) + remoteFileStoreDefaultPath = config.getProperty("${basePath}${basePath ? '.' : ''}fileStore.remote.defaultPath") as String + remoteFileStoreEnabled = config.getProperty("${basePath}${basePath ? '.' : ''}fileStore.remote.enabled", Boolean, true) + csrfProtectionEnabled = config.getProperty("${basePath}${basePath ? '.' : ''}csrfProtection.enabled", Boolean, true) + + def configuredBaseUrl = config.getProperty("${basePath}${basePath ? '.' : ''}baseUrl") + if(configuredBaseUrl instanceof GString) { + configuredBaseUrl = configuredBaseUrl.toString() + } + if (configuredBaseUrl instanceof List || configuredBaseUrl instanceof String) { + baseUrl = configuredBaseUrl } } } diff --git a/plugin/src/main/groovy/org/grails/plugins/console/WebConsoleGrailsPlugin.groovy b/plugin/src/main/groovy/org/grails/plugins/console/WebConsoleGrailsPlugin.groovy index c5867ab..559d76b 100644 --- a/plugin/src/main/groovy/org/grails/plugins/console/WebConsoleGrailsPlugin.groovy +++ b/plugin/src/main/groovy/org/grails/plugins/console/WebConsoleGrailsPlugin.groovy @@ -5,7 +5,7 @@ import grails.plugins.* class WebConsoleGrailsPlugin extends Plugin { // the version or versions of Grails the plugin is designed for - def grailsVersion = "6.2.0 > *" + def grailsVersion = "7.0.0 > *" // resources that are excluded from plugin packaging def pluginExcludes = [ @@ -34,9 +34,10 @@ class WebConsoleGrailsPlugin extends Plugin { def scm = [url: 'https://github.com/gpc/grails-web-console'] - Closure doWithSpring() { {-> - consoleConfig(ConsoleConfig, config.getProperty('grails.plugin.console', Map, [:])) - } + Closure doWithSpring() { + {-> + consoleConfig(ConsoleConfig, config, 'grails.plugin.console') + } } void doWithDynamicMethods() { @@ -44,8 +45,7 @@ class WebConsoleGrailsPlugin extends Plugin { } void doWithApplicationContext() { - // TODO set property -// config.grails.assets.plugin.'console'.excludes = ['**/*'] + config.merge(['config.grails.assets.plugin.console.excludes': ['**/*']]) ConsoleUtil.initJsonConfig() } diff --git a/plugin/src/test/groovy/org/grails/plugins/console/ConsoleControllerSpec.groovy b/plugin/src/test/groovy/org/grails/plugins/console/ConsoleControllerSpec.groovy index 732c6a2..d154202 100644 --- a/plugin/src/test/groovy/org/grails/plugins/console/ConsoleControllerSpec.groovy +++ b/plugin/src/test/groovy/org/grails/plugins/console/ConsoleControllerSpec.groovy @@ -14,9 +14,10 @@ class ConsoleControllerSpec extends Specification implements ControllerUnitTest< @Override Closure doWithConfig() {{ config -> - // TODO: fix dot notation -// config.grails.plugin.console.fileStore.remote.enabled = true -// config.grails.plugin.console.csrfProtection.enabled = true + config.merge([ + ("config.grails.plugin.console.fileStore.remote.enabled"): true, + ("config.grails.plugin.console.csrfProtection.enabled"): true + ]) }} void setup() { @@ -27,11 +28,16 @@ class ConsoleControllerSpec extends Specification implements ControllerUnitTest< tempDir = Files.createTempDirectory('console').toFile() - controller.consoleConfig = new ConsoleConfig(config) + controller.consoleConfig = new ConsoleConfig(config, "grails.plugin.console") } void cleanup() { FileUtils.deleteDirectory tempDir + config.clear() + config.merge([ + ("config.grails.plugin.console.fileStore.remote.enabled"): true, + ("config.grails.plugin.console.csrfProtection.enabled"): true + ]) } void 'index'() { @@ -51,11 +57,10 @@ class ConsoleControllerSpec extends Specification implements ControllerUnitTest< model.json.baseUrl == 'http://localhost:8080/console' } - // TODO: fix dot notation void 'index - baseUrl with config'() { when: - config['grails.plugin.console'] = [baseUrl:'http://localhost:5050/x/y/z/console'] - controller.consoleConfig = new ConsoleConfig(config['grails.plugin.console']) + config.merge(["grails.plugin.console.baseUrl":'http://localhost:5050/x/y/z/console']) + controller.consoleConfig = new ConsoleConfig(config, "grails.plugin.console") controller.index() then: @@ -149,12 +154,12 @@ class ConsoleControllerSpec extends Specification implements ControllerUnitTest< response.json.error.contains 'Directory not found' } - // TODO: fix dot notation void 'listFiles - remote file store disabled'() { given: String path = tempDir.absolutePath - config['grails.plugin.console'] = [fileStore:[remote:[enabled: false]]] - controller.consoleConfig = new ConsoleConfig(config['grails.plugin.console']) + + config.merge([("grails.plugin.console.fileStore.remote.enabled"):false]) + controller.consoleConfig = new ConsoleConfig(config, "grails.plugin.console") when: controller.listFiles(path) @@ -191,8 +196,9 @@ class ConsoleControllerSpec extends Specification implements ControllerUnitTest< request.method = 'GET' params.path = testFile1.absolutePath - config['grails.plugin.console'] = [fileStore:[remote:[enabled: false]]] - controller.consoleConfig = new ConsoleConfig(config['grails.plugin.console']) + + config.merge([("grails.plugin.console.fileStore.remote.enabled"):false]) + controller.consoleConfig = new ConsoleConfig(config, "grails.plugin.console") when: controller.file() diff --git a/plugin/src/test/groovy/org/grails/plugins/console/ConsoleServiceSpec.groovy b/plugin/src/test/groovy/org/grails/plugins/console/ConsoleServiceSpec.groovy index c185994..115d2ab 100644 --- a/plugin/src/test/groovy/org/grails/plugins/console/ConsoleServiceSpec.groovy +++ b/plugin/src/test/groovy/org/grails/plugins/console/ConsoleServiceSpec.groovy @@ -23,7 +23,6 @@ class ConsoleServiceSpec extends Specification implements ServiceUnitTest