Skip to content

Commit b17798e

Browse files
committed
feat: add client extension extra samples
1 parent 98b6a1b commit b17798e

File tree

7 files changed

+92
-14
lines changed

7 files changed

+92
-14
lines changed

.github/workflows/auto-update-assets.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,14 @@ jobs:
2525
git clean -d -f .
2626
git pull
2727
mv .git git
28+
- name: Update Client Extensions Extra Samples
29+
working-directory: ./internal/assets/tpl/client_extension/liferay-client-extensions-extra-samples
30+
run: |
31+
mv git .git
32+
git reset --hard HEAD
33+
git clean -d -f .
34+
git pull
35+
mv .git git
2836
- name: Commit Client Extensions Changes
2937
run: |
3038
git config --global user.name 'github-actions[bot]'

.gitignore

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,17 @@ $RECYCLE.BIN/
9292
dist/
9393

9494
# Specific files for the embedded assets
95+
# Client Extensions Samples
9596
internal/assets/tpl/client_extension/liferay-client-extensions-samples/.github
9697
internal/assets/tpl/client_extension/liferay-client-extensions-samples/.gitignore
9798
internal/assets/tpl/client_extension/liferay-client-extensions-samples/HOW-TO.md
9899
internal/assets/tpl/client_extension/liferay-client-extensions-samples/LICENSE
99-
internal/assets/tpl/client_extension/liferay-client-extensions-samples/README.md
100+
internal/assets/tpl/client_extension/liferay-client-extensions-samples/README.md
101+
# Client Extensions Extra Samples
102+
internal/assets/tpl/client_extension/liferay-client-extensions-extra-samples/.dockerignore
103+
internal/assets/tpl/client_extension/liferay-client-extensions-extra-samples/.gitignore
104+
internal/assets/tpl/client_extension/liferay-client-extensions-extra-samples/Dockerfile
105+
internal/assets/tpl/client_extension/liferay-client-extensions-extra-samples/LICENSE
106+
internal/assets/tpl/client_extension/liferay-client-extensions-extra-samples/README.md
107+
internal/assets/tpl/client_extension/liferay-client-extensions-extra-samples/build.gradle
108+
internal/assets/tpl/client_extension/liferay-client-extensions-extra-samples/docker-compose.yml
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Subproject commit 0219079dba38798825509ad61c9e2b612c83a037

internal/conf/conf.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@ import (
1010
)
1111

