tangled
alpha
login
or
join now
daniellemaywood.uk
/
gleam
0
fork
atom
this repo has no description
0
fork
atom
overview
issues
pulls
pipelines
Nested modules
Louis Pilfold
3 years ago
11f3589e
18cee836
+59
-13
6 changed files
expand all
collapse all
unified
split
Cargo.lock
test-package-compiler
Cargo.toml
cases
erlang_nested
gleam.toml
src
one
two.gleam
src
lib.rs
snapshots
test_package_compiler__generated_tests__erlang_nested.snap
+1
Cargo.lock
···
1953
1953
"insta",
1954
1954
"itertools",
1955
1955
"toml",
1956
1956
+
"walkdir",
1956
1957
]
1957
1958
1958
1959
[[package]]
+2
test-package-compiler/Cargo.toml
···
13
13
im = "15.1.0"
14
14
# Extra iter methods
15
15
itertools = "0.10.1"
16
16
+
# Recursively finding files
17
17
+
walkdir = "2.3.2"
16
18
17
19
[dev-dependencies]
18
20
# Snapshot testing to make test maintenance easier
+3
test-package-compiler/cases/erlang_nested/gleam.toml
···
1
1
+
name = "importy"
2
2
+
version = "0.1.0"
3
3
+
target = "erlang"
+3
test-package-compiler/cases/erlang_nested/src/one/two.gleam
···
1
1
+
pub fn main() {
2
2
+
"Hi there"
3
3
+
}
+23
-13
test-package-compiler/src/lib.rs
···
18
18
};
19
19
20
20
pub fn prepare(path: &str) -> String {
21
21
-
let path = PathBuf::from(path);
21
21
+
let root = PathBuf::from(path).canonicalize().unwrap();
22
22
23
23
-
let toml = std::fs::read_to_string(path.join("gleam.toml")).unwrap();
23
23
+
let toml = std::fs::read_to_string(root.join("gleam.toml")).unwrap();
24
24
let config: PackageConfig = toml::from_str(&toml).unwrap();
25
25
26
26
-
let sources = path
27
27
-
.join("src")
28
28
-
.read_dir()
29
29
-
.unwrap()
30
30
-
.map(|entry| {
26
26
+
let sources = walkdir::WalkDir::new(root.join("src"))
27
27
+
.into_iter()
28
28
+
.filter_map(|entry| {
31
29
let entry = entry.unwrap();
32
32
-
let localpath = entry.path();
33
33
-
let filename = localpath.file_name().unwrap();
34
34
-
let path = PathBuf::from("src").join(filename);
35
35
-
let name = localpath.file_stem().unwrap().to_string_lossy().to_string();
36
36
-
Source {
30
30
+
let path = entry.path();
31
31
+
32
32
+
if path.is_dir() {
33
33
+
return None;
34
34
+
}
35
35
+
if path.extension().unwrap() != "gleam" {
36
36
+
return None;
37
37
+
}
38
38
+
39
39
+
let path = path.strip_prefix(&root).unwrap().to_path_buf();
40
40
+
let name = path
41
41
+
.strip_prefix("src")
42
42
+
.unwrap()
43
43
+
.with_extension("")
44
44
+
.to_string_lossy()
45
45
+
.to_string();
46
46
+
Some(Source {
37
47
code: std::fs::read_to_string(entry.path()).unwrap(),
38
48
origin: gleam_core::build::Origin::Src,
39
49
path,
40
50
name,
41
41
-
}
51
51
+
})
42
52
})
43
53
.collect();
44
54
+27
test-package-compiler/src/snapshots/test_package_compiler__generated_tests__erlang_nested.snap
···
1
1
+
---
2
2
+
source: test-package-compiler/src/generated_tests.rs
3
3
+
assertion_line: 13
4
4
+
expression: /Users/louis/src/gleam/gleam/test-package-compiler/cases/erlang_nested
5
5
+
---
6
6
+
//// /out/lib/the_package/_gleam_artefacts/one@two.erl
7
7
+
-module(one@two).
8
8
+
-compile(no_auto_import).
9
9
+
10
10
+
-export([main/0]).
11
11
+
12
12
+
-spec main() -> binary().
13
13
+
main() ->
14
14
+
<<"Hi there"/utf8>>.
15
15
+
16
16
+
17
17
+
//// /out/lib/the_package/ebin/importy.app
18
18
+
{application, importy, [
19
19
+
{vsn, "0.1.0"},
20
20
+
{applications, []},
21
21
+
{description, ""},
22
22
+
{modules, [one@two]},
23
23
+
{registered, []}
24
24
+
]}.
25
25
+
26
26
+
27
27
+