---
Function {
    argument: None,
    arguments: FunctionArguments {
        arguments: [
            FunctionArgument {
                identifier: "curl",
                default: None,
            },
            FunctionArgument {
                identifier: "ran",
                default: None,
            },
            FunctionArgument {
                identifier: "runCommand",
                default: None,
            },
            FunctionArgument {
                identifier: "lib",
                default: None,
            },
            FunctionArgument {
                identifier: "fetchFromGitHub",
                default: None,
            },
            FunctionArgument {
                identifier: "buildGoModule",
                default: None,
            },
        ],
        ellipsis: false,
    },
    definition: FunctionApplication {
        function: Variable {
            identifier: "buildGoModule",
            position: (9, 1),
        },
        arguments: [
            Map {
                bindings: [
                    KeyValue(
                        AttributePath {
                            attributes: [
                                Raw {
                                    content: "pname",
                                    position: (10, 3),
                                },
                            ],
                        },
                        String {
                            parts: [
                                Raw {
                                    content: "ran",
                                    position: (10, 12),
                                },
                            ],
                        },
                    ),
                    KeyValue(
                        AttributePath {
                            attributes: [
                                Raw {
                                    content: "version",
                                    position: (11, 3),
                                },
                            ],
                        },
                        String {
                            parts: [
                                Raw {
                                    content: "0.1.6",
                                    position: (11, 14),
                                },
                            ],
                        },
                    ),
                    KeyValue(
                        AttributePath {
                            attributes: [
                                Raw {
                                    content: "src",
                                    position: (12, 3),
                                },
                            ],
                        },
                        FunctionApplication {
                            function: Variable {
                                identifier: "fetchFromGitHub",
                                position: (12, 9),
                            },
                            arguments: [
                                Map {
                                    bindings: [
                                        KeyValue(
                                            AttributePath {
                                                attributes: [
                                                    Raw {
                                                        content: "owner",
                                                        position: (13, 5),
                                                    },
                                                ],
                                            },
                                            String {
                                                parts: [
                                                    Raw {
                                                        content: "m3ng9i",
                                                        position: (13, 14),
                                                    },
                                                ],
                                            },
                                        ),
                                        KeyValue(
                                            AttributePath {
                                                attributes: [
                                                    Raw {
                                                        content: "repo",
                                                        position: (14, 5),
                                                    },
                                                ],
                                            },
                                            String {
                                                parts: [
                                                    Raw {
                                                        content: "ran",
                                                        position: (14, 13),
                                                    },
                                                ],
                                            },
                                        ),
                                        KeyValue(
                                            AttributePath {
                                                attributes: [
                                                    Raw {
                                                        content: "rev",
                                                        position: (15, 5),
                                                    },
                                                ],
                                            },
                                            String {
                                                parts: [
                                                    Raw {
                                                        content: "v",
                                                        position: (15, 12),
                                                    },
                                                    Expression {
                                                        expression: Variable {
                                                            identifier: "version",
                                                            position: (15, 15),
                                                        },
                                                    },
                                                ],
                                            },
                                        ),
                                        KeyValue(
                                            AttributePath {
                                                attributes: [
                                                    Raw {
                                                        content: "hash",
                                                        position: (16, 5),
                                                    },
                                                ],
                                            },
                                            String {
                                                parts: [
                                                    Raw {
                                                        content: "sha256-iMvUvzr/jaTNdgHQFuoJNJnnkx2XHIUUlrPWyTlreEw=",
                                                        position: (16, 13),
                                                    },
                                                ],
                                            },
                                        ),
                                    ],
                                    recursive: false,
                                },
                            ],
                        },
                    ),
                    KeyValue(
                        AttributePath {
                            attributes: [
                                Raw {
                                    content: "vendorSha256",
                                    position: (19, 3),
                                },
                            ],
                        },
                        String {
                            parts: [
                                Raw {
                                    content: "sha256-ObroruWWNilHIclqNvbEaa7vwk+1zMzDKbjlVs7Fito=",
                                    position: (19, 19),
                                },
                            ],
                        },
                    ),
                    KeyValue(
                        AttributePath {
                            attributes: [
                                Raw {
                                    content: "CGO_ENABLED",
                                    position: (21, 3),
                                },
                            ],
                        },
                        Int {
                            value: 0,
                            position: (21, 17),
                        },
                    ),
                    KeyValue(
                        AttributePath {
                            attributes: [
                                Raw {
                                    content: "ldflags",
                                    position: (23, 3),
                                },
                            ],
                        },
                        List {
                            elements: [
                                String {
                                    parts: [
                                        Raw {
                                            content: "-X",
                                            position: (24, 6),
                                        },
                                    ],
                                },
                                String {
                                    parts: [
                                        Raw {
                                            content: "main._version_=v",
                                            position: (24, 11),
                                        },
                                        Expression {
                                            expression: Variable {
                                                identifier: "version",
                                                position: (24, 29),
                                            },
                                        },
                                    ],
                                },
                                String {
                                    parts: [
                                        Raw {
                                            content: "-X",
                                            position: (25, 6),
                                        },
                                    ],
                                },
                                String {
                                    parts: [
                                        Raw {
                                            content: "main._branch_=master",
                                            position: (25, 11),
                                        },
                                    ],
                                },
                            ],
                        },
                    ),
                    KeyValue(
                        AttributePath {
                            attributes: [
                                Raw {
                                    content: "passthru",
                                    position: (28, 3),
                                },
                                Raw {
                                    content: "tests",
                                    position: (28, 12),
                                },
                            ],
                        },
                        Map {
                            bindings: [
                                KeyValue(
                                    AttributePath {
                                        attributes: [
                                            Raw {
                                                content: "simple",
                                                position: (29, 5),
                                            },
                                        ],
                                    },
                                    FunctionApplication {
                                        function: Variable {
                                            identifier: "runCommand",
                                            position: (29, 14),
                                        },
                                        arguments: [
                                            String {
                                                parts: [
                                                    Raw {
                                                        content: "ran-test",
                                                        position: (29, 26),
                                                    },
                                                ],
                                            },
                                            Map {
                                                bindings: [],
                                                recursive: false,
                                            },
                                            String {
                                                parts: [
                                                    Raw {
                                                        content: "echo hello world > index.html\n",
                                                        position: (30, 1),
                                                    },
                                                    Expression {
                                                        expression: Variable {
                                                            identifier: "ran",
                                                            position: (31, 9),
                                                        },
                                                    },
                                                    Raw {
                                                        content: "/bin/ran &\n# Allow ran to fully initialize\nsleep 1\n[ \"$(",
                                                        position: (31, 13),
                                                    },
                                                    Expression {
                                                        expression: Variable {
                                                            identifier: "curl",
                                                            position: (34, 14),
                                                        },
                                                    },
                                                    Raw {
                                                        content: "/bin/curl 127.0.0.1:8080)\" == \"hello world\" ]\nkill %1\n",
                                                        position: (34, 19),
                                                    },
                                                    Expression {
                                                        expression: Variable {
                                                            identifier: "ran",
                                                            position: (36, 9),
                                                        },
                                                    },
                                                    Raw {
                                                        content: "/bin/ran --version > $out\n",
                                                        position: (36, 13),
                                                    },
                                                ],
                                            },
                                        ],
                                    },
                                ),
                            ],
                            recursive: false,
                        },
                    ),
                    KeyValue(
                        AttributePath {
                            attributes: [
                                Raw {
                                    content: "meta",
                                    position: (40, 3),
                                },
                            ],
                        },
                        With {
                            expression: Variable {
                                identifier: "lib",
                                position: (40, 15),
                            },
                            target: Map {
                                bindings: [
                                    KeyValue(
                                        AttributePath {
                                            attributes: [
                                                Raw {
                                                    content: "homepage",
                                                    position: (41, 5),
                                                },
                                            ],
                                        },
                                        String {
                                            parts: [
                                                Raw {
                                                    content: "https://github.com/m3ng9i/ran",
                                                    position: (41, 17),
                                                },
                                            ],
                                        },
                                    ),
                                    KeyValue(
                                        AttributePath {
                                            attributes: [
                                                Raw {
                                                    content: "description",
                                                    position: (42, 5),
                                                },
                                            ],
                                        },
                                        String {
                                            parts: [
                                                Raw {
                                                    content: "Ran is a simple web server for serving static files",
                                                    position: (42, 20),
                                                },
                                            ],
                                        },
                                    ),
                                    KeyValue(
                                        AttributePath {
                                            attributes: [
                                                Raw {
                                                    content: "license",
                                                    position: (43, 5),
                                                },
                                            ],
                                        },
                                        PropertyAccess {
                                            expression: Variable {
                                                identifier: "licenses",
                                                position: (43, 15),
                                            },
                                            attribute_path: AttributePath {
                                                attributes: [
                                                    Raw {
                                                        content: "mit",
                                                        position: (43, 24),
                                                    },
                                                ],
                                            },
                                            default: None,
                                        },
                                    ),
                                    KeyValue(
                                        AttributePath {
                                            attributes: [
                                                Raw {
                                                    content: "maintainers",
                                                    position: (44, 5),
                                                },
                                            ],
                                        },
                                        With {
                                            expression: Variable {
                                                identifier: "maintainers",
                                                position: (44, 24),
                                            },
                                            target: List {
                                                elements: [
                                                    Variable {
                                                        identifier: "tomberek",
                                                        position: (44, 39),
                                                    },
                                                ],
                                            },
                                        },
                                    ),
                                ],
                                recursive: false,
                            },
                        },
                    ),
                ],
                recursive: true,
            },
        ],
    },
}