// Copyright 2020 CUE Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -- in.cue -- import "path" joinSingle: path.Join(["a", "b"]) joinSingle: "a/b" Join: unix: _ Join: windows: _ Join: [OS=string]: [...{ arg: [...string] out: path.Join(arg, OS) }] Join: [_]: [ {arg: ["a", "b"]}, {arg: ["a/b", "c/d"]}, {arg: ["/"]}, {arg: ["a"]}, {arg: ["a", "b"]}, {arg: ["a", ""]}, {arg: ["", "b"]}, {arg: ["/", "a"]}, {arg: ["/", "a/b"]}, {arg: ["/", ""]}, {arg: ["//", "a"]}, {arg: ["directory", "file"]}, {arg: [#"C:\Windows\"#, #"System32"#]}, {arg: [#"C:\Windows\"#, #""#]}, {arg: [#"C:\"#, #"Windows"#]}, {arg: [#"C:"#, #"a\b"#]}, {arg: [#"C:"#, #"a"#, #"b"#]}, {arg: [#"C:"#, #""#, #""#, #"b"#]}, {arg: [#"C:"#, #""#]}, {arg: [#"C:"#, #""#, #""#]}, {arg: [#"C:."#, #"a"#]}, {arg: [#"C:a"#, #"b"#]}, {arg: [#"\\host\share"#, #"foo"#]}, ] -- out/path -- joinSingle: "a/b" Join: { unix: [{ arg: ["a", "b"] out: "a/b" }, { arg: ["a/b", "c/d"] out: "a/b/c/d" }, { arg: ["/"] out: "/" }, { arg: ["a"] out: "a" }, { arg: ["a", "b"] out: "a/b" }, { arg: ["a", ""] out: "a" }, { arg: ["", "b"] out: "b" }, { arg: ["/", "a"] out: "/a" }, { arg: ["/", "a/b"] out: "/a/b" }, { arg: ["/", ""] out: "/" }, { arg: ["//", "a"] out: "/a" }, { arg: ["directory", "file"] out: "directory/file" }, { arg: [#"C:\Windows\"#, #"System32"#] out: "C:\\Windows\\/System32" }, { arg: [#"C:\Windows\"#, #""#] out: "C:\\Windows\\" }, { arg: [#"C:\"#, #"Windows"#] out: "C:\\/Windows" }, { arg: [#"C:"#, #"a\b"#] out: "C:/a\\b" }, { arg: [#"C:"#, #"a"#, #"b"#] out: "C:/a/b" }, { arg: [#"C:"#, #""#, #""#, #"b"#] out: "C:/b" }, { arg: [#"C:"#, #""#] out: "C:" }, { arg: [#"C:"#, #""#, #""#] out: "C:" }, { arg: [#"C:."#, #"a"#] out: "C:./a" }, { arg: [#"C:a"#, #"b"#] out: "C:a/b" }, { arg: [#"\\host\share"#, #"foo"#] out: "\\\\host\\share/foo" }] windows: [{ arg: ["a", "b"] out: "a\\b" }, { arg: ["a/b", "c/d"] out: "a\\b\\c\\d" }, { arg: ["/"] out: "\\" }, { arg: ["a"] out: "a" }, { arg: ["a", "b"] out: "a\\b" }, { arg: ["a", ""] out: "a" }, { arg: ["", "b"] out: "b" }, { arg: ["/", "a"] out: "\\a" }, { arg: ["/", "a/b"] out: "\\a\\b" }, { arg: ["/", ""] out: "\\" }, { arg: ["//", "a"] out: "\\a" }, { arg: ["directory", "file"] out: "directory\\file" }, { arg: [#"C:\Windows\"#, #"System32"#] out: "C:\\Windows\\System32" }, { arg: [#"C:\Windows\"#, #""#] out: "C:\\Windows" }, { arg: [#"C:\"#, #"Windows"#] out: "C:\\Windows" }, { arg: [#"C:"#, #"a\b"#] out: "C:a\\b" }, { arg: [#"C:"#, #"a"#, #"b"#] out: "C:a\\b" }, { arg: [#"C:"#, #""#, #""#, #"b"#] out: "C:b" }, { arg: [#"C:"#, #""#] out: "C:." }, { arg: [#"C:"#, #""#, #""#] out: "C:." }, { arg: [#"C:."#, #"a"#] out: "C:a" }, { arg: [#"C:a"#, #"b"#] out: "C:a\\b" }, { arg: [#"\\host\share"#, #"foo"#] out: "\\\\host\\share\\foo" }] }