Mill Wrapper Script - Coursier-based
Small script to automatically fetch and execute mill build tool using Coursier.
- How it works
- Use cases
- License
- Changelog
- millw 0.4.0-cs - 2022-01-10
- millw 0.4.0 - 2021-12-22
- millw 0.3.9 - 2021-11-17
- millw 0.3.8 - 2021-09-17
- millw 0.3.7 - 2021-08-26
- millw 0.3.6 - 2021-07-22
- millw 0.3.5 - 2021-03-01
- millw 0.3.4 - 2020-10-27
- millw 0.3.3 - 2020-07-14
- millw 0.3.2 - 2020-05-09
- millw 0.3.1 - 2020-04-10
- millw 0.3.0 - 2019-12-06
- millw 0.2.0 - 2019-07-10
- millw 0.1.0 - 2019-03-27
How it works
millw
is a small wrapper script around mill and works almost identical to mill.
It automatically downloads the correct mill version (as a set of thin JARs in the coursier cache).
I recommend to rename the tool to just mill
.
It is designed to be a drop-in replacement for the official mill binary.
The project name and also the script name was primarily choosen to be millw
to disambiguate references.
The mill version to be used will be determined by the following steps. The search ends, after the first step that results in a version.
-
If the first parameter is
--mill-version
, the second parameter will be used as the mill version.Examplesh $ mill --mill-version 0.9.9 --disable-ticker version 0.9.9
-
else if the environment variable
MILL_VERSION
is defined, it’s value will be used.Examplesh $ MILL_VERSION mill --disable-ticker version 0.9.9
-
else if there is a file
.mill-version
in the working directory, it’s content will be used as mill version. The file must have only a mill version as content, no additional content or comments are supported.Examplesh $ echo -n "0.9.9" > .mill-version sh $ mill --disable-ticker version 0.9.9
-
The latest mill release available from the Github release pages will be used.
-
The values of the
DEFAULT_MILL_VERSION
variable inside the script will be used.
Use cases
As mill executable
Istead of installing mill, you can just place the script into you local $HOME/bin
directory and rename it to mill
.
If you need a special mill version in a project directory, just place a .mill-version
file with the best mill version.
sh $ echo -n "0.9.9" > .mill-version
As a wrapper script in your project
To make the start for others easier or to always have the correct mill version in your CI environment[1],
you can just place a copy of the script as millw
(for Windows millw.bat
) in your project root directory.
You should change the DEFAULT_MILL_VERSION
variable in that script to the correct version you want to use
and add the file under version control.
millw
script with mill
Add a target to update the /**
* Update the millw script.
*/
def millw() = T.command {
val target = mill.modules.Util.download("https://raw.githubusercontent.com/lefou/millw/main/millw")
val millw = build.millSourcePath / "millw"
os.copy.over(target.path, millw)
os.perms.set(millw, os.perms(millw) + java.nio.file.attribute.PosixFilePermission.OWNER_EXECUTE)
target
}
License
Published under the Apache Licencse, Version 2.0.
Changelog
millw 0.4.0-cs - 2022-01-10
-
Coursier-based version - uses coursier under-the-hood to download the Mill class path as a set of thin JARs
millw 0.4.0 - 2021-12-22
-
Use curl with --force options to make millw more robust against download errors
millw 0.3.9 - 2021-11-17
-
Use 6 digits for mktemp
-
Fixed download URL for snapshot releases
millw 0.3.8 - 2021-09-17
-
Added support for mill milestones (calculate correct download URL), fixes issues with mill 0.10.0-M2
millw 0.3.7 - 2021-08-26
-
Write messages from the wrapper script to STDERR
millw 0.3.6 - 2021-07-22
-
millw: Support non-GNU touch command, e.g. on BSD and OSX
millw 0.3.5 - 2021-03-01
-
Updated mill repository URLs (mill repo has moved)
-
millw.bat: script exit does not exit the command shell
-
millw.bat: use curl if present, otherwise fall back to bitsadmin
millw 0.3.4 - 2020-10-27
-
millw.bat: Fixed download URL to support snapshot versions of mill
-
millw: Support running/downloading when used with Git Bash under Windows 10
millw 0.3.3 - 2020-07-14
-
millw: Fixed fetching of latest mill version
millw 0.3.2 - 2020-05-09
-
millw.bat: Fixed handling and stripping of
--mill-version
parameter before calling mill
millw 0.3.1 - 2020-04-10
-
millw.bat: Quote mill command to support directories with spaces
millw 0.3.0 - 2019-12-06
-
Conform to XDG Base Directory Specification (use
~/.cache
dir)
millw 0.2.0 - 2019-07-10
-
Print info message before download
-
millw: If no version was given, millw tries to download the latest version
-
Support changed download filename scheme since mill 0.5.0
-
Respect set version from MILL_VERSION environment variable, if defined
millw 0.1.0 - 2019-03-27
-
First release