1212
const (
13-
ClientExtensionSamplePrefix = "liferay-sample-"
14-
ClientExtensionSampleProjectName = "liferay-client-extensions-samples"
13+
ClientExtensionSamplePrefix = "liferay-sample-"
14+
ClientExtensionExtraSamplePrefix = "sample-"
15+
ClientExtensionSampleProjectName = "liferay-client-extensions-samples"
16+
ClientExtensionExtraSampleProjectName = "liferay-client-extensions-extra-samples"
1517
// Config file keys
1618
WorkspaceEdition = "workspace.edition"
1719
WorkspaceVersion = "workspace.version"

pkg/scaffold/client_extension.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,11 @@ func CreateClientExtension(sample, name string) {
3131
fileutil.CreateDirs(clientExtensionDir)
3232

3333
if err := cp.Copy(samplePath, clientExtensionDir); err != nil {
34-
logger.Fatal(err.Error())
34+
clientExtensionExtraSamplesPath := filepath.Join(conf.GetConfigPath(), conf.ClientExtensionExtraSampleProjectName)
35+
extraSamplePath := filepath.Join(clientExtensionExtraSamplesPath, conf.ClientExtensionExtraSamplePrefix+sample)
36+
if err := cp.Copy(extraSamplePath, clientExtensionDir); err != nil {
37+
logger.Fatal(err.Error())
38+
}
3539
}
3640

3741
_ = filepath.Walk(clientExtensionDir,

pkg/scaffold/client_extension_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ func Test_HandleClientExtensionsOffline_ShouldIncludeGitFolderForFutureUpdates(t
1515
if err := os.Mkdir(configTestPath, os.ModePerm); err != nil {
1616
t.Fatal(err)
1717
}
18-
helper.HandleClientExtensionsOffline(configTestPath)
18+
helper.HandleAllClientExtensionsOffline(configTestPath)
1919
if _, err := os.Stat(filepath.Join(configTestPath, conf.ClientExtensionSampleProjectName, ".git")); err != nil {
2020
t.Fatal(err)
2121
}

pkg/util/helper/helper.go

Lines changed: 63 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"os"
55
"os/exec"
66
"path/filepath"
7+
"sort"
78
"strings"
89

910
"github.com/lgdd/lfr-cli/internal/conf"
@@ -23,14 +24,27 @@ func IsSupportedJavaVersion(javaVersion int) bool {
2324
return false
2425
}
2526

26-
func FetchClientExtensionSamples(destination string) error {
27-
clientExtensionsSamplesPath := filepath.Join(destination, conf.ClientExtensionSampleProjectName)
27+
func FetchAllClientExtensionSamples(destination string) error {
28+
err := fetchClientExtensionSamples(destination, conf.ClientExtensionSampleProjectName)
29+
if err != nil {
30+
return err
31+
}
32+
33+
err = fetchClientExtensionSamples(destination, conf.ClientExtensionExtraSampleProjectName)
34+
if err != nil {
35+
return err
36+
}
37+
return nil
38+
}
39+
40+
func fetchClientExtensionSamples(destination, projectName string) error {
41+
clientExtensionsSamplesPath := filepath.Join(destination, projectName)
2842

2943
// Clone & checkout if ~/.lfr/liferay-portal does not exist
30-
if _, err := os.Stat(filepath.Join(destination, conf.ClientExtensionSampleProjectName)); err != nil {
44+
if _, err := os.Stat(filepath.Join(destination, projectName)); err != nil {
3145
var gitProject strings.Builder
3246
gitProject.WriteString("https://github.com/lgdd/")
33-
gitProject.WriteString(conf.ClientExtensionSampleProjectName)
47+
gitProject.WriteString(projectName)
3448

3549
gitClone := exec.Command("git", "clone", "--depth", "1", gitProject.String())
3650
gitClone.Dir = destination
@@ -54,7 +68,7 @@ func updateClientExtensionSamples(path string) {
5468
}
5569
}
5670

57-
func HandleClientExtensionsOffline(configPath string) {
71+
func HandleAllClientExtensionsOffline(configPath string) {
5872
if _, err := os.Stat(filepath.Join(configPath, conf.ClientExtensionSampleProjectName)); err != nil {
5973
logger.PrintWarn("Couldn't fetch client extensions samples from GitHub.\n")
6074
logger.Println("Copying embedded versions from the CLI instead.")
@@ -79,25 +93,65 @@ func HandleClientExtensionsOffline(configPath string) {
7993
}
8094
}
8195

96+
func handleClientExtensionsOffline(configPath, projectName string) {
97+
if _, err := os.Stat(filepath.Join(configPath, projectName)); err != nil {
98+
logger.PrintWarn("Couldn't fetch client extensions samples from GitHub.\n")
99+
logger.Println("Copying embedded versions from the CLI instead.")
100+
err = fileutil.CreateDirsFromAssets("tpl/client_extension", configPath)
101+
if err != nil {
102+
logger.Fatal(err.Error())
103+
}
104+
105+
err = fileutil.CreateFilesFromAssets("tpl/client_extension", configPath)
106+
if err != nil {
107+
logger.Fatal(err.Error())
108+
}
109+
110+
oldGitDirectory := filepath.Join(configPath, projectName, "git")
111+
newGitDirectory := filepath.Join(configPath, projectName, ".git")
112+
if err := os.Rename(oldGitDirectory, newGitDirectory); err != nil {
113+
logger.Fatal(err.Error())
114+
}
115+
} else {
116+
logger.PrintWarn("Couldn't update client extensions samples from GitHub.\n")
117+
logger.Print("Using latest versions fetched.")
118+
}
119+
}
120+
82121
func GetClientExtensionSampleNames() []string {
83-
if err := FetchClientExtensionSamples(conf.GetConfigPath()); err != nil {
84-
HandleClientExtensionsOffline(conf.GetConfigPath())
122+
if err := FetchAllClientExtensionSamples(conf.GetConfigPath()); err != nil {
123+
HandleAllClientExtensionsOffline(conf.GetConfigPath())
85124
}
86125

87126
clientExtensionSamplesPath := filepath.Join(conf.GetConfigPath(), conf.ClientExtensionSampleProjectName)
88-
sampleDirs, err := os.ReadDir(clientExtensionSamplesPath)
127+
officialSampleDirs, err := os.ReadDir(clientExtensionSamplesPath)
128+
129+
if err != nil {
130+
logger.Fatal(err.Error())
131+
}
132+
133+
clientExtensionExtraSamplesPath := filepath.Join(conf.GetConfigPath(), conf.ClientExtensionExtraSampleProjectName)
134+
extraSampleDirs, err := os.ReadDir(clientExtensionExtraSamplesPath)
89135

90136
if err != nil {
91137
logger.Fatal(err.Error())
92138
}
93139

94140
var samples []string
95141

96-
for _, sampleDir := range sampleDirs {
142+
for _, sampleDir := range officialSampleDirs {
97143
if sampleDir.IsDir() && strings.Contains(sampleDir.Name(), conf.ClientExtensionSamplePrefix) {
98144
samples = append(samples, strings.Split(sampleDir.Name(), conf.ClientExtensionSamplePrefix)[1])
99145
}
100146
}
101147

148+
for _, sampleDir := range extraSampleDirs {
149+
if sampleDir.IsDir() && strings.Contains(sampleDir.Name(), conf.ClientExtensionExtraSamplePrefix) {
150+
samples = append(samples, strings.Split(sampleDir.Name(), conf.ClientExtensionExtraSamplePrefix)[1])
151+
}
152+
}
153+
154+
sort.Sort(sort.StringSlice(samples))
155+
102156
return samples
103157
}

0 commit comments

Comments
 (0)