text:
#--------------------------------------------------------------------#
#     Input data used for heat and moisture transfer calculation     #
#--------------------------------------------------------------------#

#DODATI RUBNE UVJETE

#########
#Timestep if necessary#
##########

#dt=1        #Timestep in h
#T=8760      #Time domain

###########
#Mesh size#
###########

dl=0.005 #defined in m

########################
#Geometry and materials#
########################

#Elements -- matrix of vectors E_1=[material_key,x_0,y_0,x_1,y_1] to E_n

ne=27 #number of elements

E=zeros(Float64,ne,9) #Geometry and material matrix + boundary conditions

#Element 1 (Concrete)
E[1,1]=12
E[1,2]=0
E[1,3]=0
E[1,4]=0.76
E[1,5]=0.08
E[1,6]=1
E[1,7]=1.7
E[1,8]=2500
E[1,9]=1000

#Element 2 (XPS)
E[2,1]=14
E[2,2]=0
E[2,3]=0.08
E[2,4]=0.08
E[2,5]=1
E[2,6]=2
E[2,7]=0.04
E[2,8]=30
E[2,9]=840

#Element 3 (Reinforced concrete)
E[3,1]=13
E[3,2]=0.08
E[3,3]=0.08
E[3,4]=0.68
E[3,5]=1
E[3,6]=3
E[3,7]=1.7
E[3,8]=2500
E[3,9]=1000

#Element 4 (Reinforced concrete)
E[8,1]=13
E[8,2]=0.16
E[8,3]=1
E[8,4]=0.68
E[8,5]=1.08
E[8,6]=8
E[8,7]=1.7
E[8,8]=2500
E[8,9]=1000

#Element 5 (XPS)
E[5,1]=14
E[5,2]=0
E[5,3]=1
E[5,4]=0.08
E[5,5]=1.08
E[5,6]=5
E[5,7]=0.04
E[5,8]=30
E[5,9]=840

#Element 6 (XPS)
E[6,1]=14
E[6,2]=0.08
E[6,3]=1.01
E[6,4]=0.15
E[6,5]=1.08
E[6,6]=6
E[6,7]=0.04
E[6,8]=30
E[6,9]=840

#Element 7 (PVC hydroinsulation)
E[7,1]=15
E[7,2]=0.08
E[7,3]=1
E[7,4]=0.16
E[7,5]=1.01
E[7,6]=7
E[7,7]=0.14
E[7,8]=1200
E[7,9]=1000

#Element 8 (PVC hydroinsulation)
E[11,1]=15
E[11,2]=0.15
E[11,3]=1.01
E[11,4]=0.16
E[11,5]=1.77
E[11,6]=11
E[11,7]=0.14
E[11,8]=1200
E[11,9]=1000

#Element 9 (XPS)
E[4,1]=14
E[4,2]=0.68
E[4,3]=0.08
E[4,4]=0.76
E[4,5]=1.08
E[4,6]=4
E[4,7]=0.04
E[4,8]=30
E[4,9]=840

#Element 10 (Concrete)
E[9,1]=12
E[9,2]=0.76
E[9,3]=1
E[9,4]=1.4
E[9,5]=1.08
E[9,6]=9
E[9,7]=1.7
E[9,8]=2500
E[9,9]=1000

#Element 11 (XPS)
E[10,1]=14
E[10,2]=0.07
E[10,3]=1.08
E[10,4]=0.15
E[10,5]=1.77
E[10,6]=10
E[10,7]=0.04
E[10,8]=30
E[10,9]=840

#Element 12 (Reinforced concrete)
E[12,1]=13
E[12,2]=0.16
E[12,3]=1.08
E[12,4]=0.36
E[12,5]=1.77
E[12,6]=12
E[12,7]=1.7
E[12,8]=2500
E[12,9]=1000

#Element 13 (PVC hydroinsulation)
E[13,1]=15
E[13,2]=0.36
E[13,3]=1.08
E[13,4]=0.37
E[13,5]=1.27
E[13,6]=13
E[13,7]=0.14
E[13,8]=1200
E[13,9]=1000

#Element 14 (PVC hydroinsulation)
E[14,1]=15
E[14,2]=0.37
E[14,3]=1.08
E[14,4]=1.4
E[14,5]=1.09
E[14,6]=14
E[14,7]=0.14
E[14,8]=1200
E[14,9]=1000

#Element 15 (Mineral wool)
E[15,1]=11
E[15,2]=0.37
E[15,3]=1.09
E[15,4]=1.40
E[15,5]=1.19
E[15,6]=15
E[15,7]=0.035
E[15,8]=100
E[15,9]=1030

#Element 16 (Cement screed)
E[16,1]=16
E[16,2]=0.37
E[16,3]=1.19
E[16,4]=1.4
E[16,5]=1.27
E[16,6]=16
E[16,7]=1.6
E[16,8]=2000
E[16,9]=1100

##############################
#Boundary condition materials#
##############################

#Element 17 (Constant temperature soil)
E[17,1]=100
E[17,2]=0
E[17,3]=-dl
E[17,4]=0.76
E[17,5]=0
E[17,6]=17
E[17,7]=(1000)*2/dl #Assign as (h)*dl/2 if h is convection coef.
E[17,8]=5
E[17,9]=1

#Element 18 (Variable temperature soil 0-108 cm)
E[18,1]=101
E[18,2]=-dl
E[18,3]=0
E[18,4]=0
E[18,5]=1.08
E[18,6]=18
E[18,7]=(1000)*2/dl #Assign as (h)*dl/2 if h is convection coef.
E[18,8]=5
E[18,9]=1

#Element 19 (Variable temperature soil 108-123 cm)
E[19,1]=102
E[19,2]=0.07-dl
E[19,3]=1.08
E[19,4]=0.07
E[19,5]=1.23
E[19,6]=19
E[19,7]=(1000)*2/dl #Assign as (h)*dl/2 if h is convection coef.
E[19,8]=5
E[19,9]=1

#Element 20 (Environmental conditions)
E[20,1]=103
E[20,2]=0.07-dl
E[20,3]=1.23
E[20,4]=0.07
E[20,5]=1.77
E[20,6]=20
E[20,7]=(25)*2/dl #Assign as (h)*dl/2 if h is convection coef.
E[20,8]=5
E[20,9]=1

#Element 21 (Adiabatic boundary conditions)
E[21,1]=104
E[21,2]=0.07
E[21,3]=1.77
E[21,4]=0.36
E[21,5]=1.77+dl
E[21,6]=21
E[21,7]=(1)*2/dl #Assign as (h)*dl/2 if h is convection coef.
E[21,8]=1
E[21,9]=-1

#Element 22 (Internal conditions)
E[22,1]=105
E[22,2]=0.36
E[22,3]=1.27
E[22,4]=0.36+dl
E[22,5]=1.77
E[22,6]=22
E[22,7]=(8)*2/dl #Assign as (h)*dl/2 if h is convection coef.
E[22,8]=22
E[22,9]=1

#Element 23 (Internal conditions)
E[23,1]=106
E[23,2]=0.36+dl
E[23,3]=1.27
E[23,4]=1.40
E[23,5]=1.27+dl
E[23,6]=23
E[23,7]=(8)*2/dl #Assign as (h)*dl/2 if h is convection coef.
E[23,8]=22
E[23,9]=1

#Element 24 (Adiabatic boundary conditions)
E[24,1]=107
E[24,2]=1.40
E[24,3]=1
E[24,4]=1.40+dl
E[24,5]=1.27
E[24,6]=24
E[24,7]=(1)*2/dl #Assign as (h)*dl/2 if h is convection coef.
E[24,8]=1
E[24,9]=-1

#Element 25 (Constant temperature soil)
E[25,1]=108
E[25,2]=0.76+dl
E[25,3]=1-dl
E[25,4]=1.40
E[25,5]=1
E[25,6]=25
E[25,7]=(1000)*2/dl #Assign as (h)*dl/2 if h is convection coef.
E[25,8]=5
E[25,9]=1

#Element 26 (Variable temperature soil 0-100 cm)
E[26,1]=109
E[26,2]=0.76
E[26,3]=0
E[26,4]=0.76+dl
E[26,5]=1
E[26,6]=26
E[26,7]=(1000)*2/dl #Assign as (h)*dl/2 if h is convection coef.
E[26,8]=5
E[26,9]=1

#Element 27 (Constant temperature soil)
E[27,1]=110
E[27,2]=0
E[27,3]=1.08
E[27,4]=0.07-dl
E[27,5]=1.08+dl
E[27,6]=27
E[27,7]=(1000)*2/dl #Assign as (h)*dl/2 if h is convection coef.
E[27,8]=5
E[27,9]=1


text:
include(joinpath(dirname(@__FILE__), "..", "KABSCH", "kabsch.jl"))
include(joinpath(dirname(@__FILE__), "..", "PDB", "pdb.jl"))
include(joinpath(dirname(@__FILE__), "..", "PLOT", "plot.jl"))

using Kabsch
using PDB
using MatrixPlot

structure = get_structure("examples/data/2HHB.pdb")
chains = get_chains(structure)

alpha_1 = chains[1]
alpha_2 = chains[3]

beta_1 = chains[2]
beta_2 = chains[4]

#matrices_plot(alpha_1, alpha_2)
#matrices_plot(beta_1, beta_2)

#matrices_plot(alpha_1, kabsch(alpha_1, alpha_2))
matrices_plot(beta_1, kabsch(beta_1, beta_2))

ext: jl


text:
#----------------------------------------
#-- Import or declare all the tools and types
#--  to represent a taxi problem and its solutions
#----------------------------------------

typealias Network   DiGraph
typealias Road      Edge

# Implementations of Networks must have a "graph" element,
#and "ShortestPath" object, "generateCustomers" and "generateTaxis" methods.

immutable Customer
  id::Int
  orig::Int
  dest::Int
  tcall::Int
  tmin::Int
  tmaxt::Int
  tmax::Int
  price::Float64
end

immutable Taxi
  id::Int
  initPos::Int
end

#------------------------
#-- TaxiProblem: All data needed for simulation
#-- has to include:
#---- network::Network (graph of city)
#---- roadTime::SparseMatrixCSC{Int,Int} Time to cross a road
#---- roadCost::SparseMatrixCSC{Float64,Int} Cost to cross a road
#---- custs::Array{Customer,1} (customers)
#---- taxis::Array{Taxi,1} (taxis)
#---- nTime::Int number of timesteps
#---- waitingCost::Float64 cost of waiting
#---- sp::ShortPaths Shortest paths (time, cost and structure)

abstract TaxiProblem

