Source file cli.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
(* generated by: awso-codegen generate-all --botocore-data vendor/botocore/botocore/data -o aws --runtime-dir lib/runtime/awso --cli-dir awso-cli *)
open Core
open Async
let json_arg = Command.Arg_type.create Yojson.Safe.from_string
let call ?endpoint_url ?profile ?region f m result_to_json error_to_json =
  let region =
    match region with
    | Some region -> Some (Awso.Region.of_string region)
    | None -> None in
  (Awso_async.Cfg.get_exn ?profile ?region ()) >>=
    (fun cfg ->
       (f ?endpoint_url ?cfg:(Some cfg) m) >>=
         (fun result ->
            match result with
            | Error err ->
                (match error_to_json with
                 | None ->
                     failwithf
                       "endpoint error, but no error values defined in boto"
                       ()
                 | Some to_json ->
                     let s = (err |> to_json) |> Yojson.Safe.to_string in
                     failwithf "AWS error: %s" s ())
            | Ok result ->
                ((match result_to_json with
                  | None -> print_endline "ok response from endpoint"
                  | Some to_json ->
                      ((result |> to_json) |> Yojson.Safe.to_string) |>
                        print_endline);
                 return ())))
let generate_data_set =
  Command.async ~summary:""
    ([%map_open.Command
       let cli_profile =
         flag "-cli-profile" (optional string) ~doc:"NAME aws profile to use"
       and cli_region =
         flag "-cli-region" (optional string) ~doc:"REGION override region"
       and endpoint_url =
         flag "-endpoint-url" (optional string)
           ~doc:"URL override endpoint url"
       and destinationS3Prefix =
         flag "destination-s3-prefix" (optional string)
           ~doc:"STRING DestinationS3Prefix"
       and customerDefinedValues =
         flag "customer-defined-values" (optional json_arg)
           ~doc:"JSON CustomerDefinedValues"
       and dataSetType =
         flag "data-set-type" (required json_arg) ~doc:"JSON DataSetType"
       and dataSetPublicationDate =
         flag "data-set-publication-date" (required json_arg)
           ~doc:"JSON DataSetPublicationDate"
       and roleNameArn =
         flag "role-name-arn" (required string) ~doc:"STRING RoleNameArn"
       and destinationS3BucketName =
         flag "destination-s3-bucket-name" (required string)
           ~doc:"STRING DestinationS3BucketName"
       and snsTopicArn =
         flag "sns-topic-arn" (required string) ~doc:"STRING SnsTopicArn" in
       fun () ->
         call ?endpoint_url ?profile:cli_profile ?region:cli_region
           Io.generate_data_set
           (Values.GenerateDataSetRequest.make ?destinationS3Prefix
              ?customerDefinedValues:(Option.map
                                        ~f:Values.CustomerDefinedValues.of_json
                                        customerDefinedValues)
              ~dataSetType:(Values.DataSetType.of_json dataSetType)
              ~dataSetPublicationDate:(Values.DataSetPublicationDate.of_json
                                         dataSetPublicationDate) ~roleNameArn
              ~destinationS3BucketName ~snsTopicArn ())
           (Some Values.GenerateDataSetResult.to_json)
           (Some Values.GenerateDataSetResult.error_to_json)])
let start_support_data_export =
  Command.async ~summary:""
    ([%map_open.Command
       let cli_profile =
         flag "-cli-profile" (optional string) ~doc:"NAME aws profile to use"
       and cli_region =
         flag "-cli-region" (optional string) ~doc:"REGION override region"
       and endpoint_url =
         flag "-endpoint-url" (optional string)
           ~doc:"URL override endpoint url"
       and destinationS3Prefix =
         flag "destination-s3-prefix" (optional string)
           ~doc:"STRING DestinationS3Prefix"
       and customerDefinedValues =
         flag "customer-defined-values" (optional json_arg)
           ~doc:"JSON CustomerDefinedValues"
       and dataSetType =
         flag "data-set-type" (required json_arg)
           ~doc:"JSON SupportDataSetType"
       and fromDate =
         flag "from-date" (required json_arg) ~doc:"JSON FromDate"
       and roleNameArn =
         flag "role-name-arn" (required string) ~doc:"STRING RoleNameArn"
       and destinationS3BucketName =
         flag "destination-s3-bucket-name" (required string)
           ~doc:"STRING DestinationS3BucketName"
       and snsTopicArn =
         flag "sns-topic-arn" (required string) ~doc:"STRING SnsTopicArn" in
       fun () ->
         call ?endpoint_url ?profile:cli_profile ?region:cli_region
           Io.start_support_data_export
           (Values.StartSupportDataExportRequest.make ?destinationS3Prefix
              ?customerDefinedValues:(Option.map
                                        ~f:Values.CustomerDefinedValues.of_json
                                        customerDefinedValues)
              ~dataSetType:(Values.SupportDataSetType.of_json dataSetType)
              ~fromDate:(Values.FromDate.of_json fromDate) ~roleNameArn
              ~destinationS3BucketName ~snsTopicArn ())
           (Some Values.StartSupportDataExportResult.to_json)
           (Some Values.StartSupportDataExportResult.error_to_json)])
let main =
  Command.group
    ~summary:((Awso.Service.to_string Values.service) ^ " commands")
    [("generate-data-set", generate_data_set);
    ("start-support-data-export", start_support_data_export)]