@@ -80,6 +80,12 @@ pub fn parser(pre_flight_settings: PreFlightSettings) -> Command {
80
80
) )
81
81
. subcommand_value_name ( "deprecated feature" )
82
82
. subcommands ( deprecated_features_subcommands ( pre_flight_settings. clone ( ) ) ) ;
83
+ let exchanges_group = Command :: new ( "exchanges" )
84
+ . about ( "Operations on exchanges" )
85
+ . infer_subcommands ( pre_flight_settings. infer_subcommands )
86
+ . infer_long_args ( pre_flight_settings. infer_long_options )
87
+ . subcommand_value_name ( "exchange" )
88
+ . subcommands ( exchanges_subcommands ( pre_flight_settings. clone ( ) ) ) ;
83
89
let export_group = Command :: new ( "export" )
84
90
. about ( "See 'definitions export'" )
85
91
. infer_subcommands ( pre_flight_settings. infer_subcommands )
@@ -274,6 +280,7 @@ pub fn parser(pre_flight_settings: PreFlightSettings) -> Command {
274
280
definitions_group,
275
281
delete_group,
276
282
deprecated_features_group,
283
+ exchanges_group,
277
284
export_group,
278
285
feature_flags_group,
279
286
federation_group,
@@ -1801,6 +1808,132 @@ Examples:
1801
1808
. map ( |cmd| cmd. infer_long_args ( pre_flight_settings. infer_long_options ) )
1802
1809
}
1803
1810
1811
+ fn exchanges_subcommands ( pre_flight_settings : PreFlightSettings ) -> [ Command ; 5 ] {
1812
+ let bind_cmd = Command :: new ( "bind" )
1813
+ . about ( "Creates a binding between a source exchange and a destination (a queue or an exchange)" )
1814
+ . arg (
1815
+ Arg :: new ( "source" )
1816
+ . long ( "source" )
1817
+ . help ( "source exchange" )
1818
+ . required ( true ) ,
1819
+ )
1820
+ . arg (
1821
+ Arg :: new ( "destination_type" )
1822
+ . long ( "destination-type" )
1823
+ . help ( "destination type: exchange or queue" )
1824
+ . required ( true )
1825
+ . value_parser ( value_parser ! ( BindingDestinationType ) ) ,
1826
+ )
1827
+ . arg (
1828
+ Arg :: new ( "destination" )
1829
+ . long ( "destination" )
1830
+ . help ( "destination exchange/queue name" )
1831
+ . required ( true ) ,
1832
+ )
1833
+ . arg (
1834
+ Arg :: new ( "routing_key" )
1835
+ . long ( "routing-key" )
1836
+ . help ( "routing key" )
1837
+ . required ( true ) ,
1838
+ )
1839
+ . arg (
1840
+ Arg :: new ( "arguments" )
1841
+ . long ( "arguments" )
1842
+ . help ( "additional arguments" )
1843
+ . required ( false )
1844
+ . default_value ( "{}" )
1845
+ . value_parser ( value_parser ! ( String ) ) ,
1846
+ ) ;
1847
+ let declare_cmd = Command :: new ( "declare" )
1848
+ . about ( "Declares an exchange" )
1849
+ . arg (
1850
+ Arg :: new ( "name" )
1851
+ . long ( "name" )
1852
+ . help ( "exchange name" )
1853
+ . required ( true ) ,
1854
+ )
1855
+ . arg (
1856
+ Arg :: new ( "type" )
1857
+ . long ( "type" )
1858
+ . help ( "exchange type" )
1859
+ . value_parser ( value_parser ! ( ExchangeType ) )
1860
+ . required ( false ) ,
1861
+ )
1862
+ . arg (
1863
+ Arg :: new ( "durable" )
1864
+ . long ( "durable" )
1865
+ . help ( "should it persist after a restart" )
1866
+ . required ( false )
1867
+ . value_parser ( value_parser ! ( bool ) ) ,
1868
+ )
1869
+ . arg (
1870
+ Arg :: new ( "auto_delete" )
1871
+ . long ( "auto-delete" )
1872
+ . help ( "should it be deleted when the last queue is unbound" )
1873
+ . required ( false )
1874
+ . value_parser ( value_parser ! ( bool ) ) ,
1875
+ )
1876
+ . arg (
1877
+ Arg :: new ( "arguments" )
1878
+ . long ( "arguments" )
1879
+ . help ( "additional exchange arguments" )
1880
+ . required ( false )
1881
+ . default_value ( "{}" )
1882
+ . value_parser ( value_parser ! ( String ) ) ,
1883
+ ) ;
1884
+ let idempotently_arg = Arg :: new ( "idempotently" )
1885
+ . long ( "idempotently" )
1886
+ . value_parser ( value_parser ! ( bool ) )
1887
+ . action ( ArgAction :: SetTrue )
1888
+ . help ( "do not consider 404 Not Found API responses to be errors" )
1889
+ . required ( false ) ;
1890
+ let delete_cmd = Command :: new ( "delete" )
1891
+ . about ( "Deletes an exchange" )
1892
+ . arg (
1893
+ Arg :: new ( "name" )
1894
+ . long ( "name" )
1895
+ . help ( "exchange name" )
1896
+ . required ( true ) ,
1897
+ )
1898
+ . arg ( idempotently_arg. clone ( ) ) ;
1899
+ let list_cmd = Command :: new ( "list" ) . long_about ( "Lists exchanges" ) ;
1900
+ let unbind_cmd = Command :: new ( "unbind" )
1901
+ . about ( "Deletes a binding" )
1902
+ . arg (
1903
+ Arg :: new ( "source" )
1904
+ . long ( "source" )
1905
+ . help ( "source exchange" )
1906
+ . required ( true ) ,
1907
+ )
1908
+ . arg (
1909
+ Arg :: new ( "destination_type" )
1910
+ . long ( "destination-type" )
1911
+ . help ( "destination type: exchange or queue" )
1912
+ . required ( true ) ,
1913
+ )
1914
+ . arg (
1915
+ Arg :: new ( "destination" )
1916
+ . long ( "destination" )
1917
+ . help ( "destination exchange/queue name" )
1918
+ . required ( true ) ,
1919
+ )
1920
+ . arg (
1921
+ Arg :: new ( "routing_key" )
1922
+ . long ( "routing-key" )
1923
+ . help ( "routing key" )
1924
+ . required ( true ) ,
1925
+ )
1926
+ . arg (
1927
+ Arg :: new ( "arguments" )
1928
+ . long ( "arguments" )
1929
+ . help ( "additional arguments" )
1930
+ . required ( false )
1931
+ . default_value ( "{}" )
1932
+ . value_parser ( value_parser ! ( String ) ) ,
1933
+ ) ;
1934
+ [ bind_cmd, declare_cmd, delete_cmd, list_cmd, unbind_cmd]
1935
+ . map ( |cmd| cmd. infer_long_args ( pre_flight_settings. infer_long_options ) )
1936
+ }
1804
1937
fn export_subcommands ( pre_flight_settings : PreFlightSettings ) -> [ Command ; 1 ] {
1805
1938
let definitions = Command :: new ( "definitions" )
1806
1939
. about ( "Prefer 'definitions export'" )
0 commit comments