#Represent the assignement of a customer
#taxi == 0 <=> unassigned
immutable CustomerAssignment
  id::Int
  timeIn::Int
  timeOut::Int
end

#Represent the actions of a taxi during a simulation
#at each time, the road on which the taxi is, and the __ordered__ list of its
#taken customers
immutable TaxiActions
  path::Vector{Edge}
  custs::Vector{ CustomerAssignment} #customer in order: (id, pickup, dropoff)
end

#Represent the solution of a simulation (paths of taxis, customers, and cost)
immutable TaxiSolution
  taxis::Array{TaxiActions, 1}
  notTaken::BitVector
  cost::Float64
end

immutable ShortPaths
  traveltime::Array{Float64,2}
  travelcost::Array{Float64,2}
  previous::Array{Int,2}
end

ShortPaths() = ShortPaths( Array(Float64, (0,0)), Array(Float64, (0,0)), Array(Int, (0,0)))

immutable RealPaths
  previous::Array{Int,2}
  traveltime::Array{Float64,2}
  real_destinations::Array{Int, 2}
end

# define heap entry data type
immutable DijkstraEntry{Float64}
  vertex::Int
  dist::Float64
  cost::Float64
end

# define appropriate comparators for heap entries
<(e1::DijkstraEntry, e2::DijkstraEntry) = e1.dist < e2.dist
Base.isless(e1::DijkstraEntry, e2::DijkstraEntry) = e1.dist < e2.dist

#Represent an assigned customer (not fixed time-windows)
type AssignedCustomer
  id::Int
  tInf::Int
  tSup::Int
end

#represent a time-window solution
type IntervalSolution
  custs::Vector{Vector{AssignedCustomer}}
  notTaken::BitVector
  cost::Float64
end

max_stars_repo_name: sebmart/NYC-timing

max_issues_repo_name: sebmart/NYC-timing

max_forks_repo_name: sebmart/NYC-timing


text:
# This file is auto-generated by AWSMetadata.jl
using AWS
using AWS.AWSServices: codebuild
using AWS.Compat
using AWS.UUIDs

"""
    batch_delete_builds(ids)
    batch_delete_builds(ids, params::Dict{String,<:Any})

Deletes one or more builds.

# Arguments
- `ids`: The IDs of the builds to delete.

"""
batch_delete_builds(ids; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("BatchDeleteBuilds", Dict{String, Any}("ids"=>ids); aws_config=aws_config)
batch_delete_builds(ids, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("BatchDeleteBuilds", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("ids"=>ids), params)); aws_config=aws_config)

"""
    batch_get_build_batches(ids)
    batch_get_build_batches(ids, params::Dict{String,<:Any})

Retrieves information about one or more batch builds.

# Arguments
- `ids`: An array that contains the batch build identifiers to retrieve.

"""
batch_get_build_batches(ids; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("BatchGetBuildBatches", Dict{String, Any}("ids"=>ids); aws_config=aws_config)
batch_get_build_batches(ids, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("BatchGetBuildBatches", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("ids"=>ids), params)); aws_config=aws_config)

"""
    batch_get_builds(ids)
    batch_get_builds(ids, params::Dict{String,<:Any})

Gets information about one or more builds.

# Arguments
- `ids`: The IDs of the builds.

"""
batch_get_builds(ids; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("BatchGetBuilds", Dict{String, Any}("ids"=>ids); aws_config=aws_config)
batch_get_builds(ids, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("BatchGetBuilds", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("ids"=>ids), params)); aws_config=aws_config)

"""
    batch_get_projects(names)
    batch_get_projects(names, params::Dict{String,<:Any})

Gets information about one or more build projects.

# Arguments
- `names`: The names or ARNs of the build projects. To get information about a project
  shared with your AWS account, its ARN must be specified. You cannot specify a shared
  project using its name.

"""
batch_get_projects(names; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("BatchGetProjects", Dict{String, Any}("names"=>names); aws_config=aws_config)
batch_get_projects(names, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("BatchGetProjects", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("names"=>names), params)); aws_config=aws_config)

"""
    batch_get_report_groups(report_group_arns)
    batch_get_report_groups(report_group_arns, params::Dict{String,<:Any})

 Returns an array of report groups.

# Arguments
- `report_group_arns`:  An array of report group ARNs that identify the report groups to
  return.

"""
batch_get_report_groups(reportGroupArns; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("BatchGetReportGroups", Dict{String, Any}("reportGroupArns"=>reportGroupArns); aws_config=aws_config)
batch_get_report_groups(reportGroupArns, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("BatchGetReportGroups", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("reportGroupArns"=>reportGroupArns), params)); aws_config=aws_config)

"""
    batch_get_reports(report_arns)
    batch_get_reports(report_arns, params::Dict{String,<:Any})

 Returns an array of reports.

# Arguments
- `report_arns`:  An array of ARNs that identify the Report objects to return.

"""
batch_get_reports(reportArns; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("BatchGetReports", Dict{String, Any}("reportArns"=>reportArns); aws_config=aws_config)
batch_get_reports(reportArns, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("BatchGetReports", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("reportArns"=>reportArns), params)); aws_config=aws_config)

"""
    create_project(artifacts, environment, name, service_role, source)
    create_project(artifacts, environment, name, service_role, source, params::Dict{String,<:Any})

Creates a build project.

# Arguments
- `artifacts`: Information about the build output artifacts for the build project.
- `environment`: Information about the build environment for the build project.
- `name`: The name of the build project.
- `service_role`: The ARN of the AWS Identity and Access Management (IAM) role that enables
  AWS CodeBuild to interact with dependent AWS services on behalf of the AWS account.
- `source`: Information about the build input source code for the build project.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"badgeEnabled"`: Set this to true to generate a publicly accessible URL for your
  project's build badge.
- `"buildBatchConfig"`: A ProjectBuildBatchConfig object that defines the batch build
  options for the project.
- `"cache"`: Stores recently used information so that it can be quickly accessed at a later
  time.
- `"concurrentBuildLimit"`: The maximum number of concurrent builds that are allowed for
  this project. New builds are only started if the current number of builds is less than or
  equal to this limit. If the current build count meets this limit, new builds are throttled
  and are not run.
- `"description"`: A description that makes the build project easy to identify.
- `"encryptionKey"`: The AWS Key Management Service (AWS KMS) customer master key (CMK) to
  be used for encrypting the build output artifacts.  You can use a cross-account KMS key to
  encrypt the build output artifacts if your service role has permission to that key.   You
  can specify either the Amazon Resource Name (ARN) of the CMK or, if available, the CMK's
  alias (using the format alias/<alias-name>).
- `"fileSystemLocations"`:  An array of ProjectFileSystemLocation objects for a CodeBuild
  build project. A ProjectFileSystemLocation object specifies the identifier, location,
  mountOptions, mountPoint, and type of a file system created using Amazon Elastic File
  System.
- `"logsConfig"`: Information about logs for the build project. These can be logs in Amazon
  CloudWatch Logs, logs uploaded to a specified S3 bucket, or both.
- `"queuedTimeoutInMinutes"`: The number of minutes a build is allowed to be queued before
  it times out.
- `"secondaryArtifacts"`: An array of ProjectArtifacts objects.
- `"secondarySourceVersions"`: An array of ProjectSourceVersion objects. If
  secondarySourceVersions is specified at the build level, then they take precedence over
  these secondarySourceVersions (at the project level).
- `"secondarySources"`: An array of ProjectSource objects.
- `"sourceVersion"`: A version of the build input to be built for this project. If not
  specified, the latest version is used. If specified, it must be one of:    For AWS
  CodeCommit: the commit ID, branch, or Git tag to use.   For GitHub: the commit ID, pull
  request ID, branch name, or tag name that corresponds to the version of the source code you
  want to build. If a pull request ID is specified, it must use the format pr/pull-request-ID
  (for example pr/25). If a branch name is specified, the branch's HEAD commit ID is used. If
  not specified, the default branch's HEAD commit ID is used.   For Bitbucket: the commit ID,
  branch name, or tag name that corresponds to the version of the source code you want to
  build. If a branch name is specified, the branch's HEAD commit ID is used. If not
  specified, the default branch's HEAD commit ID is used.   For Amazon S3: the version ID of
  the object that represents the build input ZIP file to use.   If sourceVersion is specified
  at the build level, then that version takes precedence over this sourceVersion (at the
  project level).  For more information, see Source Version Sample with CodeBuild in the AWS
  CodeBuild User Guide.
- `"tags"`: A list of tag key and value pairs associated with this build project. These
  tags are available for use by AWS services that support AWS CodeBuild build project tags.
- `"timeoutInMinutes"`: How long, in minutes, from 5 to 480 (8 hours), for AWS CodeBuild to
  wait before it times out any build that has not been marked as completed. The default is 60
  minutes.
- `"vpcConfig"`: VpcConfig enables AWS CodeBuild to access resources in an Amazon VPC.
"""
create_project(artifacts, environment, name, serviceRole, source; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("CreateProject", Dict{String, Any}("artifacts"=>artifacts, "environment"=>environment, "name"=>name, "serviceRole"=>serviceRole, "source"=>source); aws_config=aws_config)
create_project(artifacts, environment, name, serviceRole, source, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("CreateProject", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("artifacts"=>artifacts, "environment"=>environment, "name"=>name, "serviceRole"=>serviceRole, "source"=>source), params)); aws_config=aws_config)

"""
    create_report_group(export_config, name, type)
    create_report_group(export_config, name, type, params::Dict{String,<:Any})

 Creates a report group. A report group contains a collection of reports.

# Arguments
- `export_config`:  A ReportExportConfig object that contains information about where the
  report group test results are exported.
- `name`:  The name of the report group.
- `type`:  The type of report group.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"tags"`:  A list of tag key and value pairs associated with this report group.  These
  tags are available for use by AWS services that support AWS CodeBuild report group tags.
"""
create_report_group(exportConfig, name, type; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("CreateReportGroup", Dict{String, Any}("exportConfig"=>exportConfig, "name"=>name, "type"=>type); aws_config=aws_config)
create_report_group(exportConfig, name, type, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("CreateReportGroup", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("exportConfig"=>exportConfig, "name"=>name, "type"=>type), params)); aws_config=aws_config)

