Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
schbrain-archetype-initializer
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Incidents
Environments
Packages & Registries
Packages & Registries
Package Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
tools
schbrain-archetype-initializer
Commits
03c29c40
Commit
03c29c40
authored
Mar 27, 2022
by
liaozan
🏀
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: support update archetype online
parent
b78ff402
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
38 additions
and
14 deletions
+38
-14
initializer-backend/src/main/java/com/schbrain/archetype/initializer/controller/ArchetypeController.java
...archetype/initializer/controller/ArchetypeController.java
+6
-1
initializer-backend/src/main/java/com/schbrain/archetype/initializer/runner/ArchetypePreparer.java
...brain/archetype/initializer/runner/ArchetypePreparer.java
+22
-13
initializer-backend/src/main/java/com/schbrain/archetype/initializer/service/ArchetypeService.java
...brain/archetype/initializer/service/ArchetypeService.java
+10
-0
No files found.
initializer-backend/src/main/java/com/schbrain/archetype/initializer/controller/
Initializer
Controller.java
→
initializer-backend/src/main/java/com/schbrain/archetype/initializer/controller/
Archetype
Controller.java
View file @
03c29c40
...
...
@@ -17,11 +17,16 @@ import java.util.List;
* @since 2022/3/20
*/
@RestController
public
class
Initializer
Controller
{
public
class
Archetype
Controller
{
@Autowired
private
ArchetypeService
archetypeService
;
@GetMapping
(
"/archetype/update"
)
public
ResponseDTO
<
Boolean
>
updateArchetype
()
{
return
ResponseDTO
.
success
(
archetypeService
.
update
());
}
@PostMapping
(
"/archetype/generate"
)
public
ResponseDTO
<
String
>
generateArchetype
(
@RequestBody
@Validated
ArchetypeGenerateParam
param
)
{
return
ResponseDTO
.
success
(
archetypeService
.
generate
(
param
));
...
...
initializer-backend/src/main/java/com/schbrain/archetype/initializer/runner/ArchetypePreparer.java
View file @
03c29c40
...
...
@@ -3,6 +3,7 @@ package com.schbrain.archetype.initializer.runner;
import
cn.hutool.core.io.FileUtil
;
import
cn.hutool.system.SystemUtil
;
import
com.schbrain.archetype.initializer.maven.MavenUtils
;
import
com.schbrain.common.exception.BaseException
;
import
lombok.extern.slf4j.Slf4j
;
import
org.eclipse.jgit.api.CheckoutCommand
;
import
org.eclipse.jgit.api.Git
;
...
...
@@ -26,7 +27,11 @@ public class ArchetypePreparer implements ApplicationRunner {
private
static
final
String
ARCHETYPE_REPO_URL
=
"http://gitlab.schbrain.com/gitlab/tools/schbrain-archetype.git"
;
@Override
public
void
run
(
ApplicationArguments
args
)
throws
GitAPIException
{
public
void
run
(
ApplicationArguments
args
)
{
installArchetype
();
}
public
void
installArchetype
()
{
File
archetypeTemplateDirectory
=
createArchetypeDirectory
();
checkoutArchetype
(
archetypeTemplateDirectory
);
MavenUtils
.
install
(
archetypeTemplateDirectory
.
getAbsolutePath
());
...
...
@@ -39,18 +44,22 @@ public class ArchetypePreparer implements ApplicationRunner {
return
archetypeTemplateDirectory
;
}
private
void
checkoutArchetype
(
File
archetypeTemplateDirectory
)
throws
GitAPIException
{
Git
git
=
Git
.
cloneRepository
()
.
setTagOption
(
TagOpt
.
FETCH_TAGS
)
.
setNoCheckout
(
false
)
.
setDirectory
(
archetypeTemplateDirectory
)
.
setCloneSubmodules
(
false
)
.
setURI
(
ARCHETYPE_REPO_URL
)
.
setRemote
(
"upstream"
)
.
call
();
CheckoutCommand
checkoutCommand
=
git
.
checkout
().
setName
(
"archetype"
).
setCreateBranch
(
true
);
Ref
ref
=
checkoutCommand
.
call
();
log
.
info
(
"Success checkout archetype branch: {} of {}"
,
ref
.
getName
(),
ARCHETYPE_REPO_URL
);
private
void
checkoutArchetype
(
File
archetypeTemplateDirectory
)
{
try
{
Git
git
=
Git
.
cloneRepository
()
.
setTagOption
(
TagOpt
.
FETCH_TAGS
)
.
setNoCheckout
(
false
)
.
setDirectory
(
archetypeTemplateDirectory
)
.
setCloneSubmodules
(
false
)
.
setURI
(
ARCHETYPE_REPO_URL
)
.
setRemote
(
"upstream"
)
.
call
();
CheckoutCommand
checkoutCommand
=
git
.
checkout
().
setName
(
"archetype"
).
setCreateBranch
(
true
);
Ref
ref
=
checkoutCommand
.
call
();
log
.
info
(
"Success checkout archetype branch: {} of {}"
,
ref
.
getName
(),
ARCHETYPE_REPO_URL
);
}
catch
(
GitAPIException
e
)
{
throw
new
BaseException
(
"Failed to checkout archetype from git repository"
,
e
);
}
}
}
\ No newline at end of file
initializer-backend/src/main/java/com/schbrain/archetype/initializer/service/ArchetypeService.java
View file @
03c29c40
...
...
@@ -5,7 +5,9 @@ import cn.hutool.core.util.ZipUtil;
import
com.schbrain.archetype.initializer.maven.MavenUtils
;
import
com.schbrain.archetype.initializer.param.ArchetypeGenerateParam
;
import
com.schbrain.archetype.initializer.response.PreviewFileTree
;
import
com.schbrain.archetype.initializer.runner.ArchetypePreparer
;
import
com.schbrain.common.util.ServletUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.ContentDisposition
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.http.MediaType
;
...
...
@@ -33,6 +35,9 @@ public class ArchetypeService {
private
final
Map
<
String
,
String
>
archetypeNameCache
=
new
ConcurrentHashMap
<>();
@Autowired
private
ArchetypePreparer
archetypePreparer
;
public
String
generate
(
ArchetypeGenerateParam
param
)
{
String
generateId
=
MavenUtils
.
generate
(
param
);
archetypeNameCache
.
put
(
generateId
,
param
.
getArtifactId
());
...
...
@@ -53,6 +58,11 @@ public class ArchetypeService {
StreamUtils
.
copy
(
inputStream
,
response
.
getOutputStream
());
}
public
boolean
update
()
{
archetypePreparer
.
installArchetype
();
return
true
;
}
private
PreviewFileTree
buildFileTree
(
File
root
)
{
File
[]
fileItems
=
root
.
listFiles
();
if
(
ArrayUtil
.
isEmpty
(
fileItems
))
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment