// Copyright 2022 The Nomulus Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

def consoleDir = "${rootDir}/console-webapp"

clean {
  delete "${consoleDir}/node_modules"
  delete "${consoleDir}/dist"
}

task npmInstallDeps(type: Exec) {
  workingDir "${consoleDir}/"
  executable 'npm'
  args 'i', '--no-audit', '--no-fund', '--loglevel=error'
}

task runConsoleWebappLocally(type: Exec) {
  workingDir "${consoleDir}/"
  executable 'npm'
  args 'run', 'start:dev'
}

task runConsoleWebappUnitTests(type: Exec) {
  workingDir "${consoleDir}/"
  executable 'npm'
  args 'run', 'test'
}

task buildConsoleWebappNonProd(type: Exec) {
  workingDir "${consoleDir}/"
  executable 'npm'
  args 'run', 'build'
}

// Keeping the same as non prod for now before we figure out optimization we want to include
task buildConsoleWebappProd(type: Exec) {
  workingDir "${consoleDir}/"
  executable 'npm'
  args 'run', 'build'
}

task applyFormatting(type: Exec) {
  workingDir "${consoleDir}/"
  executable 'npm'
  args 'run', 'prettify'
}

task checkFormatting(type: Exec) {
  workingDir "${consoleDir}/"
  executable 'npm'
  args 'run', 'prettify:check'
}

tasks.runConsoleWebappUnitTests.dependsOn(tasks.npmInstallDeps)
tasks.buildConsoleWebappProd.dependsOn(tasks.npmInstallDeps)
tasks.applyFormatting.dependsOn(tasks.npmInstallDeps)
tasks.checkFormatting.dependsOn(tasks.npmInstallDeps)
tasks.build.dependsOn(tasks.checkFormatting)
