Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upgrade Mill to 0.12.7 #311

Merged
merged 1 commit into from
Feb 3, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .mill-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.11.13
0.12.7
14 changes: 8 additions & 6 deletions build.sc
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
import $ivy.`com.goyeau::mill-git::0.2.5`
import $ivy.`com.goyeau::mill-scalafix::0.4.2`
import $ivy.`com.goyeau::mill-git::0.2.7`
import $ivy.`com.goyeau::mill-scalafix::0.5.0`
import $ivy.`org.typelevel::scalac-options:0.1.7`

import $file.project.Dependencies
import Dependencies.Dependencies._
import $file.project.SwaggerModelGenerator
import Dependencies.{bouncycastle, circe, circeYaml, collectionCompat, http4s, java8compat, logback, logging, tests}
import $file.project.{SwaggerModelGenerator => SwaggerModelGeneratorFile}
import SwaggerModelGeneratorFile.SwaggerModelGenerator
import com.goyeau.mill.git.{GitVersionModule, GitVersionedPublishModule}
import com.goyeau.mill.scalafix.StyleModule
import mill._
Expand All @@ -14,12 +16,12 @@ import mill.scalalib.publish.{Developer, License, PomSettings, VersionControl}
import org.typelevel.scalacoptions.ScalacOptions.{fatalWarningOptions, maxInlines, release, source3}
import org.typelevel.scalacoptions.{ScalaVersion, ScalacOptions}

