Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Tags: mio-19/os-lib

Tags

0.10.7

Toggle 0.10.7's commit message
tweak ghactions

0.10.7-M2

Toggle 0.10.7-M2's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Allow multiple segments in Stringliterals (com-lihaoyi#297)

This PR adds support for multi-segment literal strings.
for example
```scala
val path = root / "foo/bar" 
val qux = "qux"
val path = root / "foo/bar" / "baz" / qux
val path = root / "foo/bar" / "baz/qux"
```
it also parses `..` segments from literal as `os.up` enabling syntax
like:
```scala
val path = root / "foo" / ".." / "bar" // equivalent to `root / "foo" / os.up / "bar"`
val path = root / "foo" /  "../bar" // equivalent to `root / "foo" / os.up / "bar"`
```
non-canonical paths used in literals result in compile-time errors,
suggesting usage of canonical paths or removing path segment, eg.
```scala
val path = root / "foo/./bar" //suggests "foo/bar"
val path = root / "foo//bar" //suggests "foo/bar"
val path = root / "//foo//bar/./baz" //suggests "foo/bar/baz"

val path = root / ""  //suggests removing the segment
val path = root / "." //suggests removing the segment
val path = root / "/" //suggests removing the segment
val path = root / "//" //suggests removing the segment
val path = root / "/./" //suggests removing the segment

```

Note:
Its not usable in os-Lib itself, due to the fact that it would lead to
macro expansion in the same compilation unit as its definition.

@lihaoyi 
there is a little bit of hacking involved:

1. There is a default implicit conversion not being a macro to be used
within os library, without this we would have to add a submodule and
split the whole project, I'm not even sure if its doable.
4. Needed to turn off acyclic in `Path` and particular `Macro` files
(also needed to mock `acyclic.skipped` in case of `scala 3`).
5. Needed to provide another implicit conversion in `ViewBoundImplicit`
trait because macros turn out to be not avaliable as implicit views,
this is needed for `ArrayPathChunk` and `SeqPathChunk` to work.

0.10.7-M1

Toggle 0.10.7-M1's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Allow even more dynamic instrumentation of `pwd` via `os.dynamicPwdFu…

…nction` (com-lihaoyi#299)

Follow up to com-lihaoyi#298, which it
turns out was not flexible enough to do what we need in Mill. Mill uses
references to the `pwd` to create the `.dest` folder lazily, thus we
cannot just assign a value to the `os.pwd` but actually need to assign a
lambda that can be replaced to implement the lazy evaluation

I pulled the trigger too quickly on releasing 0.10.6 with
`os.dynamicPwd`, so this one has to be named differently. I chose
`os.dynamicPwdFunction` and will make sure to test it with an unstable
release before releasing a stable tag

0.10.3-test

Toggle 0.10.3-test's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Move test projects into `os/test/` folder (com-lihaoyi#289)

They aren't important enough to be top-level folders, since they really
belong to the test suite