summaryrefslogtreecommitdiff
path: root/shell/EXPRESSIONS
blob: 34a5c921e05f462880ad3b763282fa0664b7b070 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
{ "default-sh":
  { "vars": ["defaults-transition", "fieldname"]
  , "imports": {"list_provider": ["./", "..", "field_list_provider"]}
  , "expression":
    { "type": "let*"
    , "bindings":
      [ [ "fieldname"
        , {"type": "var", "name": "fieldname", "default": "defaults"}
        ]
      , ["provider", "sh"]
      , ["transition", {"type": "var", "name": "defaults-transition"}]
      , [ "provided sh"
        , { "type": "join"
          , "$1": {"type": "CALL_EXPRESSION", "name": "list_provider"}
          }
        ]
      , [ "sh"
        , { "type": "if"
          , "cond": {"type": "var", "name": "provided sh"}
          , "then": {"type": "var", "name": "provided sh"}
          , "else": "sh"
          }
        ]
      ]
    , "body": {"type": "var", "name": "sh"}
    }
  }
, "NON_SYSTEM":
  { "vars": ["defaults-transition", "fieldname"]
  , "expression":
    { "type": "map_union"
    , "$1":
      { "type": "foreach"
      , "var": "x"
      , "range":
        { "type": "FIELD"
        , "name": {"type": "var", "name": "fieldname", "default": "defaults"}
        }
      , "body":
        { "type": "DEP_PROVIDES"
        , "dep": {"type": "var", "name": "x"}
        , "provider": "NON_SYSTEM_TOOLS"
        , "transition":
          { "type": "var"
          , "name": "defaults-transition"
          , "default": {"type": "empty_map"}
          }
        , "default": {"type": "empty_map"}
        }
      }
    }
  }
, "sh":
  { "vars": ["defaults-transition", "TOOLCHAIN_DIR", "fieldname"]
  , "imports": {"default-sh": "default-sh", "NON_SYSTEM": "NON_SYSTEM"}
  , "expression":
    { "type": "let*"
    , "bindings":
      [ ["sh", {"type": "CALL_EXPRESSION", "name": "default-sh"}]
      , ["NON_SYSTEM", {"type": "CALL_EXPRESSION", "name": "NON_SYSTEM"}]
      , [ "sh"
        , { "type": "if"
          , "cond":
            { "type": "lookup"
            , "key": "sh"
            , "map": {"type": "var", "name": "NON_SYSTEM"}
            }
          , "then":
            { "type": "join"
            , "separator": "/"
            , "$1":
              [ "."
              , { "type": "var"
                , "name": "TOOLCHAIN_DIR"
                , "default": "toolchain"
                }
              , {"type": "var", "name": "sh"}
              ]
            }
          , "else": {"type": "var", "name": "sh"}
          }
        ]
      ]
    , "body": {"type": "var", "name": "sh"}
    }
  }
, "PATH":
  { "vars": ["fieldname", "defaults-transition"]
  , "imports": {"list_provider": ["./", "..", "field_list_provider"]}
  , "expression":
    { "type": "let*"
    , "bindings":
      [ [ "fieldname"
        , {"type": "var", "name": "fieldname", "default": "defaults"}
        ]
      , ["provider", "PATH"]
      , ["transition", {"type": "var", "name": "defaults-transition"}]
      ]
    , "body": {"type": "CALL_EXPRESSION", "name": "list_provider"}
    }
  }
, "prolog":
  { "vars": ["fieldname", "TOOLCHAIN_DIR"]
  , "imports": {"list_provider": ["./", "..", "field_list_provider"]}
  , "expression":
    { "type": "let*"
    , "bindings":
      [ ["provider", "bin dirs"]
      , ["bin dirs", {"type": "CALL_EXPRESSION", "name": "list_provider"}]
      , [ "relative paths"
        , { "type": "foreach"
          , "range": {"type": "var", "name": "bin dirs"}
          , "body":
            { "type": "join"
            , "separator": "/"
            , "$1":
              [ "."
              , { "type": "var"
                , "name": "TOOLCHAIN_DIR"
                , "default": "toolchain"
                }
              , {"type": "var", "name": "_"}
              ]
            }
          }
        ]
      , [ "pwd paths"
        , { "type": "foreach"
          , "range": {"type": "var", "name": "bin dirs"}
          , "body":
            { "type": "join"
            , "separator": "/"
            , "$1":
              [ "$(pwd)"
              , { "type": "var"
                , "name": "TOOLCHAIN_DIR"
                , "default": "toolchain"
                }
              , {"type": "var", "name": "_"}
              ]
            }
          }
        ]
      ]
    , "body":
      [ "__PATH=$PATH"
      , { "type": "join"
        , "$1":
          [ "export PATH="
          , { "type": "join"
            , "separator": ":"
            , "$1": {"type": "var", "name": "relative paths"}
            }
          , "${PATH:+:}${PATH}"
          ]
        }
      , { "type": "join"
        , "$1":
          [ "export PATH="
          , { "type": "join"
            , "separator": ":"
            , "$1": {"type": "var", "name": "pwd paths"}
            }
          , "${__PATH:+:}${__PATH}"
          ]
        }
      , "unset __PATH"
      ]
    }
  }
}