object `kubernetes-client` extends Cross[KubernetesClientModule]("3.3.4", "2.13.15", "2.12.20")
object `kubernetes-client` extends Cross[KubernetesClientModule]("3.3.4", "2.13.16", "2.12.20")
trait KubernetesClientModule
extends CrossScalaModule
with StyleModule
with GitVersionedPublishModule
with SwaggerModelGenerator.SwaggerModelGenerator {
with SwaggerModelGenerator {
lazy val jvmVersion = "11"
override def javacOptions = super.javacOptions() ++ Seq("-source", jvmVersion, "-target", jvmVersion)
override def scalacOptions = super.scalacOptions() ++ ScalacOptions.tokensForVersion(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ class PodsApiTest
res <- namespacedApi(defaultNamespace).download(
pod.metadata.get.name.get,
Path("/etc/sysctl.conf"),
Path("./out/sysctl.conf"),
Path("./sysctl.conf"),
pod.spec.flatMap(_.containers.headOption.map(_.name))
)
} yield res
Expand Down
162 changes: 126 additions & 36 deletions mill
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
# You can give the required mill version with --mill-version parameter
# If no version is given, it falls back to the value of DEFAULT_MILL_VERSION
#
# Project page: https://github.com/lefou/millw
# Script Version: 0.4.3
# Original Project page: https://github.com/lefou/millw
# Script Version: 0.4.12
#
# If you want to improve this script, please also contribute your changes back!
#
Expand All @@ -14,7 +14,12 @@
set -e

if [ -z "${DEFAULT_MILL_VERSION}" ] ; then
DEFAULT_MILL_VERSION=0.10.8
DEFAULT_MILL_VERSION=0.13.0-M0
fi


if [ -z "${GITHUB_RELEASE_CDN}" ] ; then
GITHUB_RELEASE_CDN=""
fi


Expand Down Expand Up @@ -44,16 +49,16 @@ fi
# If not already set, read .mill-version file
if [ -z "${MILL_VERSION}" ] ; then
if [ -f ".mill-version" ] ; then
MILL_VERSION="$(head -n 1 .mill-version 2> /dev/null)"
MILL_VERSION="$(tr '\r' '\n' < .mill-version | head -n 1 2> /dev/null)"
elif [ -f ".config/mill-version" ] ; then
MILL_VERSION="$(head -n 1 .config/mill-version 2> /dev/null)"
MILL_VERSION="$(tr '\r' '\n' < .config/mill-version | head -n 1 2> /dev/null)"
fi
fi

if [ -n "${XDG_CACHE_HOME}" ] ; then
MILL_DOWNLOAD_PATH="${XDG_CACHE_HOME}/mill/download"
else
MILL_DOWNLOAD_PATH="${HOME}/.cache/mill/download"
MILL_USER_CACHE_DIR="${XDG_CACHE_HOME:-${HOME}/.cache}/mill"

if [ -z "${MILL_DOWNLOAD_PATH}" ] ; then
MILL_DOWNLOAD_PATH="${MILL_USER_CACHE_DIR}/download"
fi

# If not already set, try to fetch newest from Github
Expand Down Expand Up @@ -96,37 +101,98 @@ if [ -z "${MILL_VERSION}" ] ; then
fi
fi

MILL="${MILL_DOWNLOAD_PATH}/${MILL_VERSION}"
MILL_NATIVE_SUFFIX="-native"
FULL_MILL_VERSION=$MILL_VERSION
ARTIFACT_SUFFIX=""
case "$MILL_VERSION" in
*"$MILL_NATIVE_SUFFIX")
MILL_VERSION=${MILL_VERSION%"$MILL_NATIVE_SUFFIX"}
if [ "$(expr substr $(uname -s) 1 5 2>/dev/null)" = "Linux" ]; then
if [ "$(uname -m)" = "aarch64" ]; then
ARTIFACT_SUFFIX="-native-linux-aarch64"
else
ARTIFACT_SUFFIX="-native-linux-amd64"
fi
elif [ "$(uname)" = "Darwin" ]; then
if [ "$(uname -m)" = "arm64" ]; then
ARTIFACT_SUFFIX="-native-mac-aarch64"
else
ARTIFACT_SUFFIX="-native-mac-amd64"
fi
else
echo "This native mill launcher supports only Linux and macOS." 1>&2
exit 1
fi
esac

MILL="${MILL_DOWNLOAD_PATH}/${FULL_MILL_VERSION}"

try_to_use_system_mill() {
if [ "$(uname)" != "Linux" ]; then
return 0
fi

MILL_IN_PATH="$(command -v mill || true)"

if [ -z "${MILL_IN_PATH}" ]; then
return
return 0
fi

UNIVERSAL_SCRIPT_MAGIC="@ 2>/dev/null # 2>nul & echo off & goto BOF"
SYSTEM_MILL_FIRST_TWO_BYTES=$(head --bytes=2 "${MILL_IN_PATH}")
if [ "${SYSTEM_MILL_FIRST_TWO_BYTES}" = "#!" ]; then
# MILL_IN_PATH is (very likely) a shell script and not the mill
# executable, ignore it.
return 0
fi

if ! head -c 128 "${MILL_IN_PATH}" | grep -qF "${UNIVERSAL_SCRIPT_MAGIC}"; then
if [ -n "${MILLW_VERBOSE}" ]; then
echo "Could not determine mill version of ${MILL_IN_PATH}, as it does not start with the universal script magic2" 1>&2
fi
return
SYSTEM_MILL_PATH=$(readlink -e "${MILL_IN_PATH}")
SYSTEM_MILL_SIZE=$(stat --format=%s "${SYSTEM_MILL_PATH}")
SYSTEM_MILL_MTIME=$(stat --format=%y "${SYSTEM_MILL_PATH}")

if [ ! -d "${MILL_USER_CACHE_DIR}" ]; then
mkdir -p "${MILL_USER_CACHE_DIR}"
fi

# Roughly the size of the universal script.
MILL_VERSION_SEARCH_RANGE="2403"
MILL_IN_PATH_VERSION=$(head -c "${MILL_VERSION_SEARCH_RANGE}" "${MILL_IN_PATH}" |\
sed -n 's/^.*-DMILL_VERSION=\([^\s]*\) .*$/\1/p' |\
head -n 1)
SYSTEM_MILL_INFO_FILE="${MILL_USER_CACHE_DIR}/system-mill-info"
if [ -f "${SYSTEM_MILL_INFO_FILE}" ]; then
parseSystemMillInfo() {
LINE_NUMBER="${1}"
# Select the line number of the SYSTEM_MILL_INFO_FILE, cut the
# variable definition in that line in two halves and return
# the value, and finally remove the quotes.
sed -n "${LINE_NUMBER}p" "${SYSTEM_MILL_INFO_FILE}" |\
cut -d= -f2 |\
sed 's/"\(.*\)"/\1/'
}

if [ -z "${MILL_IN_PATH_VERSION}" ]; then
echo "Could not determine mill version, even though ${MILL_IN_PATH} has the universal script magic" 1>&2
return
CACHED_SYSTEM_MILL_PATH=$(parseSystemMillInfo 1)
CACHED_SYSTEM_MILL_VERSION=$(parseSystemMillInfo 2)
CACHED_SYSTEM_MILL_SIZE=$(parseSystemMillInfo 3)
CACHED_SYSTEM_MILL_MTIME=$(parseSystemMillInfo 4)

if [ "${SYSTEM_MILL_PATH}" = "${CACHED_SYSTEM_MILL_PATH}" ] \
&& [ "${SYSTEM_MILL_SIZE}" = "${CACHED_SYSTEM_MILL_SIZE}" ] \
&& [ "${SYSTEM_MILL_MTIME}" = "${CACHED_SYSTEM_MILL_MTIME}" ]; then
if [ "${CACHED_SYSTEM_MILL_VERSION}" = "${MILL_VERSION}" ]; then
MILL="${SYSTEM_MILL_PATH}"
return 0
else
return 0
fi
fi
fi

if [ "${MILL_IN_PATH_VERSION}" = "${MILL_VERSION}" ]; then
MILL="${MILL_IN_PATH}"
SYSTEM_MILL_VERSION=$(${SYSTEM_MILL_PATH} --version | head -n1 | sed -n 's/^Mill.*version \(.*\)/\1/p')

cat <<EOF > "${SYSTEM_MILL_INFO_FILE}"
CACHED_SYSTEM_MILL_PATH="${SYSTEM_MILL_PATH}"
CACHED_SYSTEM_MILL_VERSION="${SYSTEM_MILL_VERSION}"
CACHED_SYSTEM_MILL_SIZE="${SYSTEM_MILL_SIZE}"
CACHED_SYSTEM_MILL_MTIME="${SYSTEM_MILL_MTIME}"
EOF

if [ "${SYSTEM_MILL_VERSION}" = "${MILL_VERSION}" ]; then
MILL="${SYSTEM_MILL_PATH}"
fi
}
try_to_use_system_mill
Expand All @@ -140,22 +206,34 @@ if [ ! -s "${MILL}" ] ; then
if [ -x "${OLD_MILL}" ] ; then
MILL="${OLD_MILL}"
else
VERSION_PREFIX="$(echo $MILL_VERSION | cut -b -4)"
case $VERSION_PREFIX in
0.0. | 0.1. | 0.2. | 0.3. | 0.4. )
case $MILL_VERSION in
0.0.* | 0.1.* | 0.2.* | 0.3.* | 0.4.* )
DOWNLOAD_SUFFIX=""
DOWNLOAD_FROM_MAVEN=0
;;
0.5.* | 0.6.* | 0.7.* | 0.8.* | 0.9.* | 0.10.* | 0.11.0-M* )
DOWNLOAD_SUFFIX="-assembly"
DOWNLOAD_FROM_MAVEN=0
;;
*)
DOWNLOAD_SUFFIX="-assembly"
DOWNLOAD_FROM_MAVEN=1
;;
esac
unset VERSION_PREFIX

