UNPKG

23.5 kBMarkdownView Raw
1# Changelog
2All notable changes to this project will be documented in this file.
3
4## [0.6.1] - 2023-09-10
5### Fixed
6- consider empty tags correctly when a `FROM` instruction also has a digest specified ([#113](https://github.com/rcjsuen/dockerfile-ast/issues/113))
7
8## [0.6.0] - 2023-09-09
9### Added
10- allow `getImageTagRange()` and `getImageTag()` in `From` to handle instructions where both a tag and a digest has been specified ([#112](https://github.com/rcjsuen/dockerfile-ast/issues/112))
11
12## [0.5.0] - 2022-08-04
13### Added
14- new API to support processing heredocs of a `COPY` instruction ([#109](https://github.com/rcjsuen/dockerfile-ast/issues/109))
15 - `Copy`
16 - `getHeredocs()`
17
18### Fixed
19- correct the parser so that the UTF-8 BOM will be skipped over if it is found at the beginning of the file ([#106](https://github.com/rcjsuen/dockerfile-ast/issues/106))
20
21## [0.4.2] - 2022-01-22
22### Fixed
23- `getContentRange()` from `Heredoc` will now return correct ranges if there are empty lines in the heredoc ([#103](https://github.com/rcjsuen/dockerfile-ast/issues/103))
24- export `Heredoc` from `main.ts` ([#104](https://github.com/rcjsuen/dockerfile-ast/issues/104))
25
26## [0.4.1] - 2021-12-11
27### Fixed
28- export `Run` so it can be used by clients ([#102](https://github.com/rcjsuen/dockerfile-ast/issues/102))
29
30## [0.4.0] - 2021-12-11
31### Added
32- new API for handling here-documents, note that this API is considered experimental and may be subject to change in the future ([#101](https://github.com/rcjsuen/dockerfile-ast/issues/101))
33 - `Heredoc`
34 - `getName()`
35 - `getStartRange()`
36 - `getContentRange()`
37 - `getNameRange()`
38 - `getDelimiterRange()`
39 - `Run`
40 - `getHeredocs()`
41
42### Fixed
43- prevent infinite loop in `getAvailableWorkingDirectories()` when an image shares the same name as the build stage ([#100](https://github.com/rcjsuen/dockerfile-ast/issues/100))
44
45## [0.3.4] - 2021-09-21
46### Fixed
47- prevent comments from marking the end of an instruction if it is embedded within a keyword ([#99](https://github.com/rcjsuen/dockerfile-ast/issues/99))
48
49## [0.3.3] - 2021-09-19
50### Fixed
51- prevent merging of instructions if the keyword has an escape character in it and spans multiple lines ([#98](https://github.com/rcjsuen/dockerfile-ast/issues/98))
52
53## [0.3.2] - 2021-09-07
54### Fixed
55- prevent merging of instructions if the keyword has an escape character in it ([#97](https://github.com/rcjsuen/dockerfile-ast/issues/97))
56
57## [0.3.1] - 2021-08-28
58### Added
59- support quoted delimiter names for heredocs ([#94](https://github.com/rcjsuen/dockerfile-ast/issues/94))
60- support multiple heredocs in an instruction ([#96](https://github.com/rcjsuen/dockerfile-ast/issues/96))
61
62## [0.3.0] - 2021-07-28
63### Added
64- enabled support for parsing heredocs in Dockerfiles ([#92](https://github.com/rcjsuen/dockerfile-ast/issues/92))
65
66### Fixed
67- fix line range calculation when the last non-whitespace character is an escape character ([#92](https://github.com/rcjsuen/dockerfile-ast/issues/92))
68
69## [0.2.1] - 2021-04-11
70### Fixed
71- fix parsing of an escape character immediately following a label which caused the next label to be parsed incorrectly ([#90](https://github.com/rcjsuen/dockerfile-ast/issues/90))
72
73## [0.2.0] - 2021-02-21
74### Added
75- `Dockerfile`
76 - `getAvailableWorkingDirectories()` ([#87](https://github.com/rcjsuen/dockerfile-ast/issues/87))
77- `Workdir`
78 - `getPath()` ([#88](https://github.com/rcjsuen/dockerfile-ast/issues/88))
79 - `getAbsolutePath()` ([#88](https://github.com/rcjsuen/dockerfile-ast/issues/88))
80
81## [0.1.0] - 2020-12-24
82### Added
83- `Property`
84 - `getAssignmentOperator()` ([#86](https://github.com/rcjsuen/dockerfile-ast/issues/86))
85 - `getAssignmentOperatorRange()` ([#86](https://github.com/rcjsuen/dockerfile-ast/issues/86))
86
87## [0.0.30] - 2020-07-14
88### Fixed
89- do not consider a single escape character as being an argument for the instruction ([#83](https://github.com/rcjsuen/dockerfile-ast/issues/83))
90- do not consider a single escape character as being a property for an instruction ([#84](https://github.com/rcjsuen/dockerfile-ast/issues/84))
91
92## [0.0.29] - 2020-07-12
93### Fixed
94- ignore leading whitespace before a comment in escaped newlines for `getArgumentsContent()` and `getArgumentsRanges()` of `Instruction` ([#82](https://github.com/rcjsuen/dockerfile-ast/issues/82))
95
96## [0.0.28] - 2020-07-11
97### Fixed
98- improve handling of trailing whitespace that is not a newline character after an escape character ([#81](https://github.com/rcjsuen/dockerfile-ast/issues/81))
99
100## [0.0.27] - 2020-06-17
101### Fixed
102- allow comments to immediately follow the declaration of an ARG or ENV instruction ([#80](https://github.com/rcjsuen/dockerfile-ast/issues/80))
103
104## [0.0.26] - 2020-04-22
105### Fixed
106- correct range of multiline arguments that end with a character preceded by an escape character ([#78](https://github.com/rcjsuen/dockerfile-ast/issues/78))
107- correct range of arguments that are split on multiple lines with escaped whitespace lines in between ([#77](https://github.com/rcjsuen/dockerfile-ast/issues/77))
108- enable parsing of flag options that do not have a value defined ([#79](https://github.com/rcjsuen/dockerfile-ast/issues/79))
109
110## [0.0.25] - 2020-04-01
111### Added
112- `Flag`
113 - `getOptions()` ([#75](https://github.com/rcjsuen/dockerfile-ast/issues/75))
114 - `getOption(string)` ([#75](https://github.com/rcjsuen/dockerfile-ast/issues/75))
115 - `hasOptions()` ([#75](https://github.com/rcjsuen/dockerfile-ast/issues/75))
116- `FlagOption` ([#75](https://github.com/rcjsuen/dockerfile-ast/issues/75))
117- `Run` ([#76](https://github.com/rcjsuen/dockerfile-ast/issues/76))
118 - `RUN` instructions will now of type `Run` instead of `JSONInstruction`
119 - `Run` extends `JSONInstruction` so this is not be a breaking change
120
121### Fixed
122- allow `From`'s `getBuildStage()` and `getBuildStageRange()` to return non-`null` values even if the instruction has more than three arguments as long as parts of it is valid ([#74](https://github.com/rcjsuen/dockerfile-ast/issues/74))
123
124## [0.0.24] - 2020-03-08
125### Fixed
126- `Instruction`'s `getArguments()` will no longer exclude arguments that follow an embedded comment that ends with the escape character ([#73](https://github.com/rcjsuen/dockerfile-ast/issues/73))
127
128## [0.0.23] - 2020-03-08
129### Fixed
130- `Instruction`'s `getArguments()` will no longer incorrectly exclude arguments because they look like comments ([#72](https://github.com/rcjsuen/dockerfile-ast/issues/72))
131
132## [0.0.22] - 2020-03-07
133### Fixed
134- instructions will no longer be cut off prematurely due to empty continuation lines embedded in the keyword itself ([#70](https://github.com/rcjsuen/dockerfile-ast/issues/70))
135- `Instruction`'s `getArguments()` will now correctly account for multiple embedded comments instead of considering them as an argument ([#71](https://github.com/rcjsuen/dockerfile-ast/issues/71))
136
137## [0.0.21] - 2020-02-27
138### Fixed
139- `Instruction`'s `getArgumentsRanges()` will no longer throw an error if an instruction spans multiple lines and has escaped newlines at the beginning of a line ([#67](https://github.com/rcjsuen/dockerfile-ast/issues/67))
140- `ModifiableInstruction`'s `toString()` will now include the instruction's flags ([#68](https://github.com/rcjsuen/dockerfile-ast/issues/68))
141- `ModifiableInstruction`'s `getVariables()` will now include variables that are used in the instruction's flags ([#69](https://github.com/rcjsuen/dockerfile-ast/issues/69))
142
143## [0.0.20] - 2020-02-11
144### Added
145- `Dockerfile`
146 - `getDirectives()` ([#62](https://github.com/rcjsuen/dockerfile-ast/issues/62))
147 - originally introduced in 0.0.18 to support compatibility in the future, the function is now fully implemented and will return an ordered list of all the parser directives defined at the top of the Dockerfile
148
149- `Directive`
150 - `syntax` ([#63](https://github.com/rcjsuen/dockerfile-ast/issues/63))
151 - this enum can be used for identifying the `syntax` parser directive used by BuildKit
152
153### Changed
154- `ParserDirective`
155 - `getDirective()` ([#63](https://github.com/rcjsuen/dockerfile-ast/issues/63))
156 - this function originally stated that it would return a `Directive`
157 - `undefined` would be returned if the name of the parser directive was not recognized
158 - the function now returns `Directive | null`
159 - the function will return `null` if the parser directive is not recognized instead of `undefined`
160
161### Fixed
162- `Instruction`'s `getArgumentsRanges()` will no longer throw an error if the instruction has its last argument on its own line with no leading whitespace and the length of that argument is one ([#66](https://github.com/rcjsuen/dockerfile-ast/issues/66))
163
164## [0.0.19] - 2020-01-27
165### Added
166- `From`
167 - `getPlatformFlag()` ([#65](https://github.com/rcjsuen/dockerfile-ast/issues/65))
168
169### Changed
170- `From`
171 - this class now subclasses `ModifiableInstruction` instead of `Instruction` ([#65](https://github.com/rcjsuen/dockerfile-ast/issues/65))
172 - this was changed to support the `--platform` flag introduced in Docker CE 18.04
173 - as `ModifiableInstruction` extends `Instruction`, this should not impact anyone at an API level from a compilation standpoint
174 - note that this will break users that previously used `getArguments()` to parse and retrieve the `--platform` flag manually, please replace such usages with the new `getPlatformFlag()` API
175
176## [0.0.18] - 2019-12-07
177### Added
178- `Dockerfile`
179 - `getDirectives()` ([#64](https://github.com/rcjsuen/dockerfile-ast/issues/64))
180
181### Changed
182- `getDirective()` of `Dockerfile` has been deprecated and will be replaced by `getDirectives()` in the future ([#64](https://github.com/rcjsuen/dockerfile-ast/issues/64))
183 - note that this is purely a cosmetic API change to facilitate migration at the moment, proper support for returning an array will follow in the future
184
185### Fixed
186- add support for TypeScript 3.7 by fixing TS2440 compiler error ([#61](https://github.com/rcjsuen/dockerfile-ast/issues/61))
187
188## [0.0.17] - 2019-10-13
189### Fixed
190- correct parsing of image names that were incorrectly identified as a Docker registry ([#59](https://github.com/rcjsuen/dockerfile-ast/issues/59))
191
192## [0.0.16] - 2019-05-22
193### Fixed
194- only allow alphanumeric and underscore characters in variable names ([#58](https://github.com/rcjsuen/dockerfile-ast/issues/58))
195
196## [0.0.15] - 2019-05-21
197### Fixed
198- variables in `FROM` should return `true` for `isDefined()` if it is defined in the `ARG` instructions above it ([#56](https://github.com/rcjsuen/dockerfile-ast/issues/56))
199- variables in `FROM` should return `true` for `isBuildVariable()` if it is defined in the `ARG` instructions above it ([#57](https://github.com/rcjsuen/dockerfile-ast/issues/57))
200
201## [0.0.14] - 2019-04-28
202### Added
203- `ImageTemplate`
204 - `getRange()` ([#53](https://github.com/rcjsuen/dockerfile-ast/issues/53))
205
206### Changed
207- the enum value for `Keyword.ADD` was incorrectly assigned to `"ARG"`, it is now assigned to `"ADD"` ([#51](https://github.com/rcjsuen/dockerfile-ast/issues/51))
208 - this is a breaking change but presumably no consumers were relying on this incorrect behaviour
209- `Dockerfile`'s `getContainingImage()` has been changed for comments immediately before a build stage
210 - previously, they would return the build stage that came after the comment, now they will simply return the entire Dockerfile
211 - this is because the comment is actually ambiguous as it may be a commented out instruction for the build stage that came before the comment
212
213### Fixed
214- correct incorrectly assigned string enum value for `Keyword.ADD` ([#51](https://github.com/rcjsuen/dockerfile-ast/issues/51))
215- ensure quotation marks and apostrophes are included for expanded arguments in `Instruction`'s `getExpandedArguments()` if they surround a variable ([#52](https://github.com/rcjsuen/dockerfile-ast/issues/52))
216- fixed `getComments()` for build stages so that they will not simply return empty arrays ([#54](https://github.com/rcjsuen/dockerfile-ast/issues/54))
217 - the returned comments will only be from comments contained within the `FROM` instruction and the last instruction of that build stage
218
219## [0.0.13] - 2018-12-20
220### Fixed
221- prevent TypeError from being thrown by `Dockerfile`'s `resolveVariable(string, number)` when an invalid line number is provided ([#48](https://github.com/rcjsuen/dockerfile-ast/issues/48))
222- correct compiler error due to incomplete interface signature ([#46](https://github.com/rcjsuen/dockerfile-ast/issues/46))
223
224## [0.0.12] - 2018-08-10
225### Fixed
226- handle quoted properties on separate lines properly for `ENV`s and `LABEL`s ([#44](https://github.com/rcjsuen/dockerfile-ast/issues/45))
227
228## [0.0.11] - 2018-06-16
229### Fixed
230- ignore initial `ENV`s when resolving variables in `FROM`s ([#44](https://github.com/rcjsuen/dockerfile-ast/issues/44))
231
232## [0.0.10] - 2018-06-16
233### Added
234- `From`
235 - `getImageRange()` ([#43](https://github.com/rcjsuen/dockerfile-ast/issues/43))
236 - `getImageTag()` ([#43](https://github.com/rcjsuen/dockerfile-ast/issues/43))
237 - `getImageDigest()` ([#43](https://github.com/rcjsuen/dockerfile-ast/issues/43))
238 - `getRegistry()` ([#43](https://github.com/rcjsuen/dockerfile-ast/issues/43))
239 - `getRegistryRange()` ([#43](https://github.com/rcjsuen/dockerfile-ast/issues/43))
240
241### Changed
242- [upgraded the dependency of Mocha](https://github.com/mochajs/mocha/issues/2791) from 3.x to 5.x
243 - versions prior to 4.x of Mocha depended on Growl 1.9.2 which contained a [security vulnerability](https://github.com/tj/node-growl/issues/60)
244 - as Mocha is a `devDependencies` module, there is no reason to believe that the `dockerfile-ast` module itself was affected by this vulnerability
245
246### Fixed
247- do not resolve reinitialized `ARG` variables with `ENV` instructions at the top of the Dockerfile ([#42](https://github.com/rcjsuen/dockerfile-ast/issues/42))
248- improve parsing of `FROM` instructions that refer to variables ([#39](https://github.com/rcjsuen/dockerfile-ast/issues/39))
249
250## [0.0.9] - 2018-05-28
251### Fixed
252- handle comments in the last line of a file properly for `ARG`, `ENV`, and `LABEL` ([#40](https://github.com/rcjsuen/dockerfile-ast/issues/40))
253- parse `ARG` instructions properly when its value contains an unclosed quote ([#41](https://github.com/rcjsuen/dockerfile-ast/issues/41))
254
255## [0.0.8] - 2018-05-27
256### Fixed
257- prevent `getVariables()` from throwing an error if a `LABEL` has no value defined ([#38](https://github.com/rcjsuen/dockerfile-ast/issues/38))
258
259## [0.0.7] - 2018-05-25
260### Added
261- `ParserDirective`
262 - `toString()` ([#4](https://github.com/rcjsuen/dockerfile-ast/issues/4))
263- `PropertyInstruction`
264 - `getPropertyArguments()` ([#37](https://github.com/rcjsuen/dockerfile-ast/issues/37))
265- `Variable`
266 - `getModifier()` ([#27](https://github.com/rcjsuen/dockerfile-ast/issues/27))
267 - `getModifierRange()` ([#33](https://github.com/rcjsuen/dockerfile-ast/issues/33))
268 - `getSubstitutionParameter()` ([#27](https://github.com/rcjsuen/dockerfile-ast/issues/27))
269 - `getSubstitutionRange()` ([#33](https://github.com/rcjsuen/dockerfile-ast/issues/33))
270 - `toString()` ([#4](https://github.com/rcjsuen/dockerfile-ast/issues/4))
271
272### Changed
273- `PropertyInstruction`
274 - `getArguments()` ([#34](https://github.com/rcjsuen/dockerfile-ast/issues/34))
275 - to make this function more predictable, `PropertyInstruction` no longer overrides this function with its own implementation, existing callers should call `getPropertyArguments()` instead if the old behaviour is desired
276```TypeScript
277// this function has been changed to possibly not return the same thing
278// depending on the structure of the instruction's arguments
279let args = propertyInstruction.getArguments();
280// to get the same behaviour in 0.0.6, use getPropertyArguments() instead
281let args = propertyInstruction.getPropertyArguments();
282```
283
284### Fixed
285- resolve references to uninitialized `ARG` variables against `ARG` variables before the first `FROM` if present ([#26](https://github.com/rcjsuen/dockerfile-ast/issues/26))
286- change `FROM` to parse its image argument correctly if it is in a private registry ([#28](https://github.com/rcjsuen/dockerfile-ast/issues/28))
287- fix parsing issue with quoted keys and values in `ARG`, `ENV`, and `LABEL` ([#30](https://github.com/rcjsuen/dockerfile-ast/issues/30))
288- ignore equals signs that are found inside quotes ([#29](https://github.com/rcjsuen/dockerfile-ast/issues/29))
289- prevent arguments from being split up if they span multiple lines via escaped newlines ([#34](https://github.com/rcjsuen/dockerfile-ast/issues/34))
290- prevent variables from being split up if they span multiple lines via escaped newlines ([#35](https://github.com/rcjsuen/dockerfile-ast/issues/35))
291
292## [0.0.6] - 2018-04-19
293### Changed
294- `Property`
295 - `getRawValue()` has been renamed to `getUnescapedValue()` ([#25](https://github.com/rcjsuen/dockerfile-ast/issues/25))
296 - the underlying implementation of the function has not changed so it should be easy for clients to migrate to the new API
297
298### Fixed
299- fix parsing of spaces embedded within a variable replacement in `ARG`, `ENV`, and `LABEL` instructions ([#24](https://github.com/rcjsuen/dockerfile-ast/issues/24))
300
301## [0.0.5] - 2018-04-15
302### Fixed
303- fix resolution of `ARG` variables that are used in a `FROM` ([#22](https://github.com/rcjsuen/dockerfile-ast/issues/22))
304- prevent error from being thrown if an invalid line number is specified by `Dockerfile`'s `getAvailableVariables(number)` function ([#23](https://github.com/rcjsuen/dockerfile-ast/issues/23))
305
306## [0.0.4] - 2018-04-03
307### Added
308- `JSONArgument extends Argument` ([#20](https://github.com/rcjsuen/dockerfile-ast/issues/20))
309 - `getJSONRange()`
310 - `getJSONValue()`
311- `Comment`
312 - `toString()` ([#4](https://github.com/rcjsuen/dockerfile-ast/issues/4))
313
314### Changed
315- `JSONInstruction`
316 - `getJSONStrings()` now returns `JSONArgument[]` instead of `Argument[]`
317 - since `JSONArgument` extends `Argument`, any existing code should continue to work with no code changes required
318
319## [0.0.3] - 2018-02-10
320### Added
321- `From`
322 - `getImageNameRange()` ([#16](https://github.com/rcjsuen/dockerfile-ast/issues/16))
323- `Instruction`
324 - `toString()` ([#4](https://github.com/rcjsuen/dockerfile-ast/issues/4))
325
326### Fixed
327- calling `ImageTemplate`'s `getAvailableVariables(number)` with a Dockerfile should only return the variables that are declared in the build stage of the given line ([#15](https://github.com/rcjsuen/dockerfile-ast/issues/15))
328- correct `From`'s `getImageName()` to return the right name for the image if it is pointing at a digest ([#17](https://github.com/rcjsuen/dockerfile-ast/issues/17))
329- calling `ImageTemplate`'s `getAvailableVariables(number)` on a line with a `FROM` should return variables defined by the Dockerfile's initial `ARG` instructions (if any) ([#18](https://github.com/rcjsuen/dockerfile-ast/issues/18))
330
331## [0.0.2] - 2018-01-20
332### Added
333- `Argument`
334 - `toString()` ([#4](https://github.com/rcjsuen/dockerfile-ast/issues/4))
335- `Variable`
336 - `isBuildVariable()` ([#13](https://github.com/rcjsuen/dockerfile-ast/issues/13))
337 - `isDefined()` ([#12](https://github.com/rcjsuen/dockerfile-ast/issues/12))
338 - `isEnvironmentVariable()` ([#13](https://github.com/rcjsuen/dockerfile-ast/issues/13))
339
340### Fixed
341- restrict variable resolution to the containing build stage ([#14](https://github.com/rcjsuen/dockerfile-ast/issues/14))
342
343### Removed
344- `Argument`'s `getRawValue()` function has been removed ([#10](https://github.com/rcjsuen/dockerfile-ast/issues/10))
345```TypeScript
346// this convenience function has been removed
347let rawValue = argument.getRawValue();
348// to retrieve the identical value, use the following code instead
349import { TextDocument } from 'vscode-languageserver-types';
350let document = TextDocument.create(uri, languageId, version, buffer);
351let range = argument.getRange();
352let rawValue = buffer.substring(document.offsetAt(range.start), document.offsetAt(range.end));
353```
354
355## 0.0.1 - 2017-12-20
356### Added
357- Dockerfile parser
358 - handles escape characters
359 - preserves comments
360 - provides variable lookup and resolution
361
362[Unreleased]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.6.1...HEAD
363[0.6.1]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.6.0...v0.6.1
364[0.6.0]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.5.0...v0.6.0
365[0.5.0]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.4.2...v0.5.0
366[0.4.2]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.4.1...v0.4.2
367[0.4.1]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.4.0...v0.4.1
368[0.4.0]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.3.4...v0.4.0
369[0.3.4]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.3.3...v0.3.4
370[0.3.3]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.3.2...v0.3.3
371[0.3.2]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.3.1...v0.3.2
372[0.3.1]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.3.0...v0.3.1
373[0.3.0]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.2.1...v0.3.0
374[0.2.1]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.2.0...v0.2.1
375[0.2.0]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.1.0...v0.2.0
376[0.1.0]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.0.30...v0.1.0
377[0.0.30]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.0.29...v0.0.30
378[0.0.29]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.0.28...v0.0.29
379[0.0.28]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.0.27...v0.0.28
380[0.0.27]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.0.26...v0.0.27
381[0.0.26]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.0.25...v0.0.26
382[0.0.25]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.0.24...v0.0.25
383[0.0.24]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.0.23...v0.0.24
384[0.0.23]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.0.22...v0.0.23
385[0.0.22]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.0.21...v0.0.22
386[0.0.21]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.0.20...v0.0.21
387[0.0.20]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.0.19...v0.0.20
388[0.0.19]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.0.18...v0.0.19
389[0.0.18]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.0.17...v0.0.18
390[0.0.17]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.0.16...v0.0.17
391[0.0.16]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.0.15...v0.0.16
392[0.0.15]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.0.14...v0.0.15
393[0.0.14]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.0.13...v0.0.14
394[0.0.13]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.0.12...v0.0.13
395[0.0.12]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.0.11...v0.0.12
396[0.0.11]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.0.10...v0.0.11
397[0.0.10]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.0.9...v0.0.10
398[0.0.9]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.0.8...v0.0.9
399[0.0.8]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.0.7...v0.0.8
400[0.0.7]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.0.6...v0.0.7
401[0.0.6]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.0.5...v0.0.6
402[0.0.5]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.0.4...v0.0.5
403[0.0.4]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.0.3...v0.0.4
404[0.0.3]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.0.2...v0.0.3
405[0.0.2]: https://github.com/rcjsuen/dockerfile-ast/compare/v0.0.1...v0.0.2