@@ -733,6 +733,7 @@ fn get_new_dist_metadata(
733
733
InstallerStyle :: Npm ,
734
734
InstallerStyle :: Homebrew ,
735
735
InstallerStyle :: Msi ,
736
+ InstallerStyle :: Pkg ,
736
737
]
737
738
} else {
738
739
eprintln ! ( "{notice} no CI backends enabled, most installers have been hidden" ) ;
@@ -849,6 +850,72 @@ fn get_new_dist_metadata(
849
850
}
850
851
}
851
852
853
+ // Special handling of the pkg installer
854
+ if meta
855
+ . installers
856
+ . as_deref ( )
857
+ . unwrap_or_default ( )
858
+ . contains ( & InstallerStyle :: Pkg )
859
+ {
860
+ let pkg_is_new = !orig_meta
861
+ . installers
862
+ . as_deref ( )
863
+ . unwrap_or_default ( )
864
+ . contains ( & InstallerStyle :: Pkg ) ;
865
+
866
+ if pkg_is_new && orig_meta. mac_pkg_config . is_none ( ) {
867
+ let prompt = r#"you've enabled a Mac .pkg installer. This requires a unique bundle ID;
868
+ please enter one now. This is in reverse-domain name format.
869
+ For more information, consult the Apple documentation:
870
+ https://developer.apple.com/library/archive/documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html#//apple_ref/doc/uid/10000123i-CH101-SW1"# ;
871
+ let default = "" . to_string ( ) ;
872
+
873
+ let identifier: String = if args. yes {
874
+ default
875
+ } else {
876
+ let res = Input :: with_theme ( & theme)
877
+ . with_prompt ( prompt)
878
+ . allow_empty ( true )
879
+ . interact_text ( ) ?;
880
+ eprintln ! ( ) ;
881
+ res
882
+ } ;
883
+ let identifier = identifier. trim ( ) ;
884
+ if identifier. is_empty ( ) {
885
+ return Err ( DistError :: MacPkgBundleIdentifierMissing { } ) ;
886
+ }
887
+
888
+ let prompt = r#"Please enter the installation prefix this .pkg should use."# ;
889
+ let prefix = if args. yes {
890
+ None
891
+ } else {
892
+ let res: String = Input :: with_theme ( & theme)
893
+ . with_prompt ( prompt)
894
+ . allow_empty ( true )
895
+ . interact_text ( ) ?;
896
+ eprintln ! ( ) ;
897
+
898
+ let trimmed = res. trim ( ) ;
899
+ if trimmed. is_empty ( ) {
900
+ None
901
+ } else {
902
+ Some ( trimmed. to_owned ( ) )
903
+ }
904
+ } ;
905
+
906
+ meta. mac_pkg_config = Some ( config:: MacPkgConfig {
907
+ identifier : Some ( identifier. to_owned ( ) ) ,
908
+ install_location : prefix,
909
+ } )
910
+ }
911
+ }
912
+
913
+ meta. publish_jobs = if publish_jobs. is_empty ( ) {
914
+ None
915
+ } else {
916
+ Some ( publish_jobs. to_owned ( ) )
917
+ } ;
918
+
852
919
// Special handling of the npm installer
853
920
if meta
854
921
. installers
0 commit comments