github.com/pdmccormick/importable-docker-buildx@v0.0.0-20240426161518-e47091289030/driver/docker/version.go (about)

     1  package docker
     2  
     3  import (
     4  	"github.com/Masterminds/semver/v3"
     5  )
     6  
     7  type mobyBuildkitVersion struct {
     8  	MobyVersionConstraint string
     9  	BuildkitVersion       string
    10  }
    11  
    12  // https://gist.github.com/crazy-max/780cb6878c37cb79ec3f7699706cf83f
    13  // constraint syntax: https://github.com/Masterminds/semver#checking-version-constraints
    14  var mobyBuildkitVersions = []mobyBuildkitVersion{
    15  	{
    16  		MobyVersionConstraint: ">= 18.06.0-0, < 18.06.1-0",
    17  		BuildkitVersion:       "v0.0.0+9acf51e",
    18  	},
    19  	{
    20  		MobyVersionConstraint: ">= 18.06.1-0, < 18.09.0-0",
    21  		BuildkitVersion:       "v0.0.0+98f1604",
    22  	},
    23  	{
    24  		MobyVersionConstraint: ">= 18.09.0-0, < 18.09.1-0",
    25  		BuildkitVersion:       "v0.0.0+c7bb575",
    26  	},
    27  	{
    28  		MobyVersionConstraint: "~18.09.1-0",
    29  		BuildkitVersion:       "v0.3.3",
    30  	},
    31  	{
    32  		MobyVersionConstraint: "> 18.09.1-0, < 18.09.6-0",
    33  		BuildkitVersion:       "v0.3.3+d9f7592",
    34  	},
    35  	{
    36  		MobyVersionConstraint: ">= 18.09.6-0, < 18.09.7-0",
    37  		BuildkitVersion:       "v0.4.0+ed4da8b",
    38  	},
    39  	{
    40  		MobyVersionConstraint: ">= 18.09.7-0, < 19.03.0-0",
    41  		BuildkitVersion:       "v0.4.0+05766c5",
    42  	},
    43  	{
    44  		MobyVersionConstraint: "<= 19.03.0-beta2",
    45  		BuildkitVersion:       "v0.4.0+b302896",
    46  	},
    47  	{
    48  		MobyVersionConstraint: "<= 19.03.0-beta3",
    49  		BuildkitVersion:       "v0.4.0+8818c67",
    50  	},
    51  	{
    52  		MobyVersionConstraint: "<= 19.03.0-beta5",
    53  		BuildkitVersion:       "v0.5.1+f238f1e",
    54  	},
    55  	{
    56  		MobyVersionConstraint: "< 19.03.2-0",
    57  		BuildkitVersion:       "v0.5.1+1f89ec1",
    58  	},
    59  	{
    60  		MobyVersionConstraint: "<= 19.03.2-beta1",
    61  		BuildkitVersion:       "v0.6.1",
    62  	},
    63  	{
    64  		MobyVersionConstraint: ">= 19.03.2-0, < 19.03.3-0",
    65  		BuildkitVersion:       "v0.6.1+588c73e",
    66  	},
    67  	{
    68  		MobyVersionConstraint: ">= 19.03.3-0, < 19.03.5-beta2",
    69  		BuildkitVersion:       "v0.6.2",
    70  	},
    71  	{
    72  		MobyVersionConstraint: "<= 19.03.5-rc1",
    73  		BuildkitVersion:       "v0.6.2+ff93519",
    74  	},
    75  	{
    76  		MobyVersionConstraint: "<= 19.03.5",
    77  		BuildkitVersion:       "v0.6.3+928f3b4",
    78  	},
    79  	{
    80  		MobyVersionConstraint: "<= 19.03.6-rc1",
    81  		BuildkitVersion:       "v0.6.3+926935b",
    82  	},
    83  	{
    84  		MobyVersionConstraint: ">= 19.03.6-rc2, < 19.03.7-0",
    85  		BuildkitVersion:       "v0.6.3+57e8ad5",
    86  	},
    87  	{
    88  		MobyVersionConstraint: ">= 19.03.7-0, < 19.03.9-0",
    89  		BuildkitVersion:       "v0.6.4",
    90  	},
    91  	{
    92  		MobyVersionConstraint: ">= 19.03.9-0, < 19.03.13-0",
    93  		BuildkitVersion:       "v0.6.4+a7d7b7f",
    94  	},
    95  	{
    96  		MobyVersionConstraint: "<= 19.03.13-beta2",
    97  		BuildkitVersion:       "v0.6.4+da1f4bf",
    98  	},
    99  	{
   100  		MobyVersionConstraint: "<= 19.03.14",
   101  		BuildkitVersion:       "v0.6.4+df89d4d",
   102  	},
   103  	{
   104  		MobyVersionConstraint: "< 20.10.0",
   105  		BuildkitVersion:       "v0.6.4+396bfe2",
   106  	},
   107  	{
   108  		MobyVersionConstraint: "20.10.0-0 - 20.10.2-0",
   109  		BuildkitVersion:       "v0.8.1",
   110  	},
   111  	{
   112  		MobyVersionConstraint: ">= 20.10.3-0, < 20.10.4-0",
   113  		BuildkitVersion:       "v0.8.1+68bb095",
   114  	},
   115  	{
   116  		MobyVersionConstraint: "20.10.4-0 - 20.10.6",
   117  		BuildkitVersion:       "v0.8.2",
   118  	},
   119  	{
   120  		MobyVersionConstraint: "20.10.7-0 - 20.10.10-0",
   121  		BuildkitVersion:       "v0.8.2+244e8cde",
   122  	},
   123  	{
   124  		MobyVersionConstraint: "20.10.11-0 - 20.10.18-0",
   125  		BuildkitVersion:       "v0.8.2+bc07b2b8",
   126  	},
   127  	{
   128  		MobyVersionConstraint: ">= 20.10.19-0, < 20.10.20-0",
   129  		BuildkitVersion:       "v0.8.2+3a1eeca5",
   130  	},
   131  	{
   132  		MobyVersionConstraint: ">= 20.10.20-0, < 20.10.21-0",
   133  		BuildkitVersion:       "v0.8.2+c0149372",
   134  	},
   135  	{
   136  		MobyVersionConstraint: ">= 20.10.21-0, <= 20.10.23",
   137  		BuildkitVersion:       "v0.8.2+eeb7b65",
   138  	},
   139  	{
   140  		MobyVersionConstraint: "~20.10-0",
   141  		BuildkitVersion:       "v0.8+unknown",
   142  	},
   143  	{
   144  		MobyVersionConstraint: "~22.06-0",
   145  		BuildkitVersion:       "v0.10.3",
   146  	},
   147  	{
   148  		MobyVersionConstraint: ">= 23.0.0-0, < 23.0.1-0",
   149  		BuildkitVersion:       "v0.10.6",
   150  	},
   151  	{
   152  		MobyVersionConstraint: "23.0.1",
   153  		BuildkitVersion:       "v0.10.6+4f0ee09",
   154  	},
   155  	{
   156  		MobyVersionConstraint: ">= 23.0.2-0, < 23.0.4-0",
   157  		BuildkitVersion:       "v0.10.6+70f2ad5",
   158  	},
   159  	{
   160  		MobyVersionConstraint: ">= 23.0.4-0, < 23.0.7-0",
   161  		BuildkitVersion:       "v0.10.6+d52b2d5",
   162  	},
   163  	{
   164  		MobyVersionConstraint: "~23-0",
   165  		BuildkitVersion:       "v0.10+unknown",
   166  	},
   167  }
   168  
   169  func resolveBuildKitVersion(ver string) (string, error) {
   170  	mobyVersion, err := semver.NewVersion(ver)
   171  	if err != nil {
   172  		return "", err
   173  	}
   174  	for _, m := range mobyBuildkitVersions {
   175  		c, err := semver.NewConstraint(m.MobyVersionConstraint)
   176  		if err != nil {
   177  			return "", err
   178  		}
   179  		//if _, errs := c.Validate(mobyVersion); len(errs) > 0 {
   180  		//	for _, err := range errs {
   181  		//		fmt.Printf("%s: %v\n", m.MobyVersionConstraint, err)
   182  		//	}
   183  		//}
   184  		if !c.Check(mobyVersion) {
   185  			continue
   186  		}
   187  		return m.BuildkitVersion, nil
   188  	}
   189  	return "", nil
   190  }