"""
    create_webhook(project_name)
    create_webhook(project_name, params::Dict{String,<:Any})

For an existing AWS CodeBuild build project that has its source code stored in a GitHub or
Bitbucket repository, enables AWS CodeBuild to start rebuilding the source code every time
a code change is pushed to the repository.  If you enable webhooks for an AWS CodeBuild
project, and the project is used as a build step in AWS CodePipeline, then two identical
builds are created for each commit. One build is triggered through webhooks, and one
through AWS CodePipeline. Because billing is on a per-build basis, you are billed for both
builds. Therefore, if you are using AWS CodePipeline, we recommend that you disable
webhooks in AWS CodeBuild. In the AWS CodeBuild console, clear the Webhook box. For more
information, see step 5 in Change a Build Project's Settings.

# Arguments
- `project_name`: The name of the AWS CodeBuild project.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"branchFilter"`: A regular expression used to determine which repository branches are
  built when a webhook is triggered. If the name of a branch matches the regular expression,
  then it is built. If branchFilter is empty, then all branches are built.  It is recommended
  that you use filterGroups instead of branchFilter.
- `"buildType"`: Specifies the type of build this webhook will trigger.
- `"filterGroups"`: An array of arrays of WebhookFilter objects used to determine which
  webhooks are triggered. At least one WebhookFilter in the array must specify EVENT as its
  type.  For a build to be triggered, at least one filter group in the filterGroups array
  must pass. For a filter group to pass, each of its filters must pass.
"""
create_webhook(projectName; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("CreateWebhook", Dict{String, Any}("projectName"=>projectName); aws_config=aws_config)
create_webhook(projectName, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("CreateWebhook", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("projectName"=>projectName), params)); aws_config=aws_config)

"""
    delete_build_batch(id)
    delete_build_batch(id, params::Dict{String,<:Any})

Deletes a batch build.

# Arguments
- `id`: The identifier of the batch build to delete.

"""
delete_build_batch(id; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("DeleteBuildBatch", Dict{String, Any}("id"=>id); aws_config=aws_config)
delete_build_batch(id, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("DeleteBuildBatch", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("id"=>id), params)); aws_config=aws_config)

"""
    delete_project(name)
    delete_project(name, params::Dict{String,<:Any})

 Deletes a build project. When you delete a project, its builds are not deleted.

# Arguments
- `name`: The name of the build project.

"""
delete_project(name; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("DeleteProject", Dict{String, Any}("name"=>name); aws_config=aws_config)
delete_project(name, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("DeleteProject", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("name"=>name), params)); aws_config=aws_config)

"""
    delete_report(arn)
    delete_report(arn, params::Dict{String,<:Any})

 Deletes a report.

# Arguments
- `arn`:  The ARN of the report to delete.

"""
delete_report(arn; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("DeleteReport", Dict{String, Any}("arn"=>arn); aws_config=aws_config)
delete_report(arn, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("DeleteReport", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("arn"=>arn), params)); aws_config=aws_config)

"""
    delete_report_group(arn)
    delete_report_group(arn, params::Dict{String,<:Any})

Deletes a report group. Before you delete a report group, you must delete its reports.

# Arguments
- `arn`: The ARN of the report group to delete.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"deleteReports"`: If true, deletes any reports that belong to a report group before
  deleting the report group.  If false, you must delete any reports in the report group. Use
  ListReportsForReportGroup to get the reports in a report group. Use DeleteReport to delete
  the reports. If you call DeleteReportGroup for a report group that contains one or more
  reports, an exception is thrown.
"""
delete_report_group(arn; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("DeleteReportGroup", Dict{String, Any}("arn"=>arn); aws_config=aws_config)
delete_report_group(arn, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("DeleteReportGroup", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("arn"=>arn), params)); aws_config=aws_config)

"""
    delete_resource_policy(resource_arn)
    delete_resource_policy(resource_arn, params::Dict{String,<:Any})

 Deletes a resource policy that is identified by its resource ARN.

# Arguments
- `resource_arn`:  The ARN of the resource that is associated with the resource policy.

"""
delete_resource_policy(resourceArn; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("DeleteResourcePolicy", Dict{String, Any}("resourceArn"=>resourceArn); aws_config=aws_config)
delete_resource_policy(resourceArn, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("DeleteResourcePolicy", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("resourceArn"=>resourceArn), params)); aws_config=aws_config)

"""
    delete_source_credentials(arn)
    delete_source_credentials(arn, params::Dict{String,<:Any})

 Deletes a set of GitHub, GitHub Enterprise, or Bitbucket source credentials.

# Arguments
- `arn`:  The Amazon Resource Name (ARN) of the token.

"""
delete_source_credentials(arn; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("DeleteSourceCredentials", Dict{String, Any}("arn"=>arn); aws_config=aws_config)
delete_source_credentials(arn, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("DeleteSourceCredentials", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("arn"=>arn), params)); aws_config=aws_config)

"""
    delete_webhook(project_name)
    delete_webhook(project_name, params::Dict{String,<:Any})

For an existing AWS CodeBuild build project that has its source code stored in a GitHub or
Bitbucket repository, stops AWS CodeBuild from rebuilding the source code every time a code
change is pushed to the repository.

# Arguments
- `project_name`: The name of the AWS CodeBuild project.

"""
delete_webhook(projectName; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("DeleteWebhook", Dict{String, Any}("projectName"=>projectName); aws_config=aws_config)
delete_webhook(projectName, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("DeleteWebhook", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("projectName"=>projectName), params)); aws_config=aws_config)

"""
    describe_code_coverages(report_arn)
    describe_code_coverages(report_arn, params::Dict{String,<:Any})

Retrieves one or more code coverage reports.

# Arguments
- `report_arn`:  The ARN of the report for which test cases are returned.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"maxLineCoveragePercentage"`: The maximum line coverage percentage to report.
- `"maxResults"`: The maximum number of results to return.
- `"minLineCoveragePercentage"`: The minimum line coverage percentage to report.
- `"nextToken"`: The nextToken value returned from a previous call to
  DescribeCodeCoverages. This specifies the next item to return. To return the beginning of
  the list, exclude this parameter.
- `"sortBy"`: Specifies how the results are sorted. Possible values are:  FILE_PATH  The
  results are sorted by file path.  LINE_COVERAGE_PERCENTAGE  The results are sorted by the
  percentage of lines that are covered.
- `"sortOrder"`: Specifies if the results are sorted in ascending or descending order.
"""
describe_code_coverages(reportArn; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("DescribeCodeCoverages", Dict{String, Any}("reportArn"=>reportArn); aws_config=aws_config)
describe_code_coverages(reportArn, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("DescribeCodeCoverages", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("reportArn"=>reportArn), params)); aws_config=aws_config)

"""
    describe_test_cases(report_arn)
    describe_test_cases(report_arn, params::Dict{String,<:Any})

 Returns a list of details about test cases for a report.

# Arguments
- `report_arn`:  The ARN of the report for which test cases are returned.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"filter"`:  A TestCaseFilter object used to filter the returned reports.
- `"maxResults"`:  The maximum number of paginated test cases returned per response. Use
  nextToken to iterate pages in the list of returned TestCase objects. The default value is
  100.
- `"nextToken"`:  During a previous call, the maximum number of items that can be returned
  is the value specified in maxResults. If there more items in the list, then a unique string
  called a nextToken is returned. To get the next batch of items in the list, call this
  operation again, adding the next token to the call. To get all of the items in the list,
  keep calling this operation with each subsequent next token that is returned, until no more
  next tokens are returned.
"""
describe_test_cases(reportArn; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("DescribeTestCases", Dict{String, Any}("reportArn"=>reportArn); aws_config=aws_config)
describe_test_cases(reportArn, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("DescribeTestCases", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("reportArn"=>reportArn), params)); aws_config=aws_config)

"""
    get_report_group_trend(report_group_arn, trend_field)
    get_report_group_trend(report_group_arn, trend_field, params::Dict{String,<:Any})

Analyzes and accumulates test report values for the specified test reports.

# Arguments
- `report_group_arn`: The ARN of the report group that contains the reports to analyze.
- `trend_field`: The test report value to accumulate. This must be one of the following
  values:  Test reports:   DURATION  Accumulate the test run times for the specified reports.
   PASS_RATE  Accumulate the percentage of tests that passed for the specified test reports.
  TOTAL  Accumulate the total number of tests for the specified test reports.      Code
  coverage reports:   BRANCH_COVERAGE  Accumulate the branch coverage percentages for the
  specified test reports.  BRANCHES_COVERED  Accumulate the branches covered values for the
  specified test reports.  BRANCHES_MISSED  Accumulate the branches missed values for the
  specified test reports.  LINE_COVERAGE  Accumulate the line coverage percentages for the
  specified test reports.  LINES_COVERED  Accumulate the lines covered values for the
  specified test reports.  LINES_MISSED  Accumulate the lines not covered values for the
  specified test reports.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"numOfReports"`: The number of reports to analyze. This operation always retrieves the
  most recent reports. If this parameter is omitted, the most recent 100 reports are analyzed.
"""
get_report_group_trend(reportGroupArn, trendField; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("GetReportGroupTrend", Dict{String, Any}("reportGroupArn"=>reportGroupArn, "trendField"=>trendField); aws_config=aws_config)
get_report_group_trend(reportGroupArn, trendField, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("GetReportGroupTrend", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("reportGroupArn"=>reportGroupArn, "trendField"=>trendField), params)); aws_config=aws_config)

"""
    get_resource_policy(resource_arn)
    get_resource_policy(resource_arn, params::Dict{String,<:Any})

 Gets a resource policy that is identified by its resource ARN.

# Arguments
- `resource_arn`:  The ARN of the resource that is associated with the resource policy.

"""
get_resource_policy(resourceArn; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("GetResourcePolicy", Dict{String, Any}("resourceArn"=>resourceArn); aws_config=aws_config)
get_resource_policy(resourceArn, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("GetResourcePolicy", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("resourceArn"=>resourceArn), params)); aws_config=aws_config)

"""
    import_source_credentials(auth_type, server_type, token)
    import_source_credentials(auth_type, server_type, token, params::Dict{String,<:Any})

 Imports the source repository credentials for an AWS CodeBuild project that has its source
code stored in a GitHub, GitHub Enterprise, or Bitbucket repository.

# Arguments
- `auth_type`:  The type of authentication used to connect to a GitHub, GitHub Enterprise,
  or Bitbucket repository. An OAUTH connection is not supported by the API and must be
  created using the AWS CodeBuild console.
- `server_type`:  The source provider used for this project.
- `token`:  For GitHub or GitHub Enterprise, this is the personal access token. For
  Bitbucket, this is the app password.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"shouldOverwrite"`:  Set to false to prevent overwriting the repository source
  credentials. Set to true to overwrite the repository source credentials. The default value
  is true.
- `"username"`:  The Bitbucket username when the authType is BASIC_AUTH. This parameter is
  not valid for other types of source providers or connections.
"""
import_source_credentials(authType, serverType, token; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("ImportSourceCredentials", Dict{String, Any}("authType"=>authType, "serverType"=>serverType, "token"=>token); aws_config=aws_config)
import_source_credentials(authType, serverType, token, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("ImportSourceCredentials", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("authType"=>authType, "serverType"=>serverType, "token"=>token), params)); aws_config=aws_config)

