Skip to content

Commit

Permalink
Add builder info to studentified artifact/Add version command/Change …
Browse files Browse the repository at this point in the history
…base package name (#227)

* Add builder info to studentified artifact
* Add version command to cmta
* Change base package name
* Adjust package names for main methods in cmta & cmtc
  • Loading branch information
eloots authored Mar 17, 2023
1 parent 614e334 commit b98b2c9
Show file tree
Hide file tree
Showing 78 changed files with 444 additions and 340 deletions.
6 changes: 3 additions & 3 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ lazy val cmta = project
.enablePlugins(NativeImagePlugin)
.dependsOn(core, core % "test->test")
.settings(commonSettings: _*)
.settings(Compile / mainClass := Some("cmt.admin.Main"))
.settings(buildInfoKeys := buildKeysWithName("Course Management Tools (Admin)"))
.settings(Compile / mainClass := Some("com.lunatech.cmt.admin.Main"))
.settings(buildInfoKeys := buildKeysWithName("cmta:Course Management Tools (Admin)"))

lazy val cmtc = project
.in(file("cmtc"))
Expand All @@ -24,7 +24,7 @@ lazy val cmtc = project
.dependsOn(core, core % "test->test")
.settings(commonSettings: _*)
.settings(libraryDependencies ++= Dependencies.cmtcDependencies)
.settings(Compile / mainClass := Some("cmt.client.Main"))
.settings(Compile / mainClass := Some("com.lunatech.cmt.client.Main"))
.settings(buildInfoKeys := buildKeysWithName("Course Management Tools (Client)"))

lazy val `functional-tests` = project.in(file("functional-tests"))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package cmt.admin
package com.lunatech.cmt.admin

/** Copyright 2022 - Eric Loots - [email protected] / Trevor Burton-McCreadie - [email protected]
*
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package cmt.admin
package com.lunatech.cmt.admin

/** Copyright 2022 - Eric Loots - [email protected] / Trevor Burton-McCreadie - [email protected]
*
Expand All @@ -14,7 +14,14 @@ package cmt.admin
*/

import caseapp.core.app.{CommandsEntryPoint}
import cmt.admin.command.{Delinearize, DuplicateInsertBefore, Linearize, RenumberExercises, Studentify}
import com.lunatech.cmt.admin.command.{
Delinearize,
DuplicateInsertBefore,
Linearize,
RenumberExercises,
Studentify,
Version
}

object Main extends CommandsEntryPoint:
override def progName = "cmta"
Expand All @@ -23,4 +30,5 @@ object Main extends CommandsEntryPoint:
DuplicateInsertBefore.command,
Linearize.command,
RenumberExercises.command,
Studentify.command)
Studentify.command,
Version.command)
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package cmt.admin.cli
package com.lunatech.cmt.admin.cli

import caseapp.core.argparser.{ArgParser, FlagArgParser, SimpleArgParser}
import cats.syntax.apply.*
import cmt.admin.Domain.*
import cmt.core.validation.FileValidations.*
import com.lunatech.cmt.admin.Domain.*
import com.lunatech.cmt.core.validation.FileValidations.*
import sbt.io.syntax.file
import caseapp.core.Error
import cats.syntax.either.*
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package cmt.admin.cli
package com.lunatech.cmt.admin.cli

import caseapp.{ExtraName, Help, HelpMessage, Parser, ValueDescription}
import cmt.admin.Domain.{ConfigurationFile, MainRepository}
import cmt.admin.cli.ArgParsers.{configurationFileArgParser, mainRepositoryArgParser}
import com.lunatech.cmt.admin.Domain.{ConfigurationFile, MainRepository}
import com.lunatech.cmt.admin.cli.ArgParsers.{configurationFileArgParser, mainRepositoryArgParser}

