mirror of
https://github.com/typeable/compaREST.git
synced 2024-12-25 20:21:36 +03:00
Added tool comparison benchmarks scaffolding (#103)
* Added tool comparison benchmarks scaffolding * Added specs to output * Added oasdiff * Added bump.sh * Added readme
This commit is contained in:
parent
ff54497e24
commit
a8bf43ba9a
27
benchmarks/README.md
Normal file
27
benchmarks/README.md
Normal file
@ -0,0 +1,27 @@
|
||||
# OpenApi comparison benchmarks
|
||||
|
||||
This is a nix expression that automatically downloads, builds and runs multiple OpenApi comparison tools on the same set of inputs to compare how well they behave.
|
||||
|
||||
To run the benchmarks run the following command in this directory:
|
||||
|
||||
```bash
|
||||
nix-build
|
||||
```
|
||||
|
||||
## The tools
|
||||
|
||||
| Tool | Output file name |
|
||||
| -------------------------------------------------------------------------- | ------------------------------------------- |
|
||||
| [Typeable OpenApi Diff](https://github.com/typeable/openapi-diff) | `typeable.md` |
|
||||
| [Atlassian OpenApi Diff](https://bitbucket.org/atlassian/openapi-diff) | `atlassian.json`, `atlassian.error.txt` |
|
||||
| [OpenApi Tools OpenApi Diff](https://github.com/OpenAPITools/openapi-diff) | `openapitools.md`, `openapitools.error.txt` |
|
||||
| [Tufin OpenApi Diff](https://github.com/tufin/oasdiff) | `oasdiff.txt`, `oasdiff.error.txt` |
|
||||
| [Bump](https://bump.sh) | `bump.txt` |
|
||||
|
||||
## Running with Bump.sh
|
||||
|
||||
Bump.sh is a closed-source tool that is only available via REST API. To include bump.sh in the benchmark results you have to supply your credentials as arguments:
|
||||
|
||||
```bash
|
||||
nix-build --argstr bumpToken <TOKEN> --argstr bumpDocumentation <DOCUMENTATION IDENTIFIER>
|
||||
```
|
10
benchmarks/atlassian/addDist.patch
Normal file
10
benchmarks/atlassian/addDist.patch
Normal file
@ -0,0 +1,10 @@
|
||||
diff --git a/gulpfile.js b/gulpfile.js
|
||||
index c3161cf..c123cc0 100644
|
||||
--- a/gulpfile.js
|
||||
+++ b/gulpfile.js
|
||||
@@ -153,3 +153,5 @@ exports.watch = gulp.series(
|
||||
exports.watchE2e = function () {
|
||||
gulp.watch(['build-output/lib/**/*', 'build-output/test/e2e/**/*', 'test/e2e/**/*.json'], gulp.series(e2eTest));
|
||||
};
|
||||
+
|
||||
+exports.compileDist = compileDist
|
4918
benchmarks/atlassian/yarn.lock
Normal file
4918
benchmarks/atlassian/yarn.lock
Normal file
File diff suppressed because it is too large
Load Diff
164
benchmarks/default.nix
Normal file
164
benchmarks/default.nix
Normal file
@ -0,0 +1,164 @@
|
||||
{ sources ? import ./nix/sources.nix
|
||||
, haskellNix ? import sources.haskellNix { }
|
||||
, gomod2nix ? sources.gomod2nix
|
||||
, pkgs ? import haskellNix.sources.nixpkgs-2105 (haskellNix.nixpkgsArgs // {
|
||||
overlays = haskellNix.nixpkgsArgs.overlays ++ [
|
||||
(self: super: {
|
||||
buildGoApplication = super.callPackage (gomod2nix + "/builder") { };
|
||||
})
|
||||
];
|
||||
})
|
||||
, npmNix ? import (sources.npmNix + "/npmPackages") { inherit pkgs; }
|
||||
, mavenix ? import (sources.mavenix) { inherit pkgs; }
|
||||
, bumpToken ? null
|
||||
, bumpDocumentation ? null
|
||||
}:
|
||||
let
|
||||
typeable-openapi-diff = (pkgs.haskell-nix.stackProject {
|
||||
src = pkgs.haskell-nix.haskellLib.cleanGit {
|
||||
name = "openapi-diff";
|
||||
src = ./..;
|
||||
};
|
||||
}).openapi-diff.components.exes.openapi-diff;
|
||||
typeable-openapi-diff-exe = typeable-openapi-diff + "/bin/openapi-diff";
|
||||
typeable-openapi-diff-differ = pkgs.writeScript "typeable-openapi-diff-differ" ''
|
||||
#!${pkgs.stdenv.shell}
|
||||
set +e
|
||||
${typeable-openapi-diff-exe} -s $1 -c $2 -o $3/typeable.md
|
||||
exit 0
|
||||
'';
|
||||
|
||||
atlassian-openapi-diff = pkgs.mkYarnPackage {
|
||||
name = "openapi-diff";
|
||||
src = sources.atlassian-openapi-diff;
|
||||
yarnLock = ./atlassian/yarn.lock;
|
||||
patches = [ ./atlassian/addDist.patch ];
|
||||
postBuild = "yarn run gulp compileDist";
|
||||
};
|
||||
atlassian-openapi-diff-exe = atlassian-openapi-diff + "/bin/openapi-diff";
|
||||
atlassian-openapi-diff-differ = pkgs.writeScript "atlassian-openapi-diff-differ" ''
|
||||
#!${pkgs.stdenv.shell}
|
||||
set +e
|
||||
${atlassian-openapi-diff-exe} $1 $2 >$3/atlassian.json 2>$3/atlassian.error.txt
|
||||
if [ ! -s $3/atlassian.error.txt ]; then
|
||||
rm $3/atlassian.error.txt
|
||||
fi
|
||||
exit 0
|
||||
'';
|
||||
|
||||
openapitools-openapi-diff = mavenix.buildMaven {
|
||||
maven = pkgs.maven;
|
||||
src = sources.openapitools-openapi-diff;
|
||||
doCheck = false;
|
||||
infoFile = ./openapitools/mavenix.lock;
|
||||
MAVEN_OPTS = "-Dgithook.plugin.skip=true";
|
||||
};
|
||||
openapitools-openapi-diff-exe =
|
||||
pkgs.runCommand "openapitools-openapi-diff"
|
||||
{ buildInputs = [ pkgs.makeWrapper ]; }
|
||||
''makeWrapper ${pkgs.jdk}/bin/java $out --add-flags "-jar ${openapitools-openapi-diff}/share/java/openapi-diff-cli-2.0.0-SNAPSHOT-all.jar"'';
|
||||
openapitools-openapi-diff-differ = pkgs.writeScript "openapitools-openapi-diff-differ" ''
|
||||
#!${pkgs.stdenv.shell}
|
||||
set +e
|
||||
${openapitools-openapi-diff-exe} $1 $2 --off --markdown $3/openapitools.md 2>$3/openapitools.error.txt
|
||||
if [ ! -s $3/openapitools.error.txt ]; then
|
||||
rm $3/openapitools.error.txt
|
||||
fi
|
||||
exit 0
|
||||
'';
|
||||
|
||||
oasdiff = pkgs.pkgs.buildGoApplication {
|
||||
pname = "oasdiff";
|
||||
version = "0.1";
|
||||
src = sources.oasdiff;
|
||||
modules = ./oasdiff/gomod2nix.toml;
|
||||
};
|
||||
oasdiff-differ = pkgs.writeScript "oasdiff-differ" ''
|
||||
#!${pkgs.stdenv.shell}
|
||||
set +e
|
||||
${oasdiff}/bin/oasdiff -base $1 -revision $2 -format text >$3/oasdiff.txt 2>$3/oasdiff.error.txt
|
||||
if [ ! -s $3/oasdiff.error.txt ]; then
|
||||
rm $3/oasdiff.error.txt
|
||||
fi
|
||||
exit 0
|
||||
'';
|
||||
|
||||
bump-differ = { bumpToken, bumpDocumentation }: pkgs.writeScript "bump-differ" ''
|
||||
#!${pkgs.stdenv.shell}
|
||||
|
||||
${pkgs.httpie}/bin/https --ignore-stdin POST bump.sh/api/v1/versions definition=@$1 documentation=${bumpDocumentation} -a ${bumpToken}: >/dev/null
|
||||
id=$(${pkgs.httpie}/bin/https --ignore-stdin POST bump.sh/api/v1/versions definition=@$2 documentation=${bumpDocumentation} -a ${bumpToken}: | ${pkgs.jq}/bin/jq -r .id)
|
||||
|
||||
if [ -z "$id" ]
|
||||
then
|
||||
echo "Not changed" > $3/bump.txt
|
||||
else
|
||||
state=""
|
||||
|
||||
while [ "$state" != "deployed" ]
|
||||
do
|
||||
state=$(${pkgs.httpie}/bin/https --ignore-stdin GET bump.sh/api/v1/versions/$id -a ${bumpToken}: | ${pkgs.jq}/bin/jq -r .state)
|
||||
done
|
||||
|
||||
${pkgs.httpie}/bin/https --ignore-stdin GET bump.sh/api/v1/versions/$id -a ${bumpToken}: | ${pkgs.jq}/bin/jq -r .diff_summary > $3/bump.txt
|
||||
fi
|
||||
'';
|
||||
|
||||
getInputs = with pkgs;
|
||||
dir: lib.flatten (lib.mapAttrsToList
|
||||
(name: type:
|
||||
if type == "directory" then
|
||||
let
|
||||
path = dir + "/${name}";
|
||||
contents = builtins.readDir path;
|
||||
in
|
||||
if contents."a.yaml" or null == "regular" && contents."b.yaml" or null == "regular"
|
||||
then path
|
||||
else getInputs path
|
||||
else [ ]
|
||||
)
|
||||
(builtins.readDir dir)
|
||||
);
|
||||
|
||||
runBenchmark = root: pkgs.runCommand "openapi-diff-benchmarks"
|
||||
{
|
||||
dirs = map
|
||||
(path: builtins.toJSON {
|
||||
relativePath = pkgs.lib.removePrefix (builtins.toString root) (builtins.toString path);
|
||||
a = path + "/a.yaml";
|
||||
b = path + "/b.yaml";
|
||||
})
|
||||
(getInputs root);
|
||||
differs = [
|
||||
typeable-openapi-diff-differ
|
||||
atlassian-openapi-diff-differ
|
||||
openapitools-openapi-diff-differ
|
||||
oasdiff-differ
|
||||
] ++ (
|
||||
if bumpToken == null || bumpDocumentation == null
|
||||
then builtins.trace "Warning: bumpToken or bumpDocumentation not provided. Skipping bump.sh benchmarks." [ ]
|
||||
else [ (bump-differ { inherit bumpToken bumpDocumentation; }) ]
|
||||
);
|
||||
}
|
||||
''
|
||||
echo "Running compatibility checks:"
|
||||
for dir in $dirs
|
||||
do
|
||||
a=$(echo $dir | ${pkgs.jq}/bin/jq -r .a)
|
||||
b=$(echo $dir | ${pkgs.jq}/bin/jq -r .b)
|
||||
relativePath=$(echo $dir | ${pkgs.jq}/bin/jq -r .relativePath)
|
||||
echo "''\t$relativePath"
|
||||
output=$out$relativePath
|
||||
mkdir -p $output
|
||||
for differ in $differs
|
||||
do
|
||||
$differ $a $b $output
|
||||
done
|
||||
cp $a $output/a.yaml
|
||||
cp $b $output/b.yaml
|
||||
done
|
||||
'';
|
||||
|
||||
|
||||
in
|
||||
runBenchmark ../test/golden/common
|
92
benchmarks/nix/sources.json
Normal file
92
benchmarks/nix/sources.json
Normal file
@ -0,0 +1,92 @@
|
||||
{
|
||||
"atlassian-openapi-diff": {
|
||||
"branch": "master",
|
||||
"repo": "https://bitbucket.org/atlassian/openapi-diff.git",
|
||||
"rev": "68a0ebce1ec07f21b8e51a008321208c58eab1d6",
|
||||
"type": "git"
|
||||
},
|
||||
"gomod2nix": {
|
||||
"branch": "master",
|
||||
"description": "Convert applications using Go modules to Nix expressions",
|
||||
"homepage": null,
|
||||
"owner": "tweag",
|
||||
"repo": "gomod2nix",
|
||||
"rev": "c78d7b9f15a24eba95fbc228509f513c83709d8b",
|
||||
"sha256": "15qjp1g2pkkpr5b1mfjfiwl8kyfabi66hklk7apk7jh9sb2qqf85",
|
||||
"type": "tarball",
|
||||
"url": "https://github.com/tweag/gomod2nix/archive/c78d7b9f15a24eba95fbc228509f513c83709d8b.tar.gz",
|
||||
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
|
||||
},
|
||||
"haskellNix": {
|
||||
"branch": "master",
|
||||
"description": "Alternative Haskell Infrastructure for Nixpkgs",
|
||||
"homepage": "https://input-output-hk.github.io/haskell.nix",
|
||||
"owner": "input-output-hk",
|
||||
"repo": "haskell.nix",
|
||||
"rev": "062a0317b6f1ec231864df49cb9c0fcc838e9c8a",
|
||||
"sha256": "0s5f8hnwqmz9anz175a53vay20f0185m92vyiga6yrslsar3vpin",
|
||||
"type": "tarball",
|
||||
"url": "https://github.com/input-output-hk/haskell.nix/archive/062a0317b6f1ec231864df49cb9c0fcc838e9c8a.tar.gz",
|
||||
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
|
||||
},
|
||||
"mavenix": {
|
||||
"branch": "master",
|
||||
"description": "Deterministic Maven builds using Nix [maintainer=@icetan]",
|
||||
"homepage": "",
|
||||
"owner": "nix-community",
|
||||
"repo": "mavenix",
|
||||
"rev": "7416dbd2861520d44a4d6ecee9d94f89737412dc",
|
||||
"sha256": "0gkn29q63y2l700vravfl8nqjvd0zx7nvfcb3vj64fal3prh1l7y",
|
||||
"type": "tarball",
|
||||
"url": "https://github.com/nix-community/mavenix/archive/7416dbd2861520d44a4d6ecee9d94f89737412dc.tar.gz",
|
||||
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
|
||||
},
|
||||
"niv": {
|
||||
"branch": "master",
|
||||
"description": "Easy dependency management for Nix projects",
|
||||
"homepage": "https://github.com/nmattia/niv",
|
||||
"owner": "nmattia",
|
||||
"repo": "niv",
|
||||
"rev": "e0ca65c81a2d7a4d82a189f1e23a48d59ad42070",
|
||||
"sha256": "1pq9nh1d8nn3xvbdny8fafzw87mj7gsmp6pxkdl65w2g18rmcmzx",
|
||||
"type": "tarball",
|
||||
"url": "https://github.com/nmattia/niv/archive/e0ca65c81a2d7a4d82a189f1e23a48d59ad42070.tar.gz",
|
||||
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
|
||||
},
|
||||
"npmNix": {
|
||||
"branch": "master",
|
||||
"description": "Organize JavaScript packages with the Nix package manager.",
|
||||
"homepage": "https://medium.com/commitlog/the-internet-is-at-the-mercy-of-a-handful-of-people-73fac4bc5068",
|
||||
"owner": "ip1981",
|
||||
"repo": "npm.nix",
|
||||
"rev": "dd31fae2cfe7d4ed21fc9a9f226a81f382b86022",
|
||||
"sha256": "1a0aqawv6hslxn756yzb3f8ajf4gcms8b1abw2dwm0ck81jq2snc",
|
||||
"type": "tarball",
|
||||
"url": "https://github.com/ip1981/npm.nix/archive/dd31fae2cfe7d4ed21fc9a9f226a81f382b86022.tar.gz",
|
||||
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
|
||||
},
|
||||
"oasdiff": {
|
||||
"branch": "main",
|
||||
"description": "A diff tool for OpenAPI Specification 3",
|
||||
"homepage": "",
|
||||
"owner": "tufin",
|
||||
"repo": "oasdiff",
|
||||
"rev": "8630d1b6eda369db321d0f7e153002c9bb7515b8",
|
||||
"sha256": "1p8lskhckgnwdy7vq28qvvls6j9flwliky8qwfhpzmsf43cxkjg6",
|
||||
"type": "tarball",
|
||||
"url": "https://github.com/tufin/oasdiff/archive/8630d1b6eda369db321d0f7e153002c9bb7515b8.tar.gz",
|
||||
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
|
||||
},
|
||||
"openapitools-openapi-diff": {
|
||||
"branch": "master",
|
||||
"description": "Utility for comparing two OpenAPI specifications.",
|
||||
"homepage": null,
|
||||
"owner": "OpenAPITools",
|
||||
"repo": "openapi-diff",
|
||||
"rev": "1ae6fb0baa56cd7b61b50904f2c664cd86d64547",
|
||||
"sha256": "1aigv0hgzxfz3i3d0qxn7jp1hgkrlmhwcilpzza2y9j5qdfxkrvs",
|
||||
"type": "tarball",
|
||||
"url": "https://github.com/OpenAPITools/openapi-diff/archive/1ae6fb0baa56cd7b61b50904f2c664cd86d64547.tar.gz",
|
||||
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
|
||||
}
|
||||
}
|
171
benchmarks/nix/sources.nix
Normal file
171
benchmarks/nix/sources.nix
Normal file
@ -0,0 +1,171 @@
|
||||
# This file has been generated by Niv.
|
||||
|
||||
let
|
||||
|
||||
#
|
||||
# The fetchers. fetch_<type> fetches specs of type <type>.
|
||||
#
|
||||
|
||||
fetch_file = pkgs: name: spec:
|
||||
let
|
||||
name' = sanitizeName name + "-src";
|
||||
in
|
||||
if spec.builtin or true then
|
||||
builtins_fetchurl { inherit (spec) url sha256; name = name'; }
|
||||
else
|
||||
pkgs.fetchurl { inherit (spec) url sha256; name = name'; };
|
||||
|
||||
fetch_tarball = pkgs: name: spec:
|
||||
let
|
||||
name' = sanitizeName name + "-src";
|
||||
in
|
||||
if spec.builtin or true then
|
||||
builtins_fetchTarball { name = name'; inherit (spec) url sha256; }
|
||||
else
|
||||
pkgs.fetchzip { name = name'; inherit (spec) url sha256; };
|
||||
|
||||
fetch_git = name: spec:
|
||||
let
|
||||
ref =
|
||||
if spec ? ref then spec.ref else
|
||||
if spec ? branch then "refs/heads/${spec.branch}" else
|
||||
if spec ? tag then "refs/tags/${spec.tag}" else
|
||||
abort "In git source '${name}': Please specify `ref`, `tag` or `branch`!";
|
||||
in
|
||||
builtins.fetchGit { url = spec.repo; inherit (spec) rev; inherit ref; };
|
||||
|
||||
fetch_local = spec: spec.path;
|
||||
|
||||
fetch_builtin-tarball = name: throw
|
||||
''[${name}] The niv type "builtin-tarball" is deprecated. You should instead use `builtin = true`.
|
||||
$ niv modify ${name} -a type=tarball -a builtin=true'';
|
||||
|
||||
fetch_builtin-url = name: throw
|
||||
''[${name}] The niv type "builtin-url" will soon be deprecated. You should instead use `builtin = true`.
|
||||
$ niv modify ${name} -a type=file -a builtin=true'';
|
||||
|
||||
#
|
||||
# Various helpers
|
||||
#
|
||||
|
||||
# https://github.com/NixOS/nixpkgs/pull/83241/files#diff-c6f540a4f3bfa4b0e8b6bafd4cd54e8bR695
|
||||
sanitizeName = name:
|
||||
(
|
||||
concatMapStrings (s: if builtins.isList s then "-" else s)
|
||||
(
|
||||
builtins.split "[^[:alnum:]+._?=-]+"
|
||||
((x: builtins.elemAt (builtins.match "\\.*(.*)" x) 0) name)
|
||||
)
|
||||
);
|
||||
|
||||
# The set of packages used when specs are fetched using non-builtins.
|
||||
mkPkgs = sources: system:
|
||||
let
|
||||
sourcesNixpkgs =
|
||||
import (builtins_fetchTarball { inherit (sources.nixpkgs) url sha256; }) { inherit system; };
|
||||
hasNixpkgsPath = builtins.any (x: x.prefix == "nixpkgs") builtins.nixPath;
|
||||
hasThisAsNixpkgsPath = <nixpkgs> == ./.;
|
||||
in
|
||||
if builtins.hasAttr "nixpkgs" sources
|
||||
then sourcesNixpkgs
|
||||
else if hasNixpkgsPath && ! hasThisAsNixpkgsPath then
|
||||
import <nixpkgs> {}
|
||||
else
|
||||
abort
|
||||
''
|
||||
Please specify either <nixpkgs> (through -I or NIX_PATH=nixpkgs=...) or
|
||||
add a package called "nixpkgs" to your sources.json.
|
||||
'';
|
||||
|
||||
# The actual fetching function.
|
||||
fetch = pkgs: name: spec:
|
||||
|
||||
if ! builtins.hasAttr "type" spec then
|
||||
abort "ERROR: niv spec ${name} does not have a 'type' attribute"
|
||||
else if spec.type == "file" then fetch_file pkgs name spec
|
||||
else if spec.type == "tarball" then fetch_tarball pkgs name spec
|
||||
else if spec.type == "git" then fetch_git name spec
|
||||
else if spec.type == "local" then fetch_local spec
|
||||
else if spec.type == "builtin-tarball" then fetch_builtin-tarball name
|
||||
else if spec.type == "builtin-url" then fetch_builtin-url name
|
||||
else
|
||||
abort "ERROR: niv spec ${name} has unknown type ${builtins.toJSON spec.type}";
|
||||
|
||||
# If the environment variable NIV_OVERRIDE_${name} is set, then use
|
||||
# the path directly as opposed to the fetched source.
|
||||
replace = name: drv:
|
||||
let
|
||||
saneName = stringAsChars (c: if isNull (builtins.match "[a-zA-Z0-9]" c) then "_" else c) name;
|
||||
ersatz = builtins.getEnv "NIV_OVERRIDE_${saneName}";
|
||||
in
|
||||
if ersatz == "" then drv else ersatz;
|
||||
|
||||
# Ports of functions for older nix versions
|
||||
|
||||
# a Nix version of mapAttrs if the built-in doesn't exist
|
||||
mapAttrs = builtins.mapAttrs or (
|
||||
f: set: with builtins;
|
||||
listToAttrs (map (attr: { name = attr; value = f attr set.${attr}; }) (attrNames set))
|
||||
);
|
||||
|
||||
# https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/lists.nix#L295
|
||||
range = first: last: if first > last then [] else builtins.genList (n: first + n) (last - first + 1);
|
||||
|
||||
# https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/strings.nix#L257
|
||||
stringToCharacters = s: map (p: builtins.substring p 1 s) (range 0 (builtins.stringLength s - 1));
|
||||
|
||||
# https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/strings.nix#L269
|
||||
stringAsChars = f: s: concatStrings (map f (stringToCharacters s));
|
||||
concatMapStrings = f: list: concatStrings (map f list);
|
||||
concatStrings = builtins.concatStringsSep "";
|
||||
|
||||
# https://github.com/NixOS/nixpkgs/blob/8a9f58a375c401b96da862d969f66429def1d118/lib/attrsets.nix#L331
|
||||
optionalAttrs = cond: as: if cond then as else {};
|
||||
|
||||
# fetchTarball version that is compatible between all the versions of Nix
|
||||
builtins_fetchTarball = { url, name ? null, sha256 }@attrs:
|
||||
let
|
||||
inherit (builtins) lessThan nixVersion fetchTarball;
|
||||
in
|
||||
if lessThan nixVersion "1.12" then
|
||||
fetchTarball ({ inherit url; } // (optionalAttrs (!isNull name) { inherit name; }))
|
||||
else
|
||||
fetchTarball attrs;
|
||||
|
||||
# fetchurl version that is compatible between all the versions of Nix
|
||||
builtins_fetchurl = { url, name ? null, sha256 }@attrs:
|
||||
let
|
||||
inherit (builtins) lessThan nixVersion fetchurl;
|
||||
in
|
||||
if lessThan nixVersion "1.12" then
|
||||
fetchurl ({ inherit url; } // (optionalAttrs (!isNull name) { inherit name; }))
|
||||
else
|
||||
fetchurl attrs;
|
||||
|
||||
# Create the final "sources" from the config
|
||||
mkSources = config:
|
||||
mapAttrs (
|
||||
name: spec:
|
||||
if builtins.hasAttr "outPath" spec
|
||||
then abort
|
||||
"The values in sources.json should not have an 'outPath' attribute"
|
||||
else
|
||||
spec // { outPath = replace name (fetch config.pkgs name spec); }
|
||||
) config.sources;
|
||||
|
||||
# The "config" used by the fetchers
|
||||
mkConfig =
|
||||
{ sourcesFile ? if builtins.pathExists ./sources.json then ./sources.json else null
|
||||
, sources ? if isNull sourcesFile then {} else builtins.fromJSON (builtins.readFile sourcesFile)
|
||||
, system ? builtins.currentSystem
|
||||
, pkgs ? mkPkgs sources system
|
||||
}: rec {
|
||||
# The sources, i.e. the attribute set of spec name to spec
|
||||
inherit sources;
|
||||
|
||||
# The "pkgs" (evaluated nixpkgs) to use for e.g. non-builtin fetchers
|
||||
inherit pkgs;
|
||||
};
|
||||
|
||||
in
|
||||
mkSources (mkConfig {}) // { __functor = _: settings: mkSources (mkConfig settings); }
|
135
benchmarks/oasdiff/gomod2nix.toml
Normal file
135
benchmarks/oasdiff/gomod2nix.toml
Normal file
@ -0,0 +1,135 @@
|
||||
["github.com/davecgh/go-spew"]
|
||||
sumVersion = "v1.1.1"
|
||||
["github.com/davecgh/go-spew".fetch]
|
||||
type = "git"
|
||||
url = "https://github.com/davecgh/go-spew"
|
||||
rev = "8991bc29aa16c548c550c7ff78260e27b9ab7c73"
|
||||
sha256 = "0hka6hmyvp701adzag2g26cxdj47g21x6jz4sc6jjz1mn59d474y"
|
||||
|
||||
["github.com/getkin/kin-openapi"]
|
||||
sumVersion = "v0.66.0"
|
||||
["github.com/getkin/kin-openapi".fetch]
|
||||
type = "git"
|
||||
url = "https://github.com/getkin/kin-openapi"
|
||||
rev = "6b4444becdebac4ea5658cbe205bac8c27a7ec41"
|
||||
sha256 = "08njvg2v14k2p3l1fwrmgg21k0fkli2ajac4893j5zky7a72sbiq"
|
||||
|
||||
["github.com/ghodss/yaml"]
|
||||
sumVersion = "v1.0.0"
|
||||
["github.com/ghodss/yaml".fetch]
|
||||
type = "git"
|
||||
url = "https://github.com/ghodss/yaml"
|
||||
rev = "0ca9ea5df5451ffdf184b4428c902747c2c11cd7"
|
||||
sha256 = "0skwmimpy7hlh7pva2slpcplnm912rp3igs98xnqmn859kwa5v8g"
|
||||
|
||||
["github.com/go-openapi/jsonpointer"]
|
||||
sumVersion = "v0.19.5"
|
||||
["github.com/go-openapi/jsonpointer".fetch]
|
||||
type = "git"
|
||||
url = "https://github.com/go-openapi/jsonpointer"
|
||||
rev = "2446e21cad36eee826e1c2380f0ff747074a2faa"
|
||||
sha256 = "0azic9nfwywlz4qxvacyi4g668fbbrkcyv15bag02yfcsi8szg5c"
|
||||
|
||||
["github.com/go-openapi/swag"]
|
||||
sumVersion = "v0.19.5"
|
||||
["github.com/go-openapi/swag".fetch]
|
||||
type = "git"
|
||||
url = "https://github.com/go-openapi/swag"
|
||||
rev = "c3d0f7896d589f3babb99eea24bbc7de98108e72"
|
||||
sha256 = "1z34vqc5yz6rzvarrvlhkimxx33p74iaxb28l1mv716njvlsmjhg"
|
||||
|
||||
["github.com/gorilla/mux"]
|
||||
sumVersion = "v1.8.0"
|
||||
["github.com/gorilla/mux".fetch]
|
||||
type = "git"
|
||||
url = "https://github.com/gorilla/mux"
|
||||
rev = "98cb6bf42e086f6af920b965c38cacc07402d51b"
|
||||
sha256 = "18f0q9qxgq1yh4ji07mqhiydfcwvi56z9d775v7dc7yckj33kpdk"
|
||||
|
||||
["github.com/kr/pretty"]
|
||||
sumVersion = "v0.1.0"
|
||||
["github.com/kr/pretty".fetch]
|
||||
type = "git"
|
||||
url = "https://github.com/kr/pretty"
|
||||
rev = "73f6ac0b30a98e433b289500d779f50c1a6f0712"
|
||||
sha256 = "18m4pwg2abd0j9cn5v3k2ksk9ig4vlwxmlw9rrglanziv9l967qp"
|
||||
|
||||
["github.com/kr/pty"]
|
||||
sumVersion = "v1.1.1"
|
||||
["github.com/kr/pty".fetch]
|
||||
type = "git"
|
||||
url = "https://github.com/kr/pty"
|
||||
rev = "282ce0e5322c82529687d609ee670fac7c7d917c"
|
||||
sha256 = "0383f0mb9kqjvncqrfpidsf8y6ns5zlrc91c6a74xpyxjwvzl2y6"
|
||||
|
||||
["github.com/kr/text"]
|
||||
sumVersion = "v0.1.0"
|
||||
["github.com/kr/text".fetch]
|
||||
type = "git"
|
||||
url = "https://github.com/kr/text"
|
||||
rev = "e2ffdb16a802fe2bb95e2e35ff34f0e53aeef34f"
|
||||
sha256 = "1gm5bsl01apvc84bw06hasawyqm4q84vx1pm32wr9jnd7a8vjgj1"
|
||||
|
||||
["github.com/mailru/easyjson"]
|
||||
sumVersion = "v0.0.0-20190626092158-b2ccc519800e"
|
||||
["github.com/mailru/easyjson".fetch]
|
||||
type = "git"
|
||||
url = "https://github.com/mailru/easyjson"
|
||||
rev = "b2ccc519800e761ac8000b95e5d57c80a897ff9e"
|
||||
sha256 = "0q85h383mhbkcjm2vqm72bi8n2252fv3c56q3lclzb8n2crnjcdk"
|
||||
|
||||
["github.com/pmezard/go-difflib"]
|
||||
sumVersion = "v1.0.0"
|
||||
["github.com/pmezard/go-difflib".fetch]
|
||||
type = "git"
|
||||
url = "https://github.com/pmezard/go-difflib"
|
||||
rev = "792786c7400a136282c1664665ae0a8db921c6c2"
|
||||
sha256 = "0c1cn55m4rypmscgf0rrb88pn58j3ysvc2d0432dp3c6fqg6cnzw"
|
||||
|
||||
["github.com/stretchr/objx"]
|
||||
sumVersion = "v0.1.0"
|
||||
["github.com/stretchr/objx".fetch]
|
||||
type = "git"
|
||||
url = "https://github.com/stretchr/objx"
|
||||
rev = "facf9a85c22f48d2f52f2380e4efce1768749a89"
|
||||
sha256 = "19ynspzjdynbi85xw06mh8ad5j0qa1vryvxjgvbnyrr8rbm4vd8w"
|
||||
|
||||
["github.com/stretchr/testify"]
|
||||
sumVersion = "v1.7.0"
|
||||
["github.com/stretchr/testify".fetch]
|
||||
type = "git"
|
||||
url = "https://github.com/stretchr/testify"
|
||||
rev = "acba37e5db06f0093b465a7d47822bf13644b66c"
|
||||
sha256 = "0ixgjsvafr3513pz3r6pmgk074s2dxkll0dadvl25gkf30rkmh10"
|
||||
|
||||
["github.com/yuin/goldmark"]
|
||||
sumVersion = "v1.4.0"
|
||||
["github.com/yuin/goldmark".fetch]
|
||||
type = "git"
|
||||
url = "https://github.com/yuin/goldmark"
|
||||
rev = "5588d92a56fe1642791cf4aa8e9eae8227cfeecd"
|
||||
sha256 = "0n3xhna2rnxixjy5d7gfvgjkhddppa8hpzd8i8b68yb2l016g3qk"
|
||||
|
||||
["gopkg.in/check.v1"]
|
||||
sumVersion = "v1.0.0-20190902080502-41f04d3bba15"
|
||||
["gopkg.in/check.v1".fetch]
|
||||
type = "git"
|
||||
url = "https://gopkg.in/check.v1"
|
||||
rev = "41f04d3bba152ddec2103e299fed053415705330"
|
||||
sha256 = "0vfk9czmlxmp6wndq8k17rhnjxal764mxfhrccza7nwlia760pjy"
|
||||
|
||||
["gopkg.in/yaml.v2"]
|
||||
sumVersion = "v2.3.0"
|
||||
["gopkg.in/yaml.v2".fetch]
|
||||
type = "git"
|
||||
url = "https://gopkg.in/yaml.v2"
|
||||
rev = "0b1645d91e851e735d3e23330303ce81f70adbe3"
|
||||
sha256 = "1md0hlyd9s6myv3663i9l59y74n4xjazifmmyxn43g86fgkc5lzj"
|
||||
|
||||
["gopkg.in/yaml.v3"]
|
||||
sumVersion = "v3.0.0-20210107192922-496545a6307b"
|
||||
["gopkg.in/yaml.v3".fetch]
|
||||
type = "git"
|
||||
url = "https://gopkg.in/yaml.v3"
|
||||
rev = "496545a6307b2a7d7a710fd516e5e16e8ab62dbc"
|
||||
sha256 = "06f4lnrp494wqaygv09dggr2dwf3z2bawqhnlnnwiamg5y787k4g"
|
3511
benchmarks/openapitools/mavenix.lock
Normal file
3511
benchmarks/openapitools/mavenix.lock
Normal file
File diff suppressed because it is too large
Load Diff
@ -13,6 +13,7 @@ build-type: Simple
|
||||
extra-doc-files: README.md
|
||||
CHANGELOG.md
|
||||
tested-with: GHC == 8.10.4
|
||||
extra-source-files: awsm-css/dist/awsm.min.css
|
||||
|
||||
Flag static
|
||||
Default: False
|
||||
|
Loading…
Reference in New Issue
Block a user