"""
    invalidate_project_cache(project_name)
    invalidate_project_cache(project_name, params::Dict{String,<:Any})

Resets the cache for a project.

# Arguments
- `project_name`: The name of the AWS CodeBuild build project that the cache is reset for.

"""
invalidate_project_cache(projectName; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("InvalidateProjectCache", Dict{String, Any}("projectName"=>projectName); aws_config=aws_config)
invalidate_project_cache(projectName, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("InvalidateProjectCache", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("projectName"=>projectName), params)); aws_config=aws_config)

"""
    list_build_batches()
    list_build_batches(params::Dict{String,<:Any})

Retrieves the identifiers of your build batches in the current region.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"filter"`: A BuildBatchFilter object that specifies the filters for the search.
- `"maxResults"`: The maximum number of results to return.
- `"nextToken"`: The nextToken value returned from a previous call to ListBuildBatches.
  This specifies the next item to return. To return the beginning of the list, exclude this
  parameter.
- `"sortOrder"`: Specifies the sort order of the returned items. Valid values include:
  ASCENDING: List the batch build identifiers in ascending order by identifier.
  DESCENDING: List the batch build identifiers in descending order by identifier.
"""
list_build_batches(; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("ListBuildBatches"; aws_config=aws_config)
list_build_batches(params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("ListBuildBatches", params; aws_config=aws_config)

"""
    list_build_batches_for_project()
    list_build_batches_for_project(params::Dict{String,<:Any})

Retrieves the identifiers of the build batches for a specific project.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"filter"`: A BuildBatchFilter object that specifies the filters for the search.
- `"maxResults"`: The maximum number of results to return.
- `"nextToken"`: The nextToken value returned from a previous call to
  ListBuildBatchesForProject. This specifies the next item to return. To return the beginning
  of the list, exclude this parameter.
- `"projectName"`: The name of the project.
- `"sortOrder"`: Specifies the sort order of the returned items. Valid values include:
  ASCENDING: List the batch build identifiers in ascending order by identifier.
  DESCENDING: List the batch build identifiers in descending order by identifier.
"""
list_build_batches_for_project(; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("ListBuildBatchesForProject"; aws_config=aws_config)
list_build_batches_for_project(params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("ListBuildBatchesForProject", params; aws_config=aws_config)

"""
    list_builds()
    list_builds(params::Dict{String,<:Any})

Gets a list of build IDs, with each build ID representing a single build.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"nextToken"`: During a previous call, if there are more than 100 items in the list, only
  the first 100 items are returned, along with a unique string called a nextToken. To get the
  next batch of items in the list, call this operation again, adding the next token to the
  call. To get all of the items in the list, keep calling this operation with each subsequent
  next token that is returned, until no more next tokens are returned.
- `"sortOrder"`: The order to list build IDs. Valid values include:    ASCENDING: List the
  build IDs in ascending order by build ID.    DESCENDING: List the build IDs in descending
  order by build ID.
"""
list_builds(; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("ListBuilds"; aws_config=aws_config)
list_builds(params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("ListBuilds", params; aws_config=aws_config)

"""
    list_builds_for_project(project_name)
    list_builds_for_project(project_name, params::Dict{String,<:Any})

Gets a list of build identifiers for the specified build project, with each build
identifier representing a single build.

# Arguments
- `project_name`: The name of the AWS CodeBuild project.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"nextToken"`: During a previous call, if there are more than 100 items in the list, only
  the first 100 items are returned, along with a unique string called a nextToken. To get the
  next batch of items in the list, call this operation again, adding the next token to the
  call. To get all of the items in the list, keep calling this operation with each subsequent
  next token that is returned, until no more next tokens are returned.
- `"sortOrder"`: The order to list results in. The results are sorted by build number, not
  the build identifier. Valid values include:    ASCENDING: List the build IDs in ascending
  order by build ID.    DESCENDING: List the build IDs in descending order by build ID.   If
  the project has more than 100 builds, setting the sort order will result in an error.
"""
list_builds_for_project(projectName; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("ListBuildsForProject", Dict{String, Any}("projectName"=>projectName); aws_config=aws_config)
list_builds_for_project(projectName, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("ListBuildsForProject", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("projectName"=>projectName), params)); aws_config=aws_config)

"""
    list_curated_environment_images()
    list_curated_environment_images(params::Dict{String,<:Any})

Gets information about Docker images that are managed by AWS CodeBuild.

"""
list_curated_environment_images(; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("ListCuratedEnvironmentImages"; aws_config=aws_config)
list_curated_environment_images(params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("ListCuratedEnvironmentImages", params; aws_config=aws_config)

"""
    list_projects()
    list_projects(params::Dict{String,<:Any})

Gets a list of build project names, with each build project name representing a single
build project.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"nextToken"`: During a previous call, if there are more than 100 items in the list, only
  the first 100 items are returned, along with a unique string called a nextToken. To get the
  next batch of items in the list, call this operation again, adding the next token to the
  call. To get all of the items in the list, keep calling this operation with each subsequent
  next token that is returned, until no more next tokens are returned.
- `"sortBy"`: The criterion to be used to list build project names. Valid values include:
   CREATED_TIME: List based on when each build project was created.    LAST_MODIFIED_TIME:
  List based on when information about each build project was last changed.    NAME: List
  based on each build project's name.   Use sortOrder to specify in what order to list the
  build project names based on the preceding criteria.
- `"sortOrder"`: The order in which to list build projects. Valid values include:
  ASCENDING: List in ascending order.    DESCENDING: List in descending order.   Use sortBy
  to specify the criterion to be used to list build project names.
"""
list_projects(; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("ListProjects"; aws_config=aws_config)
list_projects(params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("ListProjects", params; aws_config=aws_config)

"""
    list_report_groups()
    list_report_groups(params::Dict{String,<:Any})

 Gets a list ARNs for the report groups in the current AWS account.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"maxResults"`:  The maximum number of paginated report groups returned per response. Use
  nextToken to iterate pages in the list of returned ReportGroup objects. The default value
  is 100.
- `"nextToken"`:  During a previous call, the maximum number of items that can be returned
  is the value specified in maxResults. If there more items in the list, then a unique string
  called a nextToken is returned. To get the next batch of items in the list, call this
  operation again, adding the next token to the call. To get all of the items in the list,
  keep calling this operation with each subsequent next token that is returned, until no more
  next tokens are returned.
- `"sortBy"`:  The criterion to be used to list build report groups. Valid values include:
     CREATED_TIME: List based on when each report group was created.    LAST_MODIFIED_TIME:
  List based on when each report group was last changed.    NAME: List based on each report
  group's name.
- `"sortOrder"`:  Used to specify the order to sort the list of returned report groups.
  Valid values are ASCENDING and DESCENDING.
"""
list_report_groups(; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("ListReportGroups"; aws_config=aws_config)
list_report_groups(params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("ListReportGroups", params; aws_config=aws_config)

"""
    list_reports()
    list_reports(params::Dict{String,<:Any})

 Returns a list of ARNs for the reports in the current AWS account.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"filter"`:  A ReportFilter object used to filter the returned reports.
- `"maxResults"`:  The maximum number of paginated reports returned per response. Use
  nextToken to iterate pages in the list of returned Report objects. The default value is
  100.
- `"nextToken"`:  During a previous call, the maximum number of items that can be returned
  is the value specified in maxResults. If there more items in the list, then a unique string
  called a nextToken is returned. To get the next batch of items in the list, call this
  operation again, adding the next token to the call. To get all of the items in the list,
  keep calling this operation with each subsequent next token that is returned, until no more
  next tokens are returned.
- `"sortOrder"`:  Specifies the sort order for the list of returned reports. Valid values
  are:     ASCENDING: return reports in chronological order based on their creation date.
  DESCENDING: return reports in the reverse chronological order based on their creation date.

"""
list_reports(; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("ListReports"; aws_config=aws_config)
list_reports(params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("ListReports", params; aws_config=aws_config)

"""
    list_reports_for_report_group(report_group_arn)
    list_reports_for_report_group(report_group_arn, params::Dict{String,<:Any})

 Returns a list of ARNs for the reports that belong to a ReportGroup.

# Arguments
- `report_group_arn`:  The ARN of the report group for which you want to return report
  ARNs.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"filter"`:  A ReportFilter object used to filter the returned reports.
- `"maxResults"`:  The maximum number of paginated reports in this report group returned
  per response. Use nextToken to iterate pages in the list of returned Report objects. The
  default value is 100.
- `"nextToken"`:  During a previous call, the maximum number of items that can be returned
  is the value specified in maxResults. If there more items in the list, then a unique string
  called a nextToken is returned. To get the next batch of items in the list, call this
  operation again, adding the next token to the call. To get all of the items in the list,
  keep calling this operation with each subsequent next token that is returned, until no more
  next tokens are returned.
- `"sortOrder"`:  Use to specify whether the results are returned in ascending or
  descending order.
"""
list_reports_for_report_group(reportGroupArn; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("ListReportsForReportGroup", Dict{String, Any}("reportGroupArn"=>reportGroupArn); aws_config=aws_config)
list_reports_for_report_group(reportGroupArn, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("ListReportsForReportGroup", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("reportGroupArn"=>reportGroupArn), params)); aws_config=aws_config)

"""
    list_shared_projects()
    list_shared_projects(params::Dict{String,<:Any})

 Gets a list of projects that are shared with other AWS accounts or users.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"maxResults"`:  The maximum number of paginated shared build projects returned per
  response. Use nextToken to iterate pages in the list of returned Project objects. The
  default value is 100.
- `"nextToken"`:  During a previous call, the maximum number of items that can be returned
  is the value specified in maxResults. If there more items in the list, then a unique string
  called a nextToken is returned. To get the next batch of items in the list, call this
  operation again, adding the next token to the call. To get all of the items in the list,
  keep calling this operation with each subsequent next token that is returned, until no more
  next tokens are returned.
- `"sortBy"`:  The criterion to be used to list build projects shared with the current AWS
  account or user. Valid values include:     ARN: List based on the ARN.     MODIFIED_TIME:
  List based on when information about the shared project was last changed.
- `"sortOrder"`: The order in which to list shared build projects. Valid values include:
  ASCENDING: List in ascending order.    DESCENDING: List in descending order.
"""
list_shared_projects(; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("ListSharedProjects"; aws_config=aws_config)
list_shared_projects(params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("ListSharedProjects", params; aws_config=aws_config)

"""
    list_shared_report_groups()
    list_shared_report_groups(params::Dict{String,<:Any})

 Gets a list of report groups that are shared with other AWS accounts or users.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"maxResults"`:  The maximum number of paginated shared report groups per response. Use
  nextToken to iterate pages in the list of returned ReportGroup objects. The default value
  is 100.
- `"nextToken"`:  During a previous call, the maximum number of items that can be returned
  is the value specified in maxResults. If there more items in the list, then a unique string
  called a nextToken is returned. To get the next batch of items in the list, call this
  operation again, adding the next token to the call. To get all of the items in the list,
  keep calling this operation with each subsequent next token that is returned, until no more
  next tokens are returned.
- `"sortBy"`:  The criterion to be used to list report groups shared with the current AWS
  account or user. Valid values include:     ARN: List based on the ARN.     MODIFIED_TIME:
  List based on when information about the shared report group was last changed.
- `"sortOrder"`: The order in which to list shared report groups. Valid values include:
  ASCENDING: List in ascending order.    DESCENDING: List in descending order.
"""
list_shared_report_groups(; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("ListSharedReportGroups"; aws_config=aws_config)
list_shared_report_groups(params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("ListSharedReportGroups", params; aws_config=aws_config)

"""
    list_source_credentials()
    list_source_credentials(params::Dict{String,<:Any})

 Returns a list of SourceCredentialsInfo objects.

"""
list_source_credentials(; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("ListSourceCredentials"; aws_config=aws_config)
list_source_credentials(params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("ListSourceCredentials", params; aws_config=aws_config)

"""
    put_resource_policy(policy, resource_arn)
    put_resource_policy(policy, resource_arn, params::Dict{String,<:Any})

 Stores a resource policy for the ARN of a Project or ReportGroup object.

# Arguments
- `policy`:  A JSON-formatted resource policy. For more information, see Sharing a Project
  and Sharing a Report Group in the AWS CodeBuild User Guide.
- `resource_arn`:  The ARN of the Project or ReportGroup resource you want to associate
  with a resource policy.

"""
put_resource_policy(policy, resourceArn; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("PutResourcePolicy", Dict{String, Any}("policy"=>policy, "resourceArn"=>resourceArn); aws_config=aws_config)
put_resource_policy(policy, resourceArn, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("PutResourcePolicy", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("policy"=>policy, "resourceArn"=>resourceArn), params)); aws_config=aws_config)

"""
    retry_build()
    retry_build(params::Dict{String,<:Any})

Restarts a build.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"id"`: Specifies the identifier of the build to restart.
- `"idempotencyToken"`: A unique, case sensitive identifier you provide to ensure the
  idempotency of the RetryBuild request. The token is included in the RetryBuild request and
  is valid for five minutes. If you repeat the RetryBuild request with the same token, but
  change a parameter, AWS CodeBuild returns a parameter mismatch error.
"""
retry_build(; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("RetryBuild"; aws_config=aws_config)
retry_build(params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("RetryBuild", params; aws_config=aws_config)

"""
    retry_build_batch()
    retry_build_batch(params::Dict{String,<:Any})

Restarts a failed batch build. Only batch builds that have failed can be retried.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"id"`: Specifies the identifier of the batch build to restart.
- `"idempotencyToken"`: A unique, case sensitive identifier you provide to ensure the
  idempotency of the RetryBuildBatch request. The token is included in the RetryBuildBatch
  request and is valid for five minutes. If you repeat the RetryBuildBatch request with the
  same token, but change a parameter, AWS CodeBuild returns a parameter mismatch error.
- `"retryType"`: Specifies the type of retry to perform.
"""
retry_build_batch(; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("RetryBuildBatch"; aws_config=aws_config)
retry_build_batch(params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("RetryBuildBatch", params; aws_config=aws_config)

"""
    start_build(project_name)
    start_build(project_name, params::Dict{String,<:Any})

Starts running a build.

# Arguments
- `project_name`: The name of the AWS CodeBuild build project to start running a build.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"artifactsOverride"`: Build output artifact settings that override, for this build only,
  the latest ones already defined in the build project.
- `"buildStatusConfigOverride"`: Contains information that defines how the build project
  reports the build status to the source provider. This option is only used when the source
  provider is GITHUB, GITHUB_ENTERPRISE, or BITBUCKET.
- `"buildspecOverride"`: A buildspec file declaration that overrides, for this build only,
  the latest one already defined in the build project.  If this value is set, it can be
  either an inline buildspec definition, the path to an alternate buildspec file relative to
  the value of the built-in CODEBUILD_SRC_DIR environment variable, or the path to an S3
  bucket. The bucket must be in the same AWS Region as the build project. Specify the
  buildspec file using its ARN (for example,
  arn:aws:s3:::my-codebuild-sample2/buildspec.yml). If this value is not provided or is set
  to an empty string, the source code must contain a buildspec file in its root directory.
  For more information, see Buildspec File Name and Storage Location.
- `"cacheOverride"`: A ProjectCache object specified for this build that overrides the one
  defined in the build project.
- `"certificateOverride"`: The name of a certificate for this build that overrides the one
  specified in the build project.
- `"computeTypeOverride"`: The name of a compute type for this build that overrides the one
  specified in the build project.
- `"debugSessionEnabled"`: Specifies if session debugging is enabled for this build. For
  more information, see Viewing a running build in Session Manager.
- `"encryptionKeyOverride"`: The AWS Key Management Service (AWS KMS) customer master key
  (CMK) that overrides the one specified in the build project. The CMK key encrypts the build
  output artifacts.   You can use a cross-account KMS key to encrypt the build output
  artifacts if your service role has permission to that key.   You can specify either the
  Amazon Resource Name (ARN) of the CMK or, if available, the CMK's alias (using the format
  alias/<alias-name>).
- `"environmentTypeOverride"`: A container type for this build that overrides the one
  specified in the build project.
- `"environmentVariablesOverride"`: A set of environment variables that overrides, for this
  build only, the latest ones already defined in the build project.
- `"gitCloneDepthOverride"`: The user-defined depth of history, with a minimum value of 0,
  that overrides, for this build only, any previous depth of history defined in the build
  project.
- `"gitSubmodulesConfigOverride"`:  Information about the Git submodules configuration for
  this build of an AWS CodeBuild build project.
- `"idempotencyToken"`: A unique, case sensitive identifier you provide to ensure the
  idempotency of the StartBuild request. The token is included in the StartBuild request and
  is valid for 5 minutes. If you repeat the StartBuild request with the same token, but
  change a parameter, AWS CodeBuild returns a parameter mismatch error.
- `"imageOverride"`: The name of an image for this build that overrides the one specified
  in the build project.
- `"imagePullCredentialsTypeOverride"`: The type of credentials AWS CodeBuild uses to pull
  images in your build. There are two valid values:   CODEBUILD  Specifies that AWS CodeBuild
  uses its own credentials. This requires that you modify your ECR repository policy to trust
  AWS CodeBuild's service principal.  SERVICE_ROLE  Specifies that AWS CodeBuild uses your
  build project's service role.    When using a cross-account or private registry image, you
  must use SERVICE_ROLE credentials. When using an AWS CodeBuild curated image, you must use
  CODEBUILD credentials.
- `"insecureSslOverride"`: Enable this flag to override the insecure SSL setting that is
  specified in the build project. The insecure SSL setting determines whether to ignore SSL
  warnings while connecting to the project source code. This override applies only if the
  build's source is GitHub Enterprise.
- `"logsConfigOverride"`:  Log settings for this build that override the log settings
  defined in the build project.
- `"privilegedModeOverride"`: Enable this flag to override privileged mode in the build
  project.
- `"queuedTimeoutInMinutesOverride"`:  The number of minutes a build is allowed to be
  queued before it times out.
- `"registryCredentialOverride"`:  The credentials for access to a private registry.
- `"reportBuildStatusOverride"`:  Set to true to report to your source provider the status
  of a build's start and completion. If you use this option with a source provider other than
  GitHub, GitHub Enterprise, or Bitbucket, an invalidInputException is thrown.  To be able to
  report the build status to the source provider, the user associated with the source
  provider must have write access to the repo. If the user does not have write access, the
  build status cannot be updated. For more information, see Source provider access in the AWS
  CodeBuild User Guide.   The status of a build triggered by a webhook is always reported to
  your source provider.
- `"secondaryArtifactsOverride"`:  An array of ProjectArtifacts objects.
- `"secondarySourcesOverride"`:  An array of ProjectSource objects.
- `"secondarySourcesVersionOverride"`:  An array of ProjectSourceVersion objects that
  specify one or more versions of the project's secondary sources to be used for this build
  only.
- `"serviceRoleOverride"`: The name of a service role for this build that overrides the one
  specified in the build project.
- `"sourceAuthOverride"`: An authorization type for this build that overrides the one
  defined in the build project. This override applies only if the build project's source is
  BitBucket or GitHub.
- `"sourceLocationOverride"`: A location that overrides, for this build, the source
  location for the one defined in the build project.
- `"sourceTypeOverride"`: A source input type, for this build, that overrides the source
  input defined in the build project.
- `"sourceVersion"`: The version of the build input to be built, for this build only. If
  not specified, the latest version is used. If specified, the contents depends on the source
  provider:  AWS CodeCommit  The commit ID, branch, or Git tag to use.  GitHub  The commit
  ID, pull request ID, branch name, or tag name that corresponds to the version of the source
  code you want to build. If a pull request ID is specified, it must use the format
  pr/pull-request-ID (for example pr/25). If a branch name is specified, the branch's HEAD
  commit ID is used. If not specified, the default branch's HEAD commit ID is used.
  Bitbucket  The commit ID, branch name, or tag name that corresponds to the version of the
  source code you want to build. If a branch name is specified, the branch's HEAD commit ID
  is used. If not specified, the default branch's HEAD commit ID is used.  Amazon S3  The
  version ID of the object that represents the build input ZIP file to use.   If
  sourceVersion is specified at the project level, then this sourceVersion (at the build
  level) takes precedence.  For more information, see Source Version Sample with CodeBuild in
  the AWS CodeBuild User Guide.
- `"timeoutInMinutesOverride"`: The number of build timeout minutes, from 5 to 480 (8
  hours), that overrides, for this build only, the latest setting already defined in the
  build project.
"""
start_build(projectName; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("StartBuild", Dict{String, Any}("projectName"=>projectName); aws_config=aws_config)
start_build(projectName, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("StartBuild", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("projectName"=>projectName), params)); aws_config=aws_config)

"""
    start_build_batch(project_name)
    start_build_batch(project_name, params::Dict{String,<:Any})

Starts a batch build for a project.

# Arguments
- `project_name`: The name of the project.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"artifactsOverride"`: An array of ProjectArtifacts objects that contains information
  about the build output artifact overrides for the build project.
- `"buildBatchConfigOverride"`: A BuildBatchConfigOverride object that contains batch build
  configuration overrides.
- `"buildTimeoutInMinutesOverride"`: Overrides the build timeout specified in the batch
  build project.
- `"buildspecOverride"`: A buildspec file declaration that overrides, for this build only,
  the latest one already defined in the build project. If this value is set, it can be either
  an inline buildspec definition, the path to an alternate buildspec file relative to the
  value of the built-in CODEBUILD_SRC_DIR environment variable, or the path to an S3 bucket.
  The bucket must be in the same AWS Region as the build project. Specify the buildspec file
  using its ARN (for example, arn:aws:s3:::my-codebuild-sample2/buildspec.yml). If this value
  is not provided or is set to an empty string, the source code must contain a buildspec file
  in its root directory. For more information, see Buildspec File Name and Storage Location.
- `"cacheOverride"`: A ProjectCache object that specifies cache overrides.
- `"certificateOverride"`: The name of a certificate for this batch build that overrides
  the one specified in the batch build project.
- `"computeTypeOverride"`: The name of a compute type for this batch build that overrides
  the one specified in the batch build project.
- `"debugSessionEnabled"`: Specifies if session debugging is enabled for this batch build.
  For more information, see Viewing a running build in Session Manager. Batch session
  debugging is not supported for matrix batch builds.
- `"encryptionKeyOverride"`: The AWS Key Management Service (AWS KMS) customer master key
  (CMK) that overrides the one specified in the batch build project. The CMK key encrypts the
  build output artifacts.  You can use a cross-account KMS key to encrypt the build output
  artifacts if your service role has permission to that key.   You can specify either the
  Amazon Resource Name (ARN) of the CMK or, if available, the CMK's alias (using the format
  alias/<alias-name>).
- `"environmentTypeOverride"`: A container type for this batch build that overrides the one
  specified in the batch build project.
- `"environmentVariablesOverride"`: An array of EnvironmentVariable objects that override,
  or add to, the environment variables defined in the batch build project.
- `"gitCloneDepthOverride"`: The user-defined depth of history, with a minimum value of 0,
  that overrides, for this batch build only, any previous depth of history defined in the
  batch build project.
- `"gitSubmodulesConfigOverride"`: A GitSubmodulesConfig object that overrides the Git
  submodules configuration for this batch build.
- `"idempotencyToken"`: A unique, case sensitive identifier you provide to ensure the
  idempotency of the StartBuildBatch request. The token is included in the StartBuildBatch
  request and is valid for five minutes. If you repeat the StartBuildBatch request with the
  same token, but change a parameter, AWS CodeBuild returns a parameter mismatch error.
- `"imageOverride"`: The name of an image for this batch build that overrides the one
  specified in the batch build project.
- `"imagePullCredentialsTypeOverride"`: The type of credentials AWS CodeBuild uses to pull
  images in your batch build. There are two valid values:   CODEBUILD  Specifies that AWS
  CodeBuild uses its own credentials. This requires that you modify your ECR repository
  policy to trust AWS CodeBuild's service principal.  SERVICE_ROLE  Specifies that AWS
  CodeBuild uses your build project's service role.    When using a cross-account or private
  registry image, you must use SERVICE_ROLE credentials. When using an AWS CodeBuild curated
  image, you must use CODEBUILD credentials.
- `"insecureSslOverride"`: Enable this flag to override the insecure SSL setting that is
  specified in the batch build project. The insecure SSL setting determines whether to ignore
  SSL warnings while connecting to the project source code. This override applies only if the
  build's source is GitHub Enterprise.
- `"logsConfigOverride"`: A LogsConfig object that override the log settings defined in the
  batch build project.
- `"privilegedModeOverride"`: Enable this flag to override privileged mode in the batch
  build project.
- `"queuedTimeoutInMinutesOverride"`: The number of minutes a batch build is allowed to be
  queued before it times out.
- `"registryCredentialOverride"`: A RegistryCredential object that overrides credentials
  for access to a private registry.
- `"reportBuildBatchStatusOverride"`: Set to true to report to your source provider the
  status of a batch build's start and completion. If you use this option with a source
  provider other than GitHub, GitHub Enterprise, or Bitbucket, an invalidInputException is
  thrown.   The status of a build triggered by a webhook is always reported to your source
  provider.
- `"secondaryArtifactsOverride"`: An array of ProjectArtifacts objects that override the
  secondary artifacts defined in the batch build project.
- `"secondarySourcesOverride"`: An array of ProjectSource objects that override the
  secondary sources defined in the batch build project.
- `"secondarySourcesVersionOverride"`: An array of ProjectSourceVersion objects that
  override the secondary source versions in the batch build project.
- `"serviceRoleOverride"`: The name of a service role for this batch build that overrides
  the one specified in the batch build project.
- `"sourceAuthOverride"`: A SourceAuth object that overrides the one defined in the batch
  build project. This override applies only if the build project's source is BitBucket or
  GitHub.
- `"sourceLocationOverride"`: A location that overrides, for this batch build, the source
  location defined in the batch build project.
- `"sourceTypeOverride"`: The source input type that overrides the source input defined in
  the batch build project.
- `"sourceVersion"`: The version of the batch build input to be built, for this build only.
  If not specified, the latest version is used. If specified, the contents depends on the
  source provider:  AWS CodeCommit  The commit ID, branch, or Git tag to use.  GitHub  The
  commit ID, pull request ID, branch name, or tag name that corresponds to the version of the
  source code you want to build. If a pull request ID is specified, it must use the format
  pr/pull-request-ID (for example pr/25). If a branch name is specified, the branch's HEAD
  commit ID is used. If not specified, the default branch's HEAD commit ID is used.
  Bitbucket  The commit ID, branch name, or tag name that corresponds to the version of the
  source code you want to build. If a branch name is specified, the branch's HEAD commit ID
  is used. If not specified, the default branch's HEAD commit ID is used.  Amazon S3  The
  version ID of the object that represents the build input ZIP file to use.   If
  sourceVersion is specified at the project level, then this sourceVersion (at the build
  level) takes precedence.  For more information, see Source Version Sample with CodeBuild in
  the AWS CodeBuild User Guide.
"""
start_build_batch(projectName; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("StartBuildBatch", Dict{String, Any}("projectName"=>projectName); aws_config=aws_config)
start_build_batch(projectName, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("StartBuildBatch", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("projectName"=>projectName), params)); aws_config=aws_config)

"""
    stop_build(id)
    stop_build(id, params::Dict{String,<:Any})

Attempts to stop running a build.

# Arguments
- `id`: The ID of the build.

"""
stop_build(id; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("StopBuild", Dict{String, Any}("id"=>id); aws_config=aws_config)
stop_build(id, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("StopBuild", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("id"=>id), params)); aws_config=aws_config)

"""
    stop_build_batch(id)
    stop_build_batch(id, params::Dict{String,<:Any})

Stops a running batch build.

# Arguments
- `id`: The identifier of the batch build to stop.

"""
stop_build_batch(id; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("StopBuildBatch", Dict{String, Any}("id"=>id); aws_config=aws_config)
stop_build_batch(id, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("StopBuildBatch", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("id"=>id), params)); aws_config=aws_config)

"""
    update_project(name)
    update_project(name, params::Dict{String,<:Any})

Changes the settings of a build project.

# Arguments
- `name`: The name of the build project.  You cannot change a build project's name.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"artifacts"`: Information to be changed about the build output artifacts for the build
  project.
- `"badgeEnabled"`: Set this to true to generate a publicly accessible URL for your
  project's build badge.
- `"buildBatchConfig"`:
- `"cache"`: Stores recently used information so that it can be quickly accessed at a later
  time.
- `"concurrentBuildLimit"`: The maximum number of concurrent builds that are allowed for
  this project. New builds are only started if the current number of builds is less than or
  equal to this limit. If the current build count meets this limit, new builds are throttled
  and are not run. To remove this limit, set this value to -1.
- `"description"`: A new or replacement description of the build project.
- `"encryptionKey"`: The AWS Key Management Service (AWS KMS) customer master key (CMK) to
  be used for encrypting the build output artifacts.   You can use a cross-account KMS key to
  encrypt the build output artifacts if your service role has permission to that key.   You
  can specify either the Amazon Resource Name (ARN) of the CMK or, if available, the CMK's
  alias (using the format alias/<alias-name>).
- `"environment"`: Information to be changed about the build environment for the build
  project.
- `"fileSystemLocations"`:  An array of ProjectFileSystemLocation objects for a CodeBuild
  build project. A ProjectFileSystemLocation object specifies the identifier, location,
  mountOptions, mountPoint, and type of a file system created using Amazon Elastic File
  System.
- `"logsConfig"`:  Information about logs for the build project. A project can create logs
  in Amazon CloudWatch Logs, logs in an S3 bucket, or both.
- `"queuedTimeoutInMinutes"`:  The number of minutes a build is allowed to be queued before
  it times out.
- `"secondaryArtifacts"`:  An array of ProjectSource objects.
- `"secondarySourceVersions"`:  An array of ProjectSourceVersion objects. If
  secondarySourceVersions is specified at the build level, then they take over these
  secondarySourceVersions (at the project level).
- `"secondarySources"`:  An array of ProjectSource objects.
- `"serviceRole"`: The replacement ARN of the AWS Identity and Access Management (IAM) role
  that enables AWS CodeBuild to interact with dependent AWS services on behalf of the AWS
  account.
- `"source"`: Information to be changed about the build input source code for the build
  project.
- `"sourceVersion"`:  A version of the build input to be built for this project. If not
  specified, the latest version is used. If specified, it must be one of:    For AWS
  CodeCommit: the commit ID, branch, or Git tag to use.   For GitHub: the commit ID, pull
  request ID, branch name, or tag name that corresponds to the version of the source code you
  want to build. If a pull request ID is specified, it must use the format pr/pull-request-ID
  (for example pr/25). If a branch name is specified, the branch's HEAD commit ID is used. If
  not specified, the default branch's HEAD commit ID is used.   For Bitbucket: the commit ID,
  branch name, or tag name that corresponds to the version of the source code you want to
  build. If a branch name is specified, the branch's HEAD commit ID is used. If not
  specified, the default branch's HEAD commit ID is used.   For Amazon S3: the version ID of
  the object that represents the build input ZIP file to use.    If sourceVersion is
  specified at the build level, then that version takes precedence over this sourceVersion
  (at the project level).   For more information, see Source Version Sample with CodeBuild in
  the AWS CodeBuild User Guide.
- `"tags"`: An updated list of tag key and value pairs associated with this build project.
  These tags are available for use by AWS services that support AWS CodeBuild build project
  tags.
- `"timeoutInMinutes"`: The replacement value in minutes, from 5 to 480 (8 hours), for AWS
  CodeBuild to wait before timing out any related build that did not get marked as completed.
- `"vpcConfig"`: VpcConfig enables AWS CodeBuild to access resources in an Amazon VPC.
"""
update_project(name; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("UpdateProject", Dict{String, Any}("name"=>name); aws_config=aws_config)
update_project(name, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("UpdateProject", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("name"=>name), params)); aws_config=aws_config)

"""
    update_report_group(arn)
    update_report_group(arn, params::Dict{String,<:Any})

 Updates a report group.

# Arguments
- `arn`:  The ARN of the report group to update.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"exportConfig"`:  Used to specify an updated export type. Valid values are:     S3: The
  report results are exported to an S3 bucket.     NO_EXPORT: The report results are not
  exported.
- `"tags"`:  An updated list of tag key and value pairs associated with this report group.
  These tags are available for use by AWS services that support AWS CodeBuild report group
  tags.
"""
update_report_group(arn; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("UpdateReportGroup", Dict{String, Any}("arn"=>arn); aws_config=aws_config)
update_report_group(arn, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("UpdateReportGroup", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("arn"=>arn), params)); aws_config=aws_config)

"""
    update_webhook(project_name)
    update_webhook(project_name, params::Dict{String,<:Any})

 Updates the webhook associated with an AWS CodeBuild build project.    If you use
Bitbucket for your repository, rotateSecret is ignored.

# Arguments
- `project_name`: The name of the AWS CodeBuild project.

# Optional Parameters
Optional parameters can be passed as a `params::Dict{String,<:Any}`. Valid keys are:
- `"branchFilter"`: A regular expression used to determine which repository branches are
  built when a webhook is triggered. If the name of a branch matches the regular expression,
  then it is built. If branchFilter is empty, then all branches are built.   It is
  recommended that you use filterGroups instead of branchFilter.
- `"buildType"`: Specifies the type of build this webhook will trigger.
- `"filterGroups"`:  An array of arrays of WebhookFilter objects used to determine if a
  webhook event can trigger a build. A filter group must contain at least one EVENT
  WebhookFilter.
- `"rotateSecret"`:  A boolean value that specifies whether the associated GitHub
  repository's secret token should be updated. If you use Bitbucket for your repository,
  rotateSecret is ignored.
"""
update_webhook(projectName; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("UpdateWebhook", Dict{String, Any}("projectName"=>projectName); aws_config=aws_config)
update_webhook(projectName, params::AbstractDict{String, <:Any}; aws_config::AbstractAWSConfig=global_aws_config()) = codebuild("UpdateWebhook", Dict{String, Any}(mergewith(_merge, Dict{String, Any}("projectName"=>projectName), params)); aws_config=aws_config)


text:
#=
    A simple conic problem using the second-order cone.

    The model is defined as
    min ‖u - u0‖₂
    st  p'u = q

    The conic formulation we will solve is given by
    min t
    st  p'u = q
        ‖u- u0‖₂ ≤ t  (second-order cone)

    Since second-order programming is a special case of SDP,
    it can be reformulated accordingly. This example illustrates
    the reformulation capabilities of JuMP/MathOptInterface.
    Indeed, second-order cones were not implemented in MySDPSolver,
    but MOI can handle them.
=#

using MySDPSolver, JuMP, LinearAlgebra

# Some data
u0 = ones(Float64, 10)
p = ones(Float64, 10)
q = 1.0

# Declare the model
model = Model(MySDPSolver.Optimizer)

# Add the variables and the objective
@variable(model, u[1:10])
@variable(model, t)
@objective(model, Min, t)

# Add the conic constraint, i.e. ‖u-u0‖₂ ≤ t
@constraint(model, c1, [t, (u - u0)...] in SecondOrderCone())  # see 'splatting' for the '...' syntax
@constraint(model, c2, u'*p == q)

# Call the solver
optimize!(model)

# Retrieve the solutions
println("t:")
display(value(t))
println("u: ")
display(value.(u))

# We can get the dual solutions as well
println("dual solutions:")
display(dual(c1))
display(dual(c2))

println("###############################################")

max_stars_repo_name: TomaszWasTaken/MySDPSolver

max_issues_repo_name: TomaszWasTaken/MySDPSolver

max_forks_repo_name: TomaszWasTaken/MySDPSolver


text:
export  InsertInto,
        setcolumns!,
        addentries!,
        insertinto

"""
```
InsertInto( name::Union{Var, AbstractString}, columns::Vector{Var}=Var[] )
InsertInto( name::Union{Var, AbstractString}, columns::Vector{T}=String[] ) where T <: AbstractString
InsertInto( name::Union{Var, AbstractString}, columns::Union{Var, AbstractString}... )
```
This mutable struct represents a `INSERT INTO` SQL statement where `name` is the name of the affected table, and `columns` are the names of the columns where values will be inserted.
"""
mutable struct InsertInto <: SQLStatement
    name::Var
    columns::Vector{Var}
    entries::Vector{Vector}
    returning::Vector{String}

    InsertInto( name::SVar, columns::Vector{Var} ) = new( name |> Var, columns, Vector[], String[] )
end

InsertInto( name::SVar, columns::Vector{T} ) where T <: AbstractString =
    InsertInto( name, Var.(columns) )

function InsertInto( name::SVar, columns::SVar... )
    isempty(columns) && return InsertInto( name, Var[] )
    InsertInto( name, Var.( columns |> collect ) )
end

function Base.show( io::IO, ini::InsertInto )
    isempty(ini.entries) && return
    print( io, "INSERT INTO ", ini.name, "" )
    isempty(ini.columns) || print( io, " (", join( ini.columns, ", " ), ")" )
    print( io, "\n    VALUES " )
    vstr = map(ini.entries) do entry
        string( "(", join( processentry.(entry), ", " ), ")" )
    end
    print( io, join( vstr, ", " ) )
    isempty(ini.returning) || print( io, "\n    RETURNING ", join( ini.returning, ", " ) )
end

"""
```
setcolumns!( columns::Vector{Var} )
setcolumns!( columns::Vector{T} ) where T <: AbstractString
setcolumns!( columns::Union{Var, AbstractString}... )
```
This function permits the user to add a command that sets the affected columns to `columns` of a `InsertInto` struct.

The output of this function is a function that takes a `InsertInto` as argument and returns the updated argument, such that Julia's function chaining syntax can be used.

Example:
```
sq |> setcolumns!( "var1", "var2" )
```
sets the affected columns of the `InsertInto` struct to `var1` and `var2`.
"""
setcolumns!( columns::Vector{Var} ) = ini::InsertInto -> begin
    ini.columns = columns
    ini
end

setcolumns!( columns::Vector{T} ) where T <: AbstractString = Var.(columns) |> setcolumns!
setcolumns!( columns::SVar... ) = Var.( columns |> collect ) |> setcolumns!

"""
```
addentries!( entries::Vector... )
```
This function permits the user to add a command that adds the entries in `entries` to a `InsertInto` struct.

The output of this function is a function that takes a `InsertInto` as argument and returns the updated argument, such that Julia's function chaining syntax can be used.

Important: this function does **NOT** check of the number of elements in each entry matches the number of columns defined in the `InsertInto` struct.

Example:
```
sq |> addentries!( [ "val1", "val2" ] ) |> addentries!( [ "val3", "val4" ], [ "val5", "val6" ] )
```
adds 3 entries to the `InsertInto` struct.
"""
addentries!( entries::Vector... ) = ini::InsertInto -> begin
    append!( ini.entries, entries )
    ini
end

function verify( ini::InsertInto )
    isempty(ini.entries) && return Int[], 0
    nvals = length(isempty(ini.columns) ? ini.entries[1] : ini.columns)
    return findall( nvals .!= length.(ini.entries) ), nvals
end

"""
```
insertinto( conn::Conn, df::Bool=true )
```
This function permits the user to execute the SQL equivalent of a `InsertInto` struct on the database that `conn` connects to. The flag `df` determines the format of the output (`DataFrame` or `NamedTuple`) if the statement will return an output.

The output of this function is a function that takes a `InsertInto` as argument and returns the result of the executed SQL statement.

Example:
```
sq |> insertinto(conn)
```
"""
insertinto( conn::Conn, df::Bool=true ) = ini::InsertInto -> begin
    badinds, ncols = verify(ini)

    if !isempty(badinds)
        @warn "$(length(badinds)) entries have the wrong number of fields (must be $ncols), first one at $(badinds[1])."
        return
    end

    res = LibPQ.execute( conn, string( ini, ";" ) )
    isempty(ini.returning) && return res
    res |> makeunique! |> tableresult(df)
end


text:
"""
    couple_models(aero::Peters, stru::LiftingLineSection, flap::SimpleFlap,
        ctrl::LiftingLineSectionControl)

Create an aerostructural model using a using the unsteady aerodynamic model
defined by Peters et al, a lifting line aerodynamic model, and a linear steady-state
control surface model.  The existence of this coupling allows [`Peters`](@ref)
and [`SimpleFlap`](@ref) to be used with [`LiftingLine`](@ref) and
[`LiftingLineFlaps`](@ref).  This model introduces the freestream air density
``\\rho`` as an additional parameter.
"""
function couple_models(aero::Peters, stru::LiftingLineSection, flap::SimpleFlap,
    ctrl::LiftingLineSectionControl)

    return (aero, stru, flap, ctrl)
end

# --- Traits --- #

function number_of_additional_parameters(::Type{<:Peters}, ::Type{LiftingLineSection},
    ::Type{SimpleFlap}, ::Type{LiftingLineSectionControl})

    return 1
end

function coupling_inplaceness(::Type{<:Peters}, ::Type{LiftingLineSection},
    ::Type{SimpleFlap}, ::Type{LiftingLineSectionControl})

    return OutOfPlace()
end

function coupling_rate_jacobian_type(::Type{<:Peters}, ::Type{LiftingLineSection},
    ::Type{SimpleFlap}, ::Type{LiftingLineSectionControl})

    return Linear()
end

function coupling_state_jacobian_type(::Type{<:Peters}, ::Type{LiftingLineSection},
    ::Type{SimpleFlap}, ::Type{LiftingLineSectionControl})

    return Nonlinear()
end

function coupling_parameter_jacobian_type(::Type{<:Peters}, ::Type{LiftingLineSection},
    ::Type{SimpleFlap}, ::Type{LiftingLineSectionControl})

    return Nonlinear()
end

function coupling_time_gradient_type(::Type{<:Peters}, ::Type{LiftingLineSection},
    ::Type{SimpleFlap}, ::Type{LiftingLineSectionControl})

    return Zeros()
end

# --- Methods --- #

function get_coupling_inputs(aero::Peters{N,TF,SV,SA}, stru::LiftingLineSection,
    flap::SimpleFlap, ctrl::LiftingLineSectionControl, dx, x, p, t) where {N,TF,SV,SA}

    # extract rate variables
    dλ = dx[SVector{N}(1:N)]
    dvx, dvy, dvz, dωx, dωy, dωz = dx[SVector{6}(N+1:N+6)]
    dδ = dx[end]

    # extract state variables
    λ = x[SVector{N}(1:N)]
    vx, vy, vz, ωx, ωy, ωz = x[SVector{6}(N+1:N+6)]
    δ = x[end]

    # extract parameters
    a, b, a0, α0, cd0, cm0, cnδ, caδ, cmδ, ρ = p

    # extract model constants
    bbar = aero.b

    # freestream velocity components
    u, v, ω = liftingline_velocities(vx, vz, ωy)
    udot, vdot, ωdot = liftingline_accelerations(dvx, dvz, dωy)

    # aerodynamic loads
    Na, Aa, Ma = peters_loads(a, b, ρ, a0, α0, cd0, cm0, bbar, u, v, ω, vdot, ωdot, λ)

    # loads due to flap deflections
    Nf, Af, Mf = simpleflap_loads(b, u, ρ, cnδ, caδ, cmδ, δ)

    # loads per unit span
    f = SVector(Aa + Af, 0, Na + Nf)
    m = SVector(0, Ma + Mf, 0)

    # return portion of inputs that is not dependent on the state rates
    return SVector(u, ω, vdot, ωdot, f..., m...)
end

# --- Performance Overloads --- #

# TODO: state rate, state, and parameter jacobians

# --- Convenience Methods --- #

function set_additional_parameters!(padd, aero::Peters, stru::LiftingLineSection,
    flap::SimpleFlap, ctrl::LiftingLineSectionControl; rho)

    padd[1] = rho

    return padd
end

function separate_additional_parameters(aero::Peters, stru::LiftingLineSection,
    flap::SimpleFlap, ctrl::LiftingLineSectionControl, padd)

    return (rho = padd[1],)
end


text:
using Pkg
Pkg.activate(pwd())

# # Unconstrained Optimization
# ## Visualization of gradients
#
# ### Exercise: Contour plot
# Write a function `g(x)` which computes the derivative of `f` at a point  `x`.
# Plot the contours of `f` on the domain.
#
# **Hint:** Use the optional argument `color = :jet` for better visualization.
#
# ---
# ### Solution:

# ---
#
# ## Computation of gradients
#
# ### Exercise: Finite difference approximation
# Write a function `finite_difference` which computes the approximation of $f'(x)$ by
# finite differences. The inputs are a function $f:\mathbb R\to\mathbb R$ and a point
# $x \in \mathbb{R}$. It should have an optional input $h \in \mathbb{R}$, for which
# you need to choose a reasonable value.
#
# ---
# ### Solution:

# ---
#
# ### Exercise: Finite difference approximation
# Fix a point $x = (-2,-1)$. For a proper discretization of $h \in [10^{-15}, 10^{-1}]$
# compute the finite difference approximation of the partial derivative of $f$ with
# respect to the second variable.
#
# Plot the dependence of this approximation on $h$. Add the true derivative computed
# from $g$.
#
# ---
# ### Solution:

# ---

x = 1;
h = 1e-13;
(x+h)^2 - x^2
2*x*h + h^2

# ### Exercise: Direction of gradients
# Plot the contours of $f$ and its gradient at $(-2,-1)$.
#
# ---
# ### Solution:

# ---
#
# ## Numerical Methods
# ### Gradient Descent
#
# ### Exercise: Gradient descent
# Implement function `optim`, which takes as inputs function $f$, its gradient,
# starting point $x^0$ and fixed stepsize $\alpha$ and runs the gradient descent.
# Its output should be the first 100 iterations.
#
# This example is rather artificial because usually only the last iteration is returned
# and some stopping criterion is employed instead of the fixed number of iterations.
# We want to get all iterations to make visualizations.
#
# ---
# ### Solution:

# ---

using Random

function create_anim(
    f,
    path,
    xlims,
    ylims,
    file_name = joinpath(pwd(), randstring(12) * ".gif");
    xbounds = xlims,
    ybounds = ylims,
    fps = 15,
)
    xs = range(xlims...; length = 100)
    ys = range(ylims...; length = 100)
    plt = contourf(xs, ys, f; color = :jet)

    # add constraints if provided
    if !(xbounds == xlims && ybounds == ylims)
        x_rect = [xbounds[1]; xbounds[2]; xbounds[2]; xbounds[1]; xbounds[1]]
        y_rect = [ybounds[1]; ybounds[1]; ybounds[2]; ybounds[2]; ybounds[1]]

        plot!(x_rect, y_rect; line = (2, :dash, :red), label="")
    end

    # add an empty plot
    plot!(Float64[], Float64[]; line = (4, :arrow, :black), label = "")

    # extract the last plot series
    plt_path = plt.series_list[end]

    # create the animation and save it
    anim = Animation()
    for x in eachcol(path)
        push!(plt_path, x[1], x[2]) # add a new point
        frame(anim)
    end
    gif(anim, file_name; fps = fps, show_msg = false)
    return nothing
end

# ### Exercise: Gradient descent
# Use the implementation of the gradient descent to minimize the function
# $$
# f(x) = \sin(x_1 + x_2) + \cos(x_1)^2
# $$
# from the starting point $x^0 = (0,-1)$. Use the constant stepsize $\alpha = 0.1$.
# Store all iterations into matrix $xs$.
#
# Use the `create_anim` function to plot the iteration into a gif file.
#
# Use one line of code to evaluate the function values for all iterations $xs$ and plot
# these function values.
#
# **Hint:** to evaluate all $xs$ in one line, use iterate either via `eachcol(xs)` or
# `eachrow(xs)`.
#
# ---
# ### Solution:

# ---
# $\alpha = 0.01$

x_gd = optim([], g, [0; -1], 0.01)
create_anim(f, x_gd, xlims, ylims, joinpath(pwd(), "lecture_08", "anim2.gif"))

# $\alpha = 1$

x_gd = optim([], g, [0; -1], 1)
create_anim(f, x_gd, xlims, ylims, joinpath(pwd(), "lecture_08", "anim3.gif"))

# ### Adaptive Stepsize

abstract type Step end

struct GD <: Step
    α::Float64
end

optim_step(s::GD, f, g, x) = -s.α*g(x)

function optim(f, g, x, s::Step; max_iter=100)
    xs = zeros(length(x), max_iter+1)
    xs[:,1] = x
    for i in 1:max_iter
        x += optim_step(s, f, g, x)
        xs[:,i+1] = x
    end
    return xs
end

gd = GD(0.1)
x_opt = optim(f, g, [0;-1], gd)

create_anim(f, x_opt, xlims, ylims, joinpath(pwd(), "lecture_08", "anim4.gif"))

# ### Exercise: Armijo condition
# Implement the `Armijo` subclass of the `Step` class. It should have two parameters
# `c` from the definition and `α_max` which will be the initial value of $\alpha$.
# The value $\alpha$ should be divided by two until the Armijo condition is satisfied.
#
# Then run the optimization with the Armijo stepsize selection and plot the animation.
#
# ---
# ### Solution:


text:
function Pendulum()
    opts = SolverOptions(
        penalty_scaling=100.,
        penalty_initial=0.1,
    )

    model = RobotZoo.Pendulum()
    n,m = size(model)
    tf = 3.0
    N = 51

    # cost
    Q = 1e-3*Diagonal(@SVector ones(n))
    R = 1e-3*Diagonal(@SVector ones(m))
    Qf = 1e-0*Diagonal(@SVector ones(n))
    x0 = @SVector zeros(n)
    xf = @SVector [pi, 0.0]  # i.e. swing up
    obj = LQRObjective(Q,R,Qf,xf,N)

    # constraints
    conSet = ConstraintList(n,m,N)
    u_bnd = 3.
    bnd = BoundConstraint(n,m,u_min=-u_bnd,u_max=u_bnd)
    goal = GoalConstraint(xf)
    add_constraint!(conSet, bnd, 1:N-1)
    add_constraint!(conSet, goal, N:N)

    # problem
    U = [@SVector fill(0.1, m) for k = 1:N-1]
    pendulum_static = Problem(model, obj, xf, tf, constraints=conSet, x0=x0)
    initial_controls!(pendulum_static, U)
    rollout!(pendulum_static)
    return pendulum_static, opts
end


text:
function markdown(doc::DocumentationChunk)
	io = IOBuffer()

	if doc.exported
		@printf(io, "**Exported**\n\n")
	end

	if !isempty(doc.name)
		@printf(io, "**Name**: %s\n\n", doc.name)
	end

	if !isempty(doc.description)
		@printf(io, "**Description**: %s\n\n", doc.description)
	end

	if !isempty(doc.args)
		@printf(io, "**Arguments**:\n\n")
		for arg in doc.args
			@printf(io,
				    "* %s::%s: %s\n",
				    arg.varname,
				    arg.vartype,
				    arg.description)
		end
		@printf(io, "\n")
	end

	if !isempty(doc.fields)
		@printf(io, "**Fields**:\n\n")
		for field in doc.fields
			@printf(io,
				    " * %s::%s: %s\n",
				    field.varname,
				    field.vartype,
				    field.description)
		end
		@printf(io, "\n")
	end

	if !isempty(doc.returns)
		@printf io "**Return Values**:\n\n"
		for retval in doc.returns
			@printf(io,
				    "* %s::%s: %s\n",
				    retval.varname,
				    retval.vartype,
				    retval.description)
		end
		@printf(io, "\n")
	end

	if !isempty(doc.examples)
		@printf(io,
			    "**Examples**:\n\n```%s```\n",
			    replace(replace(doc.examples, r"^\n+", "\n"),
			    	    r"\n+$", "\n"))
	end

    return bytestring(io)
end


text:
using HTbin
using Dates
using Test

@time @testset "HTbin.jl Package Tests" begin

    testdir = joinpath(dirname(@__DIR__), "test")
    @time @testset "so_files" begin
        include(joinpath(testdir, "so_files.jl"))
    end

end