Skip to content

Commit

Permalink
Creating chat release pipeline
Browse files Browse the repository at this point in the history
  • Loading branch information
TonioGela committed Oct 22, 2023
1 parent 6f19900 commit ced3b93
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 6 deletions.
42 changes: 42 additions & 0 deletions .github/workflows/client.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: Build client
on:
push:
branches:
- main

jobs:
deploy:
name: Build Client
strategy:
max-parallel: 3
matrix:
os: [ubuntu-latest, macos-latest]
java: [temurin@17]
runs-on: ${{ matrix.os }}
timeout-minutes: 60
steps:
- name: Checkout current branch (full)
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Setup Java (temurin@17)
id: setup-java-temurin-17
if: matrix.java == 'temurin@17'
uses: actions/setup-java@v3
with:
distribution: temurin
java-version: 17
cache: sbt

- name: Link Native Client
run: sbt client/nativeLink

- name: Publish Native Client
run: sbt client/nativeLink/artifactPath

- uses: actions/upload-artifact@v3
with:
name: fs2-chat-client-${{ matrix.os }}
path: ~/fs2-chat-client
if-no-files-found: error
6 changes: 4 additions & 2 deletions client/src/main/scala/dev/toniogela/chat/Client.scala
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ object Client:

private val directMessage: Regex = "@(\\S+):(.+)".r

def renderEmojis: String => String = _.replaceAll(" :)", " 😄").replaceAll(" D:", " 😦")

private def processOutgoing(
server: Server,
printer: Printer
Expand All @@ -40,8 +42,8 @@ object Client:
.unNone
.map {
case directMessage(name, msg) if name.trim.nonEmpty && msg.trim.nonEmpty =>
ClientCommand.DirectMessage(Username(name.trim), msg.trim)
case msg => ClientCommand.SendMessage(msg)
ClientCommand.DirectMessage(Username(name.trim), renderEmojis(msg.trim))
case msg => ClientCommand.SendMessage(renderEmojis(msg))
}
.evalMap(server.write)

Expand Down
2 changes: 1 addition & 1 deletion client/src/main/scala/dev/toniogela/chat/ClientApp.scala
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ val port: Opts[Port] = Opts.option[Int]("port", "The port to connect to")
.mapValidated(Port.fromInt(_).toValidNel("Invalid port number"))

val hostname: Opts[Hostname] = Opts.option[String]("hostname", "The hostname to connect to")
.withDefault("http://scala.show")
.withDefault("scala.show")
.mapValidated(Hostname.fromString(_).toValidNel("Invalid hostname"))

val ip: Opts[IpAddress] = Opts.option[String]("ip", "The ip address to connect to")
Expand Down
2 changes: 1 addition & 1 deletion client/src/main/scala/dev/toniogela/chat/Printer.scala
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ object Printer:
def alert(msg: String): IO[Unit] = println(s"📢 $GREEN$msg$RESET")

def privateMessage(username: Username, message: String) =
println(s"$MAGENTA${username.name} says: $message")
println(s"$MAGENTA${username.name} says: $message$RESET")

def errorln(msg: String): IO[Unit] = println(s"$RED$msg$RESET")

Expand Down
10 changes: 8 additions & 2 deletions project/Utils.scala
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,14 @@ object Utils {

def native: Project = p.enablePlugins(ScalaNativePlugin).disablePlugins(RevolverPlugin)
.settings(nativeConfig ~= {
_.withLTO(LTO.full).withGC(GC.commix).withMode(Mode.releaseFull)
})
_.withLTO(LTO.full).withGC(GC.commix).withMode(Mode.releaseSize)
}).settings(
nativeLink := {
val file: File = nativeLink.value
IO.copyFile(file, new File("~/fs2-chat-client"))
file
}
)
}

implicit class RichCrossProject(private val p: CrossProject.Builder) extends AnyVal {
Expand Down

0 comments on commit ced3b93

Please sign in to comment.