Git Product home page Git Product logo

codelytv / scala-basic-skeleton.g8 Goto Github PK

View Code? Open in Web Editor NEW
18.0 5.0 17.0 131 KB

🧬🌱 Scala Basic Skeleton: Template for bootstrapping your new Scala project following idiomatic best practices powered by Giter 8.

Home Page: https://pro.codely.com/library/introduccion-a-scala-29386/63278/about/

License: MIT License

Scala 78.32% Shell 21.68%
scala sbt bootstrap template hooks editorconfig scalafmt codelytv scalatest skeleton

scala-basic-skeleton.g8's Introduction

Codely logo

🧬⚑ Codely Scala Basic Skeleton (powered by Giter 8)

Codely Open Source Codely Pro Courses License GitHub Repo stars Continuous Integration status

Template for bootstrapping your new Scala project following idiomatic best practices powered by Giter 8.

πŸ’‘ Related resources | 🌟 Repository Stargazers

πŸš€ How to use

Run the following command and you're ready to go:

sbt new codelytv/scala-basic-skeleton.g8

You can now move to your project's directory, enter the SBT shell with the sbt command, and run the tests with test or t.

Project creation wizard

It will ask for some parameters like your desired project name or the organization to customize the generated project package name.

It will also ask for the version of some dependencies such as Scala (the language itself), SBT, or ScalaTest. If you do not know which version to choose for any of these dependencies, just go with the default one. These suggestions are dynamically generated based on the latest stable version available in Maven at the moment of creating your project 😊🀟

Pre-requisites

You only need the common tooling used for developing Scala applications:

Installing instructions for macOS with SDKMAN!

If you use macOS, we would recommend using SDKMAN! to manage different JDK versions and tooling:

  1. Install SDKMAN with homebrew
  2. Install the JDK you prefer. If you ask us, we will opt for:
    1. Check the latest Java LTS JDK version
    2. Check the latest Zulu distribution version for that LTS with:
      sdk list java
    3. Install it:
      sdk install java XX.YY.ZZ-zulu
  3. Install the latest SBT:
    sdk install sbt

πŸ’Ž Features

  • Permissive LICENSE: Allow using projects created with this template for commercial and private purposes.
  • Continuous Integration for the template: Use GitHub Actions to validate every commit merging to main to guarantee correctness.
  • Complete README.md example: Include badges for CI status and other fancy stuff.
  • Latest versions of Scala, SBT and ScalaTest. Always: They are dynamically suggested based on the latest stable version available while creating your project.
  • Minimum dependencies: Just the most common for starting up, and you can delete them in your build.sbt once the project has been created:
    • ScalaTest: Test runner.
    • ScalaMock: Test doubles generator.
    • nscala-time: Commonly used library wrapping Joda Time offering a Scala-friendly API like: 2.hours + 45.minutes.
    • pprint: Much better than System.out.println(x.toString).
  • Other ecosystem tools already configured to follow idiomatic best practices:
  • Opinions:
    • Configured to avoid the scala/ default subdirectory because we don't want to split source code by programming language. That is, instead of having the src/main/scala/ and src/test/scala/ folders you will be able to code right in src/main/ and src/test/ ones.
    • .gitignore: Avoid including particular ignore rules for any specific IDE or OS. They must be included in your global Git config saving that noise from the project-specific rules.
    • Include SBT aliases for common tasks. You will be able to run your tests with t, compile with c, or run all the tasks needed to execute before doing a Git push (compile source and test, and check source and test code style) with prep

πŸ€½β€ Pre-push Git hook

There's one Git hook included. It's inside the doc/hooks folder, and it will run the prep SBT task before pushing to any remote.

This prep task is intended to run all the checks you consider before pushing. At this very moment, it tries to compile and check the code style rules with ScalaFmt.

You can define what this task does by modifying the prep task in the build.sbt file. We like the approach of just having to run 1 single SBT task instead of multiple tasks because it's more efficient (the hook doesn't have to create multiple SBT sessions), and also because this way we can control the pre push tasks with the SBT alias defined at the build.sbt without altering the hooks.

If you want to install this hook, just cd doc/hooks and run ./install-hooks.sh.

πŸ’‘ Related resources

πŸ§‘β€πŸŽ“ Related learning resources

πŸ§‘β€πŸ’» Related skeleton repositories

🧬 Scala repositories

♨️ Java

πŸŸͺ Kotlin

🦈 C#

🟨 JavaScript

πŸ”· TypeScript

🐘 PHP

βš–οΈ License

See LICENSE.

🀝 Contributing

See CONTRIBUTING.md.

πŸ€” About

This hopefully helpful resource has been developed by Codely and contributors.

If you appreciate this contribution and want to show some support to our Open Source contributions, you have several options:

scala-basic-skeleton.g8's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

scala-basic-skeleton.g8's Issues

Doc folder disappears when doing sbt new

Expected: when I do sbt new codelytv/scala-bootstrap-template.g8, I expect a doc folder to be created with the hooks.

Actual: when I do sbt new codelytv/scala-bootstrap-template.g8, a doc folder is not created.

Steps to reproduce:

  1. sbt new codelytv/scala-bootstrap-template.g8
  2. accept defaults
  3. cd scala-bootstrap
  4. ls

Error using default versions

Hi!
I've tried to run this basic bootstrap skeleton given the default values but I get an error when doing sbt command:

[error] (Compile / compileIncremental) java.io.IOError: java.lang.RuntimeException: /packages cannot be represented as URI

Used entries:

sbt_version 1.2.6
scala_version 2.12.7
name Scala bootstrap
version 1.0
organization tv.codely
package tv.codely.scala_bootstrap

If I replace scala and sbt versions with latest ones it works properly:

sbt_version 1.3.8
scala_version 2.13.1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.