(List (Com {[LIT_CHARS set]} {[LIT_CHARS -e]} ) (Com {[LIT_CHARS set]} {[LIT_CHARS -o]} {[LIT_CHARS pipefail]} ) (FunctionDef usage [] (List (Com {[LIT_CHARS cat]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "To publish the Docker documentation you need to set your access_key and secret_key in the docs/awsconfig file \n"] [LIT_CHARS "(with the keys in a [profile $AWS_S3_BUCKET] section - so you can have more than one set of keys in your file)\n"] [LIT_CHARS "and set the AWS_S3_BUCKET env var to the name of your bucket.\n"] [LIT_CHARS "\n"] [LIT_CHARS "If you're publishing the current release's documentation, also set `BUILD_ROOT=yes`\n"] [LIT_CHARS "\n"] [LIT_CHARS "make AWS_S3_BUCKET=docs-stage.docker.com docs-release\n"] [LIT_CHARS "\n"] [LIT_CHARS "will then push the documentation site to your s3 bucket.\n"] [LIT_CHARS "\n"] [LIT_CHARS " Note: you can add `OPTIONS=--dryrun` to see what will be done without sending to the server\n"]} 0), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) (AndOr OP_OR_IF (Com {[LIT_DBRACKET_LIKE "["]} {[DQ [VarSub AWS_S3_BUCKET]]} {[LIT_DBRACKET_LIKE "]"]} ) (Com {[LIT_CHARS usage]} ) ) (= scope= flags=0 words=[] bindings=[('VERSION', {[ComSub (Com {[LIT_CHARS cat]} {[LIT_CHARS VERSION]})]})]) (If (Com {[LIT_DBRACKET_LIKE "["]} {[DQ [VarSub AWS_S3_BUCKET]]} {[LIT_DBRACKET_LIKE "=="]} {[DQ [LIT_CHARS docs.docker.com]]} {[LIT_DBRACKET_LIKE "]"]} ) (List (If (Com {[LIT_DBRACKET_LIKE "["]} {[DQ [VarSub VERSION transform_ops=[VS_UNARY_PERCENT {[LIT_CHARS -dev]}]]]} {[LIT_NEQUAL "!="]} {[DQ [VarSub VERSION]]} {[LIT_DBRACKET_LIKE "]"]} ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Please do not push '-dev' documentation to docs.docker.com ("][VarSub VERSION][LIT_CHARS ")"]]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS ./sources/robots.txt]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "User-agent: *\n"] [LIT_CHARS "Allow: /\n"]} 0), > ) ) (ElseTrue) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS ./sources/robots.txt]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "User-agent: *\n"] [LIT_CHARS "Disallow: /\n"]} 0), > ) ) (= scope= flags=0 words=[] bindings=[('MAJOR_MINOR', {[DQ [LIT_CHARS v][VarSub VERSION transform_ops=[VS_UNARY_PERCENT {[LIT_CHARS ".*"]}]]]})]) (= scope= flags=1 words=[{[LIT_CHARS MAJOR_MINOR]}] bindings=[]) (= scope= flags=1 words=[] bindings=[('BUCKET', {[VarSub AWS_S3_BUCKET]})]) (= scope= flags=1 words=[] bindings=[('AWS_CONFIG_FILE', {[ComSub (Com {[LIT_CHARS pwd]})] [LIT_CHARS /awsconfig]})]) (AndOr OP_OR_IF (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_CHARS -e]} {[DQ [VarSub AWS_CONFIG_FILE]]} {[LIT_DBRACKET_LIKE "]"]} ) (Com {[LIT_CHARS usage]} ) ) (= scope= flags=1 words=[] bindings=[('AWS_DEFAULT_PROFILE', {[VarSub BUCKET]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "cfg file: "][VarSub AWS_CONFIG_FILE][LIT_CHARS " ; profile: "][VarSub AWS_DEFAULT_PROFILE]]} ) (FunctionDef setup_s3 [] (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Create "][VarSub BUCKET]]} ) (AndOr OP_OR_IF (Com {[LIT_CHARS aws]} {[LIT_CHARS s3]} {[LIT_CHARS mb]} {[LIT_CHARS --profile]} {[VarSub BUCKET]} {[LIT_CHARS s3] [LIT_OTHER ":"] [LIT_CHARS //] [VarSub BUCKET]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (Com {[LIT_CHARS true]} ) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "test "][VarSub BUCKET][LIT_CHARS " exists"]]} ) (Com {[LIT_CHARS aws]} {[LIT_CHARS s3]} {[LIT_CHARS --profile]} {[VarSub BUCKET]} {[LIT_CHARS ls]} {[LIT_CHARS s3] [LIT_OTHER ":"] [LIT_CHARS //] [VarSub BUCKET]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "make "][VarSub BUCKET][LIT_CHARS " accessible as a website"]]} ) (= scope= flags=0 words=[] bindings=[('s3conf', {[ComSub (Pipeline (Com {[LIT_CHARS cat]} {[LIT_CHARS s3_website.json]}) (Com {[LIT_CHARS envsubst]}) )]})]) (Com {[LIT_CHARS echo]} ) (Com {[LIT_CHARS echo]} {[VarSub s3conf]} ) (Com {[LIT_CHARS echo]} ) (Com {[LIT_CHARS aws]} {[LIT_CHARS s3api]} {[LIT_CHARS --profile]} {[VarSub BUCKET]} {[LIT_CHARS put-bucket-website]} {[LIT_CHARS --bucket]} {[VarSub BUCKET]} {[LIT_CHARS --website-configuration]} {[DQ [VarSub s3conf]]} ) ) ) (FunctionDef build_current_documentation [] (Com {[LIT_CHARS mkdocs]} {[LIT_CHARS build]} ) ) (FunctionDef upload_current_documentation [] (List (= scope= flags=0 words=[] bindings=[('src', {[LIT_CHARS site/]})]) (= scope= flags=0 words=[] bindings=[('dst', {[LIT_CHARS s3] [LIT_OTHER ":"] [LIT_CHARS //] [VarSub BUCKET] [VarSub 1]})]) (Com {[LIT_CHARS echo]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Uploading "][VarSub src]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " to "][VarSub dst]]} ) (Com {[LIT_CHARS echo]} ) (= scope= flags=0 words=[] bindings=[('include', {[DQ [LIT_CHARS "--recursive --include "][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS "*."][VarSub i][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " "]]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "uploading *."][VarSub i]]} ) (= scope= flags=0 words=[] bindings=[('run', {[DQ [LIT_CHARS "aws s3 cp "][VarSub src][LIT_CHARS " "][VarSub dst][LIT_CHARS " "][VarSub OPTIONS][LIT_CHARS " --profile "][VarSub BUCKET][LIT_CHARS " --cache-control "][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS "max-age=3600"][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " --acl public-read "][VarSub include]]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "======================="]]} ) (Com {[LIT_CHARS echo]} {[DQ [VarSub run]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "======================="]]} ) (Com {[VarSub run]} ) ) ) (If (Com {[LIT_DBRACKET_LIKE "["]} {[DQ [VarSub OPTIONS]]} {[LIT_NEQUAL "!="]} {[DQ [LIT_CHARS --dryrun]]} {[LIT_DBRACKET_LIKE "]"]} ) (Com {[LIT_CHARS setup_s3]} ) ) (If (Com {[LIT_DBRACKET_LIKE "["]} {[DQ [VarSub BUILD_ROOT]]} {[LIT_DBRACKET_LIKE "=="]} {[DQ [LIT_CHARS yes]]} {[LIT_DBRACKET_LIKE "]"]} ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Building root documentation"]]} ) (Com {[LIT_CHARS build_current_documentation]} ) (Com {[LIT_CHARS upload_current_documentation]} ) ) ) (Com {[LIT_CHARS sed]} {[LIT_CHARS -i]} {[DQ [LIT_CHARS "s/^site_url:.*/site_url: "][\ LIT_ESCAPED_CHAR "\\/"][VarSub MAJOR_MINOR][\ LIT_ESCAPED_CHAR "\\/"][LIT_CHARS /]]} {[LIT_CHARS mkdocs.yml]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Building the /"][VarSub MAJOR_MINOR][LIT_CHARS "/ documentation"]]} ) (Com {[LIT_CHARS build_current_documentation]} ) (Com {[LIT_CHARS upload_current_documentation]} {[DQ [LIT_CHARS /][VarSub MAJOR_MINOR][LIT_CHARS /]]} ) )