DOWNLOAD_FILE=$(mktemp mill.XXXXXX)

if [ "$DOWNLOAD_FROM_MAVEN" = "1" ] ; then
DOWNLOAD_URL="https://repo1.maven.org/maven2/com/lihaoyi/mill-dist${ARTIFACT_SUFFIX}/${MILL_VERSION}/mill-dist${ARTIFACT_SUFFIX}-${MILL_VERSION}.jar"
else
MILL_VERSION_TAG=$(echo "$MILL_VERSION" | sed -E 's/([^-]+)(-M[0-9]+)?(-.*)?/\1\2/')
DOWNLOAD_URL="${GITHUB_RELEASE_CDN}${MILL_REPO_URL}/releases/download/${MILL_VERSION_TAG}/${MILL_VERSION}${DOWNLOAD_SUFFIX}"
unset MILL_VERSION_TAG
fi

# TODO: handle command not found
echo "Downloading mill ${MILL_VERSION} from ${MILL_REPO_URL}/releases ..." 1>&2
MILL_VERSION_TAG=$(echo $MILL_VERSION | sed -E 's/([^-]+)(-M[0-9]+)?(-.*)?/\1\2/')
${CURL_CMD} -f -L -o "${DOWNLOAD_FILE}" "${MILL_REPO_URL}/releases/download/${MILL_VERSION_TAG}/${MILL_VERSION}${DOWNLOAD_SUFFIX}"
echo "Downloading mill ${MILL_VERSION} from ${DOWNLOAD_URL} ..." 1>&2
${CURL_CMD} -f -L -o "${DOWNLOAD_FILE}" "${DOWNLOAD_URL}"
chmod +x "${DOWNLOAD_FILE}"
mkdir -p "${MILL_DOWNLOAD_PATH}"
mv "${DOWNLOAD_FILE}" "${MILL}"
Expand All @@ -165,11 +243,23 @@ if [ ! -s "${MILL}" ] ; then
fi
fi