final case class SharedOptions(
@ExtraName("m")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
package cmt.admin.command
package com.lunatech.cmt.admin.command

import caseapp.{AppName, CommandName, ExtraName, HelpMessage, Recurse, RemainingArgs, ValueDescription}
import cmt.*
import cmt.Helpers.*
import cmt.ProcessDSL.toProcessCmd
import cmt.admin.Domain.LinearizeBaseDirectory
import cmt.admin.cli.SharedOptions
import cmt.core.execution.Executable
import cmt.core.validation.Validatable
import com.lunatech.cmt.*
import com.lunatech.cmt.Helpers.*
import com.lunatech.cmt.ProcessDSL.toProcessCmd
import com.lunatech.cmt.admin.Domain.LinearizeBaseDirectory
import com.lunatech.cmt.admin.cli.SharedOptions
import com.lunatech.cmt.core.execution.Executable
import com.lunatech.cmt.core.validation.Validatable
import sbt.io.IO as sbtio
import sbt.io.syntax.*
import cmt.admin.cli.ArgParsers.linearizeBaseDirectoryArgParser
import cmt.core.cli.CmtCommand
import com.lunatech.cmt.admin.cli.ArgParsers.linearizeBaseDirectoryArgParser
import com.lunatech.cmt.core.cli.CmtCommand

object Delinearize:

Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,21 @@
package cmt.admin.command
package com.lunatech.cmt.admin.command

import cmt.*
import com.lunatech.cmt.*
import caseapp.{AppName, CommandName, ExtraName, HelpMessage, Recurse, RemainingArgs, ValueDescription}
import cmt.Helpers.{ExercisesMetadata, getExerciseMetadata, commitToGit, exitIfGitIndexOrWorkspaceIsntClean}
import cmt.admin.Domain.{ExerciseNumber, RenumberOffset, RenumberStart, RenumberStep}
import cmt.admin.cli.SharedOptions
import cmt.core.execution.Executable
import cmt.core.validation.Validatable
import com.lunatech.cmt.Helpers.{
ExercisesMetadata,
getExerciseMetadata,
commitToGit,
exitIfGitIndexOrWorkspaceIsntClean
}
import com.lunatech.cmt.admin.Domain.{ExerciseNumber, RenumberOffset, RenumberStart, RenumberStep}
import com.lunatech.cmt.admin.cli.SharedOptions
import com.lunatech.cmt.core.execution.Executable
import com.lunatech.cmt.core.validation.Validatable
import sbt.io.IO as sbtio
import sbt.io.syntax.*
import cmt.admin.cli.ArgParsers.exerciseNumberArgParser
import cmt.core.cli.CmtCommand
import com.lunatech.cmt.admin.cli.ArgParsers.exerciseNumberArgParser
import com.lunatech.cmt.core.cli.CmtCommand

object DuplicateInsertBefore:

Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package cmt.admin.command
package com.lunatech.cmt.admin.command

import caseapp.{AppName, CommandName, ExtraName, HelpMessage, Recurse, RemainingArgs, ValueDescription}
import cmt.Helpers.*
import cmt.{CMTaConfig, CmtError, printResult, toConsoleGreen}
import cmt.admin.Domain.{ForceDeleteDestinationDirectory, LinearizeBaseDirectory, MainRepository}
import cmt.admin.cli.ArgParsers.{forceDeleteDestinationDirectoryArgParser, linearizeBaseDirectoryArgParser}
import cmt.admin.cli.SharedOptions
import cmt.core.cli.CmtCommand
import cmt.core.execution.Executable
import cmt.core.validation.Validatable
import com.lunatech.cmt.Helpers.*
import com.lunatech.cmt.{CMTaConfig, CmtError, printResult, toConsoleGreen}
import com.lunatech.cmt.admin.Domain.{ForceDeleteDestinationDirectory, LinearizeBaseDirectory, MainRepository}
import com.lunatech.cmt.admin.cli.ArgParsers.{forceDeleteDestinationDirectoryArgParser, linearizeBaseDirectoryArgParser}
import com.lunatech.cmt.admin.cli.SharedOptions
import com.lunatech.cmt.core.cli.CmtCommand
import com.lunatech.cmt.core.execution.Executable
import com.lunatech.cmt.core.validation.Validatable
import sbt.io.IO as sbtio
import sbt.io.syntax.*

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package cmt.admin.command
package com.lunatech.cmt.admin.command

import cmt.Helpers.extractExerciseNr
import com.lunatech.cmt.Helpers.extractExerciseNr
def renumberExercise(exercise: String, exercisePrefix: String, newNumber: Int): String =
val newNumberPrefix = f"${exercisePrefix}_$newNumber%03d_"
val oldNumberPrefix =
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,22 @@
package cmt.admin.command
package com.lunatech.cmt.admin.command

import caseapp.{AppName, CommandName, ExtraName, HelpMessage, Recurse, RemainingArgs, ValueDescription}
import cmt.{CMTaConfig, CmtError, printResult}
import cmt.Helpers.{ExercisesMetadata, getExerciseMetadata, commitToGit, exitIfGitIndexOrWorkspaceIsntClean}
import cmt.admin.Domain.{RenumberOffset, RenumberStart, RenumberStep}
import cmt.admin.cli.SharedOptions
import cmt.core.execution.Executable
import cmt.admin.cli.ArgParsers.{renumberOffsetArgParser, renumberStartArgParser, renumberStepArgParser}
import cmt.core.cli.CmtCommand
import cmt.core.validation.Validatable
import com.lunatech.cmt.{CMTaConfig, CmtError, printResult}
import com.lunatech.cmt.Helpers.{
ExercisesMetadata,
getExerciseMetadata,
commitToGit,
exitIfGitIndexOrWorkspaceIsntClean
}
import com.lunatech.cmt.admin.Domain.{RenumberOffset, RenumberStart, RenumberStep}
import com.lunatech.cmt.admin.cli.SharedOptions
import com.lunatech.cmt.core.execution.Executable
import com.lunatech.cmt.admin.cli.ArgParsers.{renumberOffsetArgParser, renumberStartArgParser, renumberStepArgParser}
import com.lunatech.cmt.core.cli.CmtCommand
import com.lunatech.cmt.core.validation.Validatable
import sbt.io.IO as sbtio
import sbt.io.syntax.*
import cmt.toExecuteCommandErrorMessage
import com.lunatech.cmt.toExecuteCommandErrorMessage

object RenumberExercises:

Expand Down
Original file line number Diff line number Diff line change
@@ -1,22 +1,28 @@
package cmt.admin.command
package com.lunatech.cmt.admin.command

import caseapp.{AppName, CommandName, ExtraName, HelpMessage, Name, Recurse, RemainingArgs, ValueDescription}
import cmt.Helpers.*
import cmt.admin.Domain.{ForceDeleteDestinationDirectory, InitializeGitRepo, MainRepository, StudentifyBaseDirectory}
import cmt.core.execution.Executable
import cmt.{CMTaConfig, CmtError, printResult, toConsoleGreen}
import com.lunatech.cmt.Helpers.*
import com.lunatech.cmt.admin.Domain.{
ForceDeleteDestinationDirectory,
InitializeGitRepo,
MainRepository,
StudentifyBaseDirectory
}
import com.lunatech.cmt.core.execution.Executable
import com.lunatech.cmt.{CMTaConfig, CmtError, printResult, toConsoleGreen}
import sbt.io.IO as sbtio
import sbt.io.syntax.*
import cmt.admin.*
import cmt.admin.cli.SharedOptions
import cmt.core.validation.Validatable
import cmt.admin.cli.ArgParsers.{
import com.lunatech.cmt.admin.*
import com.lunatech.cmt.admin.cli.SharedOptions
import com.lunatech.cmt.core.validation.Validatable
import com.lunatech.cmt.admin.cli.ArgParsers.{
forceDeleteDestinationDirectoryArgParser,
initializeGitRepoArgParser,
studentifyBaseDirectoryArgParser
}
import cmt.core.cli.CmtCommand
import cmt.toExecuteCommandErrorMessage
import com.lunatech.cmt.core.GeneratorInfo
import com.lunatech.cmt.core.cli.CmtCommand
import com.lunatech.cmt.toExecuteCommandErrorMessage

object Studentify:

Expand Down Expand Up @@ -62,7 +68,9 @@ object Studentify:
extractUniquePaths(config.testCodeFolders.to(List) ++ config.readMeFiles.to(List))
if (redundantPaths.nonEmpty)
for (redundantPath <- redundantPaths)
println(cmt.toConsoleYellow(s"WARNING: Redundant path detected in CMT configuration: $redundantPath"))
println(
com.lunatech.cmt
.toConsoleYellow(s"WARNING: Redundant path detected in CMT configuration: $redundantPath"))

checkForOverlappingPathsInConfig()

Expand Down Expand Up @@ -122,7 +130,11 @@ object Studentify:

hideExercises(cleanedMainRepo, solutionsFolder, exercises)(config)

writeStudentifiedCMTConfig(studentifiedRootFolder / config.cmtStudentifiedConfigFile, exercises)(config)
import com.lunatech.cmt.version.BuildInfo
val generatorInfo = GeneratorInfo(BuildInfo.name, BuildInfo.version)
writeStudentifiedCMTConfig(studentifiedRootFolder / config.cmtStudentifiedConfigFile, exercises)(
config,
generatorInfo)
writeStudentifiedCMTBookmark(studentifiedRootFolder / config.studentifiedRepoBookmarkFile, exercises.head)

val successMessage = exercises.mkString("Processed exercises:\n ", "\n ", "\n")
Expand Down
28 changes: 28 additions & 0 deletions cmta/src/main/scala/com/lunatech/cmt/admin/command/Version.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.lunatech.cmt.admin.command

import caseapp.{AppName, CommandName, ExtraName, HelpMessage, Name, Recurse, RemainingArgs, ValueDescription}
import com.lunatech.cmt.CmtError
import com.lunatech.cmt.core.cli.CmtCommand
import com.lunatech.cmt.core.execution.Executable
import com.lunatech.cmt.core.validation.Validatable
import com.lunatech.cmt.printResult
import com.lunatech.cmt.version.BuildInfo
object Version:
@AppName("version")
@CommandName("version")
@HelpMessage("Print version info")
final case class Options()

given Validatable[Version.Options] with
extension (options: Version.Options) def validated(): Either[CmtError, Version.Options] = Right(options)
end given

given Executable[Version.Options] with
extension (options: Version.Options) def execute(): Either[CmtError, String] = Right(BuildInfo.toString)
end given

val command: CmtCommand[Version.Options] = new CmtCommand[Version.Options] {

def run(options: Version.Options, args: RemainingArgs): Unit =
options.validated().flatMap(_.execute()).printResult()
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package cmt
package com.lunatech.cmt

/** Copyright 2022 - Eric Loots - [email protected] / Trevor Burton-McCreadie - [email protected]
*
Expand All @@ -13,10 +13,10 @@ package cmt
* See the License for the specific language governing permissions and limitations under the License.
*/

import cmt.TestHelpers.getExercisePrefixAndExercises
import cmt.admin.Domain.{MainRepository, RenumberOffset, RenumberStart, RenumberStep}
import cmt.admin.cli.SharedOptions
import cmt.admin.command.RenumberExercises
import com.lunatech.cmt.TestHelpers.getExercisePrefixAndExercises
import com.lunatech.cmt.admin.Domain.{MainRepository, RenumberOffset, RenumberStart, RenumberStep}
import com.lunatech.cmt.admin.cli.SharedOptions
import com.lunatech.cmt.admin.command.RenumberExercises
import org.scalatest.BeforeAndAfterAll
import org.scalatest.matchers.should.Matchers
import org.scalatest.wordspec.AnyWordSpec
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package cmt
package com.lunatech.cmt

/** Copyright 2022 - Eric Loots - [email protected] / Trevor Burton-McCreadie - [email protected]
*
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package cmt.admin.cli
package com.lunatech.cmt.admin.cli

import caseapp.Parser
import caseapp.core.Error.{RequiredOptionNotSpecified, SeveralErrors}
import cmt.CmtError
import cmt.support.EitherSupport
import com.lunatech.cmt.CmtError
import com.lunatech.cmt.support.EitherSupport
import org.scalatest.BeforeAndAfterAll
import org.scalatest.matchers.should.Matchers
import org.scalatest.prop.TableFor2
Expand All @@ -12,7 +12,7 @@ import org.scalatest.prop.Tables.Table
import org.scalatestplus.scalacheck.ScalaCheckPropertyChecks
import sbt.io.IO
import sbt.io.syntax.File
import cmt.toCmtError
import com.lunatech.cmt.toCmtError

abstract class CommandLineArgumentsSpec[T]
extends AnyWordSpecLike
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package cmt.admin.cli
package com.lunatech.cmt.admin.cli

/** Copyright 2022 - Eric Loots - [email protected] / Trevor Burton-McCreadie - [email protected]
*
Expand All @@ -14,12 +14,12 @@ package cmt.admin.cli
*/

import caseapp.Parser
import cmt.{ErrorMessage, FailedToValidateArgument, OptionName, RequiredOptionIsMissing}
import cmt.admin.Domain.{LinearizeBaseDirectory, MainRepository}
import cmt.admin.command.Delinearize
import cmt.support.TestDirectories
import com.lunatech.cmt.{ErrorMessage, FailedToValidateArgument, OptionName, RequiredOptionIsMissing}
import com.lunatech.cmt.admin.Domain.{LinearizeBaseDirectory, MainRepository}
import com.lunatech.cmt.admin.command.Delinearize
import com.lunatech.cmt.support.TestDirectories
import sbt.io.syntax.{File, file}
import cmt.admin.cli.ArgParsers.linearizeBaseDirectoryArgParser
import com.lunatech.cmt.admin.cli.ArgParsers.linearizeBaseDirectoryArgParser

final class DelinearizeArgumentsSpec extends CommandLineArgumentsSpec[Delinearize.Options] with TestDirectories {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package cmt.admin.cli
package com.lunatech.cmt.admin.cli

/** Copyright 2022 - Eric Loots - [email protected] / Trevor Burton-McCreadie - [email protected]
*
Expand All @@ -14,12 +14,12 @@ package cmt.admin.cli
*/

import caseapp.Parser
import cmt.{ErrorMessage, FailedToValidateArgument, OptionName, RequiredOptionIsMissing}
import cmt.admin.Domain.{ExerciseNumber, MainRepository}
import cmt.admin.command.DuplicateInsertBefore
import cmt.support.TestDirectories
import com.lunatech.cmt.{ErrorMessage, FailedToValidateArgument, OptionName, RequiredOptionIsMissing}
import com.lunatech.cmt.admin.Domain.{ExerciseNumber, MainRepository}
import com.lunatech.cmt.admin.command.DuplicateInsertBefore
import com.lunatech.cmt.support.TestDirectories
import sbt.io.syntax.{File, file}
import cmt.admin.cli.ArgParsers.exerciseNumberArgParser
import com.lunatech.cmt.admin.cli.ArgParsers.exerciseNumberArgParser

final class DuplicateInsertBeforeArgumentsSpec
extends CommandLineArgumentsSpec[DuplicateInsertBefore.Options]
Expand Down
Loading

0 comments on commit b98b2c9

Please sign in to comment.