@@ -65,11 +65,13 @@ public Icon getIcon() {
6565 @ Override
6666 public void generateProject (@ NotNull Project project , @ NotNull VirtualFile baseDir , ProjectPeer .@ NotNull MyProjectSettings settings , @ NotNull Module module ) {
6767 String url = Strings .trimEnd (settings .getServerUrl (), "/" );
68- boolean isGitRepo = Strings .startsWith (url , 0 , "https://git" );
69- if (isGitRepo ) {
70- url = url + "/" + settings .getVersion () + ".zip" ;
71- } else {
72- url = url + getQryParams (settings );
68+ boolean isGitRepo = url .startsWith ("https://git" ) || url .startsWith ("https://mirrors" );
69+ if (!url .endsWith (".zip" )) {
70+ if (isGitRepo ) {
71+ url = url + "/" + settings .getVersion () + ".zip" ;
72+ } else {
73+ url = url + getQryParams (settings );
74+ }
7375 }
7476
7577 String fileName = URLUtil .encodeURIComponent (DigestUtils .md5Hex (url ) + ".zip" );
@@ -83,50 +85,50 @@ public void generateProject(@NotNull Project project, @NotNull VirtualFile baseD
8385 String unzipTitle = taskTitle + "骨架Zip解压" ;
8486 try {
8587 ZipUtil .unzipWithProgressSynchronously (project , unzipTitle , zipArchiveFile , VfsUtilCore .virtualToIoFile (baseDir ), null , true );
86- baseDir .refresh (false , true );
8788 // json文件改写
8889 if (isGitRepo ) {
89- ComposerUtils composerUtils = new ComposerUtils (project );
90- composerUtils .setConfig (Map .of (
91- "name" , settings .getPkgName () + "/" + settings .getVendorName (),
92- "description" , settings .getDesc ()
93- ), false );
94- // require
95- ArrayList <Map <String , String >> requireData = new ArrayList <>();
96- requireData .add (Map .of ("php" , ">=" + settings .getPhpVersion ()));
97- settings .getRequireDependencies ().forEach (dependency -> {
98- String myVer = dependency .getVersion ();
99- if (myVer .contains ("default" )) {
100- myVer = "*" ;
101- }
102- requireData .add (Map .of (dependency .getName (), myVer ));
103- });
104- composerUtils .setConfig ("require" , requireData , false );
105- // require-dev
106- ArrayList <Map <String , String >> requireDevData = new ArrayList <>();
107- settings .getRequireDevDependencies ().forEach (dependency -> {
108- String myVer = dependency .getVersion ();
109- if (myVer .contains ("default" )) {
110- myVer = "*" ;
111- }
112- requireDevData .add (Map .of (dependency .getName (), myVer ));
113- });
114- composerUtils .setConfig ("require-dev" , requireDevData , false );
115- // repositories
116- ArrayList <Map <String , String >> repositoriesData = new ArrayList <>();
117- repositoriesData .add (Map .of (
118- "type" , "composer" ,
119- "url" , settings .getPackagistUrl ()
120- ));
121- ArrayList <ArrayList <Map <String , String >>> repositoriesOuterData = new ArrayList <>();
122- repositoriesOuterData .add (repositoriesData );
123- composerUtils .setConfigByArrayJson ("repositories" , repositoriesOuterData , false );
124-
125- // composer install
126- composerUtils .setText (() -> {
90+ BackgroundTask .INSTANCE .run (project , "整理配置" , (indicator ) -> {
91+ ComposerUtils composerUtils = new ComposerUtils (project );
92+ composerUtils .setConfig (Map .of (
93+ "name" , settings .getPkgName () + "/" + settings .getVendorName (),
94+ "description" , settings .getDesc ()
95+ ), false );
96+ // require
97+ ArrayList <Map <String , String >> requireData = new ArrayList <>();
98+ requireData .add (Map .of ("php" , ">=" + settings .getPhpVersion ()));
99+ settings .getRequireDependencies ().forEach (dependency -> {
100+ String myVer = dependency .getVersion ();
101+ if (myVer .contains ("default" )) {
102+ myVer = "*" ;
103+ }
104+ requireData .add (Map .of (dependency .getName (), myVer ));
105+ });
106+ composerUtils .setConfig ("require" , requireData , false );
107+ // require-dev
108+ ArrayList <Map <String , String >> requireDevData = new ArrayList <>();
109+ settings .getRequireDevDependencies ().forEach (dependency -> {
110+ String myVer = dependency .getVersion ();
111+ if (myVer .contains ("default" )) {
112+ myVer = "*" ;
113+ }
114+ requireDevData .add (Map .of (dependency .getName (), myVer ));
115+ });
116+ composerUtils .setConfig ("require-dev" , requireDevData , false );
117+ // repositories
118+ ArrayList <Map <String , String >> repositoriesData = new ArrayList <>();
119+ repositoriesData .add (Map .of (
120+ "type" , "composer" ,
121+ "url" , settings .getPackagistUrl ()
122+ ));
123+ ArrayList <ArrayList <Map <String , String >>> repositoriesOuterData = new ArrayList <>();
124+ repositoriesOuterData .add (repositoriesData );
125+ composerUtils .setConfigByArrayJson ("repositories" , repositoriesOuterData , true );
126+ return Unit .INSTANCE ;
127+ },
128+ () -> {
127129 new ComposerCommandInstall (project , taskTitle , "--no-interaction --prefer-dist" ).execute ();
128- com . jetbrains . php . composer . ComposerUtils . refreshVendorDir ( composerUtils . getConfigFile ()) ;
129- });
130+ return Unit . INSTANCE ;
131+ }, null , false );
130132 }
131133 } catch (GeneratorException e ) {
132134 BackgroundTask .INSTANCE .showErrorNotification (project , unzipTitle , String .format ("框架脚手架安装错误:%s,解压失败:%s" , e .getMessage (), zipArchiveFile .getAbsolutePath ()));
0 commit comments