if [ -z "$MILL_MAIN_CLI" ] ; then
MILL_MAIN_CLI="${0}"
fi

MILL_FIRST_ARG=""
if [ "$1" = "--bsp" ] || [ "$1" = "-i" ] || [ "$1" = "--interactive" ] || [ "$1" = "--no-server" ] || [ "$1" = "--repl" ] || [ "$1" = "--help" ] ; then
# Need to preserve the first position of those listed options
MILL_FIRST_ARG=$1
shift
fi

unset MILL_DOWNLOAD_PATH
unset MILL_OLD_DOWNLOAD_PATH
unset OLD_MILL
unset MILL_VERSION
unset MILL_VERSION_TAG
unset MILL_REPO_URL

exec "${MILL}" "$@"
# We don't quote MILL_FIRST_ARG on purpose, so we can expand the empty value without quotes
# shellcheck disable=SC2086
exec "${MILL}" $MILL_FIRST_ARG -D "mill.main.cli=${MILL_MAIN_CLI}" "$@"
50 changes: 24 additions & 26 deletions project/Dependencies.sc
Original file line number Diff line number Diff line change
@@ -1,37 +1,35 @@
import mill._
import mill.scalalib._

object Dependencies {
lazy val circe = {
val version = "0.14.6"
Agg(
ivy"io.circe::circe-core:$version",
ivy"io.circe::circe-generic:$version",
ivy"io.circe::circe-parser:$version"
)
}
lazy val circe = {
val version = "0.14.6"
Agg(
ivy"io.circe::circe-core:$version",
ivy"io.circe::circe-generic:$version",
ivy"io.circe::circe-parser:$version"
)
}

lazy val http4s = {
val version = "0.23.24"
val jdkClientVersion = "0.5.0"
Agg(
ivy"org.http4s::http4s-dsl:$version",
ivy"org.http4s::http4s-circe:$version",
ivy"org.http4s::http4s-jdk-http-client:$jdkClientVersion"
)
}
lazy val http4s = {
val version = "0.23.24"
val jdkClientVersion = "0.5.0"
Agg(
ivy"org.http4s::http4s-dsl:$version",
ivy"org.http4s::http4s-circe:$version",
ivy"org.http4s::http4s-jdk-http-client:$jdkClientVersion"
)
}

lazy val circeYaml = Agg(ivy"io.circe::circe-yaml:0.15.1")
lazy val circeYaml = Agg(ivy"io.circe::circe-yaml:0.15.1")

lazy val bouncycastle = Agg(ivy"org.bouncycastle:bcpkix-jdk18on:1.77")
lazy val bouncycastle = Agg(ivy"org.bouncycastle:bcpkix-jdk18on:1.77")

lazy val collectionCompat = Agg(ivy"org.scala-lang.modules::scala-collection-compat:2.11.0")
lazy val collectionCompat = Agg(ivy"org.scala-lang.modules::scala-collection-compat:2.11.0")

lazy val logging = Agg(ivy"org.typelevel::log4cats-slf4j:2.6.0")
lazy val logging = Agg(ivy"org.typelevel::log4cats-slf4j:2.6.0")

lazy val logback = Agg(ivy"ch.qos.logback:logback-classic:1.4.11")
lazy val logback = Agg(ivy"ch.qos.logback:logback-classic:1.4.11")

lazy val java8compat = Agg(ivy"org.scala-lang.modules::scala-java8-compat:1.0.2")
lazy val java8compat = Agg(ivy"org.scala-lang.modules::scala-java8-compat:1.0.2")

lazy val tests = Agg(ivy"org.scalameta::munit:0.7.29")
}
lazy val tests = Agg(ivy"org.scalameta::munit:0.7.29")
6 changes: 3 additions & 3 deletions project/SwaggerModelGenerator.sc
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import $file.Model
import Model.{Definition, Property}
import $ivy.`io.circe::circe-core:0.14.0`
import $ivy.`io.circe::circe-generic:0.14.0`
import $ivy.`io.circe::circe-parser:0.14.0`
import $ivy.`io.circe::circe-core:0.14.10`
import $ivy.`io.circe::circe-generic:0.14.10`
import $ivy.`io.circe::circe-parser:0.14.10`
import mill._
import mill.api.Logger
import mill.scalalib._
Expand Down