Skip to content

Commit e7f8896

Browse files
authored
Merge pull request #8 from disruptek/generator
add generator, complete lfs migration
2 parents 61d08d3 + 270c203 commit e7f8896

File tree

242 files changed

+840
-1324968
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

242 files changed

+840
-1324968
lines changed

.gitattributes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
*.nim filter=lfs diff=lfs merge=lfs -text

atoz.nimble

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
version = "2626.1.0"
1+
version = "2626.3.0"
22
author = "disruptek"
33
description = "Amazon Web Services (AWS) APIs"
44
license = "MIT"
5-
requires "nim >= 0.20.0"
6-
requires "sigv4 >= 1.0.4"
5+
6+
requires "sigv4 >= 1.3.0 & < 2.0.0"
77
requires "https://github.com/disruptek/rest >= 1.0.0"
8-
requires "https://github.com/disruptek/openapi >= 3.1.3"
9-
requires "npeg >= 0.22.2"
8+
requires "https://github.com/disruptek/openapi >= 3.3.0 & < 4.0.0"
9+
requires "npeg >= 0.22.2 & < 1.0.0"
1010

1111
srcDir = "src"

generator/README.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# atoz generator
2+
3+
This is a messy collection of adhoc scripts that I use to rebuild the the AWS
4+
APIs from the OpenAPI source distribution.
5+
6+
Yes, it should have been a `Makefile` but it evolved from something else
7+
and I just never bothered to clean it up.
8+
9+
You will have to generalize/customize this stuff to your environment; PRs
10+
welcome!
11+
12+
- `atoz.nim` is the openapi generator itself
13+
- `yaml-into-json` takes the openapi spec and converts it to renamed
14+
json outputs, without modifying mtimes on unchanged outputs
15+
- `json-into-nim` turns novel json inputs into nim source using the generator

generator/atoz.nim

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:fba4af3d1a611db92b7fd7745f8ff45991a738134a81dd6a8ad3a98b522d9790
3+
size 8702

build.nims renamed to generator/build.nims

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ putEnv "OPENAPIOUT", output
2020
echo api, " release ", serial
2121

2222
var
23-
cmd = "nim c --maxLoopIterationsVM:100000000 --define:ssl"
23+
cmd = "nim c --define:openapiOmitAllDocs --maxLoopIterationsVM:100000000 --define:ssl"
2424

2525
cmd = fmt"""{cmd} -d:OPENAPIIN="{input}" -d:OPENAPIOUT="{output}" --nimcache="{cache}""""
2626
exec fmt"""{cmd} -f "{source}""""

generator/json-into-nim

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
#!/bin/fish
2+
3+
set --local jobs 12
4+
5+
# source files
6+
set --local input ~/git/atoz/json
7+
8+
# output directory for nim
9+
set --local output ~/git/atoz/src/atoz
10+
11+
# temp file to hold our parallel jobs
12+
set --local pfile (mktemp)
13+
14+
# make sure our output dir works
15+
mkdir --parents "$output"
16+
17+
# the list of input files
18+
set --local inputs (find $input -name \*.json -print)
19+
20+
set --local sfile (mktemp)
21+
22+
for n in $inputs
23+
# full-path
24+
set --local fp (realpath "$n")
25+
# serial number (a date)
26+
set --local ser (basename $n)
27+
# directory named after the api
28+
set --local api (basename (dirname "$n"))
29+
set --local target (basename (dirname "$n"))
30+
set --local target (string replace "-" "_" "$target")
31+
set --local target (string replace "." "_" "$target")
32+
# just the date cleaned up, eg. 20200202
33+
set --local justser (echo "$ser" | cut -f 1 -d\.)
34+
# output nim file
35+
set --local target (string join "_" "$output/$target" "$justser.nim")
36+
37+
set --local intime (stat --format="%Y" "$fp")
38+
set --local outtime 0
39+
if test -f "$target"
40+
set outtime (stat --format="%Y" "$target")
41+
end
42+
echo "$api" >> $sfile
43+
if test $intime -gt $outtime
44+
if test $jobs -ne 1
45+
echo "./build.nims atoz.nim '$fp' '$output/$ser' '$api' '$ser'" >> $pfile
46+
else
47+
if ! ./build.nims atoz.nim $fp $output/$ser $api $ser
48+
break
49+
end
50+
end
51+
end
52+
end
53+
54+
if test $jobs -ne 1
55+
parallel -j $jobs < $pfile
56+
end
57+
58+
set --local uniques (sort < $sfile | uniq | wc -l | xargs echo)
59+
echo $uniques services
60+
61+
if test -f $pfile; rm $pfile; end
62+
if test -f $sfile; rm $sfile; end

generator/prep-one

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#!/bin/fish
2+
set --local temp (mktemp)
3+
set --local input $argv[1]
4+
set --local target $argv[2]
5+
set --local ser $argv[3]
6+
set --local ver $argv[4]
7+
mkdir --parents (dirname "$target")
8+
9+
echo $ser $ver
10+
yq . "$input" > "$temp"
11+
if ! test -f "$target"
12+
mv "$temp" "$target"
13+
else
14+
set --local old (md5sum "$target" | cut -f1 -d\ )
15+
set --local new (md5sum "$temp" | cut -f1 -d\ )
16+
if test "$old" != "$new"
17+
mv "$temp" "$target"
18+
end
19+
end
20+
21+
if test -f "$temp"
22+
rm $temp
23+
end

generator/yaml-into-json

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#!/bin/fish
2+
3+
set --local jobs 20
4+
set --local input ~/git/openapi-directory/APIs/amazonaws.com/
5+
set --local output ~/git/atoz/json/
6+
set --local pfile (mktemp)
7+
8+
pushd $input
9+
10+
set --local inputs (find . -name swagger.yaml -print)
11+
for n in $inputs
12+
set --local jsonout (dirname "$n" | cut -f 2- -d/)
13+
set --local ser (dirname $jsonout)
14+
set --local ver (basename $jsonout)
15+
set ser (string replace --all '/' '_' "$ser")
16+
set ser (string replace --all '-' '_' "$ser")
17+
set ser (string replace --all '.' '_' "$ser")
18+
set ver (string replace --all '-' '' "$ver")
19+
echo "./prep-one '$input/$n' '$output/$ser/$ver.json' '$ser' '$ver'" >> $pfile
20+
end
21+
22+
popd
23+
24+
parallel -j $jobs < $pfile
25+
26+
if test -f $pfile
27+
rm $pfile
28+
end

0 commit comments

Comments
 (0)