# millw **Repository Path**: mirrors_Flowdalic/millw ## Basic Information - **Project Name**: millw - **Description**: Mill Wrapper Script - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-01-17 - **Last Updated**: 2025-09-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README = Mill Wrapper Script :version: 0.4.12 :example-mill-version: 0.11.6 :mill-url: https://github.com/com-lihaoyi/mill :toc: :toc-placement: preamble :important-caption: :heavy_exclamation_mark: IMPORTANT: `millw` is now merged into the {mill-url}[official Mill repository]. Small script to automatically fetch and execute {mill-url}[mill build tool]. == Installation On any platform, you can download the `millw` (Mac / Linux) or `millw.bat` / `millw.ps1` (Windows) scripts found in this repo, into the root of your project. You can then use the script file as a drop-in replacement for Mill. For convenience on Mac and Linux, use your terminal to navigate to the root of your project, then run the following command: .Shell command to install `millw` into your project [source,sh,subs="attributes,verbatim"] ---- $ curl -L https://raw.githubusercontent.com/lefou/millw/{version}/millw > mill && chmod +x mill ---- == How it works `millw` is a small wrapper script around mill and works almost identical to mill. It automatically downloads the correct mill version (into `${XDG_CACHE_HOME}/mill/download` or `~/.cache/mill/download` on Linux/Mac and `$Env:LOCALAPPDATA\mill\download` on Windows). 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 chosen 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. + .Example [source,sh,subs="attributes,verbatim"] ---- sh $ mill --mill-version {example-mill-version} --disable-ticker version {example-mill-version} ---- * If the environment variable `MILL_VERSION` is defined, its value will be used. + .Example [source,sh,subs="attributes,verbatim"] ---- sh $ MILL_VERSION={example-mill-version} mill --disable-ticker version {example-mill-version} ---- * If there is a file `.mill-version` in the working directory, its content will be used as mill version. The file must have only a mill version as content, no additional content or comments are supported. + .Example [source,sh,subs="attributes,verbatim"] ---- sh $ echo -n "{example-mill-version}" > .mill-version sh $ mill --disable-ticker version {example-mill-version} ---- * If there is a file `.config/mill-version`, its content will be used as mill version. * The latest mill release available from the Github release pages will be used. * If the environment variable `DEFAULT_MILL_VERSION` is set, its value 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. .Example: setting mill {example-mill-version} as best local mill version [source,sh,subs="attributes,verbatim"] ---- sh $ echo -n "{example-mill-version}" > .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 environmentfootnote:[Continuous Integration environment], 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. === Add a target to update the `millw` script with mill [source,scala] ---- /** * 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 } ---- == GitHub release CDN support In some areas, the network environment makes downloading files from GitHub release very time-consuming. Fortunately, some CDN services can speed up GitHub release files. You can use the `GITHUB_RELEASE_CDN` environment variable to add a CDN url prefix before the original GitHub release file url to speed up your file downloads! == License Published under the https://www.apache.org/licenses/LICENSE-2.0[Apache Licencse, Version 2.0]. == Changelog === millw 0.4.12 - 2024-06-25 * Introduce a new PowerShell wrapper script. === millw 0.4.11 - 2023-12-18 * Fixed BSP mode on Windows, due to incorrect `MILL_MAIN_CLI` variable handling. === millw 0.4.10 - 2023-09-29 * Fixed unlimited self-calls when the `millw` script is installed in a location that is also part of the `PATH` environment variable. === millw 0.4.9 - 2023-09-27 *This version has issues if you use it as system-wide installed mill replacement. Please don't use this version!* * Improved the logic to use a system-wide installed Mill executable === millw 0.4.8 - 2023-07-25 * Fixed typo in `millw.bat` * Update fallback Mill version to 0.11.1 === millw 0.4.7 - 2023-06-19 * Download newer Mill versions (`0.11.0+`) from Maven Central * Added support for `GITHUB_RELEASE_CDN` variable, to speed up downloads === millw 0.4.6 - 2023-01-06 * Fixed a misplaced newline in `millw.bat` === millw 0.4.5 - 2022-11-15 * Fixed issues with running Mill in `--repl`, `--no-server` or `--bsp` mode by preserving the first position of those essential Mill options === millw 0.4.4 - 2022-11-04 * Feed the currently used mill executable to the Mill process (uses `mill.main.cli` system property) and support `MILL_MAIN_CLI` env variable to override the value === millw 0.4.3 - 2022-09-07 * Support reading the version from local `.config/mill-version` file * Read a `DEFAULT_MILL_VERSION` env variable before falling back to hardcoded default version === millw 0.4.2 - 2022-02-15 * Don't be verbose when system mill version can't detected === millw 0.4.1 - 2022-02-15 * Removed bash specifics from shell script * Cleaned up shell script * Use system-installed mill version if possible * Added CI job to run some checks === 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