Skip to content

Commit 03e793d

Browse files
committed
rename
1 parent 5ed56c8 commit 03e793d

File tree

3 files changed

+49
-51
lines changed

3 files changed

+49
-51
lines changed

cmd/lk/agent.go

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -539,17 +539,16 @@ func createAgent(ctx context.Context, cmd *cli.Command) error {
539539
return err
540540
}
541541

542-
projectType, err := agentfs.DetectProjectType(os.DirFS(workingDir))
543-
fmt.Printf("Detected project type [%s]\n", util.Accented(string(projectType)))
542+
appLanguage, err := agentfs.DetectAppLanguage(os.DirFS(workingDir))
544543
if err != nil {
545-
return fmt.Errorf("unable to determine project type: %w, please use a supported project type, or create your own Dockerfile in the current directory", err)
544+
return fmt.Errorf("unable to determine app language: %w. Make sure you are inside an app directory and are using a supported app language", err)
546545
}
547546

548-
if err := requireDockerfile(ctx, cmd, workingDir, projectType, settingsMap); err != nil {
547+
if err := requireDockerfile(ctx, cmd, workingDir, appLanguage, settingsMap); err != nil {
549548
return err
550549
}
551550

552-
if err := agentfs.CheckSDKVersion(workingDir, projectType, settingsMap); err != nil {
551+
if err := agentfs.CheckSDKVersion(workingDir, appLanguage, settingsMap); err != nil {
553552
if cmd.Bool("skip-sdk-check") {
554553
fmt.Printf("Error checking SDK version: %v, skipping...\n", err)
555554
} else {
@@ -715,17 +714,17 @@ func deployAgent(ctx context.Context, cmd *cli.Command) error {
715714
req.Secrets = secrets
716715
}
717716

718-
projectType, err := agentfs.DetectProjectType(os.DirFS(workingDir))
717+
appLanguage, err := agentfs.DetectAppLanguage(os.DirFS(workingDir))
719718
if err != nil {
720-
return fmt.Errorf("unable to determine project type: %w, please use a supported project type, or create your own Dockerfile in the current directory", err)
719+
return fmt.Errorf("unable to determine app language: %w. Make sure you are inside an app directory and are using a supported app language", err)
721720
}
722721

723722
settingsMap, err := getClientSettings(ctx, cmd.Bool("silent"))
724723
if err != nil {
725724
return err
726725
}
727726

728-
if err := agentfs.CheckSDKVersion(workingDir, projectType, settingsMap); err != nil {
727+
if err := agentfs.CheckSDKVersion(workingDir, appLanguage, settingsMap); err != nil {
729728
if cmd.Bool("skip-sdk-check") {
730729
fmt.Printf("Error checking SDK version: %v, skipping...\n", err)
731730
} else {
@@ -1322,7 +1321,7 @@ func requireSecrets(_ context.Context, cmd *cli.Command, required, lazy bool) ([
13221321
return secretsSlice, nil
13231322
}
13241323

1325-
func requireDockerfile(ctx context.Context, cmd *cli.Command, workingDir string, projectType agentfs.ProjectType, settingsMap map[string]string) error {
1324+
func requireDockerfile(ctx context.Context, cmd *cli.Command, workingDir string, projectLanguage agentfs.ProjectLanguage, settingsMap map[string]string) error {
13261325
dockerfileExists, err := agentfs.HasDockerfile(workingDir)
13271326
if err != nil {
13281327
return err
@@ -1339,15 +1338,15 @@ func requireDockerfile(ctx context.Context, cmd *cli.Command, workingDir string,
13391338
"Creating Dockerfile...",
13401339
ctx,
13411340
func(ctx context.Context) error {
1342-
return agentfs.CreateDockerfile(workingDir, projectType, settingsMap)
1341+
return agentfs.CreateDockerfile(workingDir, projectLanguage, settingsMap)
13431342
},
13441343
)
13451344
if err != nil {
13461345
return err
13471346
}
13481347
fmt.Println("Created [" + util.Accented("Dockerfile") + "]")
13491348
} else {
1350-
if err := agentfs.CreateDockerfile(workingDir, projectType, settingsMap); err != nil {
1349+
if err := agentfs.CreateDockerfile(workingDir, projectLanguage, settingsMap); err != nil {
13511350
return err
13521351
}
13531352
}
@@ -1361,7 +1360,7 @@ func requireDockerfile(ctx context.Context, cmd *cli.Command, workingDir string,
13611360
if !cmd.Bool("silent") {
13621361
fmt.Println("Creating .dockerignore...")
13631362
}
1364-
if err := agentfs.CreateDockerIgnoreFile(workingDir, projectType); err != nil {
1363+
if err := agentfs.CreateDockerIgnoreFile(workingDir, projectLanguage); err != nil {
13651364
return err
13661365
}
13671366
fmt.Println("Created [" + util.Accented(".dockerignore") + "]")
@@ -1435,10 +1434,9 @@ func generateAgentDockerfile(ctx context.Context, cmd *cli.Command) error {
14351434
return err
14361435
}
14371436

1438-
projectType, err := agentfs.DetectProjectType(os.DirFS(workingDir))
1439-
fmt.Printf("Detected project type [%s]\n", util.Accented(string(projectType)))
1437+
appLanguage, err := agentfs.DetectAppLanguage(os.DirFS(workingDir))
14401438
if err != nil {
1441-
return fmt.Errorf("unable to determine project type: %w, please use a supported project type, or create your own Dockerfile in the current directory", err)
1439+
return fmt.Errorf("unable to determine app language: %w. Make sure you are inside an app directory and are using a supported app language", err)
14421440
}
14431441

14441442
dockerfilePath := filepath.Join(workingDir, "Dockerfile")
@@ -1463,7 +1461,7 @@ func generateAgentDockerfile(ctx context.Context, cmd *cli.Command) error {
14631461
}
14641462

14651463
// Generate contents without writing
1466-
dockerfileContent, dockerignoreContent, err := agentfs.GenerateDockerArtifacts(workingDir, projectType, settingsMap)
1464+
dockerfileContent, dockerignoreContent, err := agentfs.GenerateDockerArtifacts(workingDir, appLanguage, settingsMap)
14671465
if err != nil {
14681466
return err
14691467
}

pkg/agentfs/detect.go

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -22,24 +22,24 @@ import (
2222
"github.com/pelletier/go-toml"
2323
)
2424

25-
type ProjectType string
25+
type AppLanguage string
2626

2727
const (
28-
ProjectTypePythonPip ProjectType = "python.pip"
29-
ProjectTypePythonUV ProjectType = "python.uv"
30-
ProjectTypeNode ProjectType = "node"
31-
ProjectTypeUnknown ProjectType = "unknown"
28+
AppLanguagePythonPip AppLanguage = "python.pip"
29+
AppLanguagePythonUV AppLanguage = "python.uv"
30+
AppLanguageNode AppLanguage = "node"
31+
AppLanguageUnknown AppLanguage = "unknown"
3232
)
3333

34-
func (p ProjectType) IsPython() bool {
35-
return p == ProjectTypePythonPip || p == ProjectTypePythonUV
34+
func (p AppLanguage) IsPython() bool {
35+
return p == AppLanguagePythonPip || p == AppLanguagePythonUV
3636
}
3737

38-
func (p ProjectType) IsNode() bool {
39-
return p == ProjectTypeNode
38+
func (p AppLanguage) IsNode() bool {
39+
return p == AppLanguageNode
4040
}
4141

42-
func (p ProjectType) Lang() string {
42+
func (p AppLanguage) Lang() string {
4343
switch {
4444
case p.IsPython():
4545
return "Python"
@@ -50,7 +50,7 @@ func (p ProjectType) Lang() string {
5050
}
5151
}
5252

53-
func (p ProjectType) FileExt() string {
53+
func (p AppLanguage) FileExt() string {
5454
switch {
5555
case p.IsPython():
5656
return ".py"
@@ -61,7 +61,7 @@ func (p ProjectType) FileExt() string {
6161
}
6262
}
6363

64-
func (p ProjectType) DefaultEntrypoint() string {
64+
func (p AppLanguage) DefaultEntrypoint() string {
6565
switch {
6666
case p.IsPython():
6767
return "agent.py"
@@ -72,21 +72,21 @@ func (p ProjectType) DefaultEntrypoint() string {
7272
}
7373
}
7474

75-
func DetectProjectType(dir fs.FS) (ProjectType, error) {
75+
func DetectAppLanguage(dir fs.FS) (AppLanguage, error) {
7676
// Node.js detection
7777
if util.FileExists(dir, "package.json") {
78-
return ProjectTypeNode, nil
78+
return AppLanguageNode, nil
7979
}
8080

8181
// Python detection
8282
if util.FileExists(dir, "uv.lock") {
83-
return ProjectTypePythonUV, nil
83+
return AppLanguagePythonUV, nil
8484
}
8585
if util.FileExists(dir, "poetry.lock") || util.FileExists(dir, "Pipfile.lock") {
86-
return ProjectTypePythonPip, nil // We can treat as pip-compatible
86+
return AppLanguagePythonPip, nil // We can treat as pip-compatible
8787
}
8888
if util.FileExists(dir, "requirements.txt") {
89-
return ProjectTypePythonPip, nil
89+
return AppLanguagePythonPip, nil
9090
}
9191
if util.FileExists(dir, "pyproject.toml") {
9292
data, err := fs.ReadFile(dir, "pyproject.toml")
@@ -95,23 +95,23 @@ func DetectProjectType(dir fs.FS) (ProjectType, error) {
9595
if err := toml.Unmarshal(data, &doc); err == nil {
9696
if tool, ok := doc["tool"].(map[string]any); ok {
9797
if _, hasPoetry := tool["poetry"]; hasPoetry {
98-
return ProjectTypePythonPip, nil
98+
return AppLanguagePythonPip, nil
9999
}
100100
if _, hasPdm := tool["pdm"]; hasPdm {
101-
return ProjectTypePythonPip, nil
101+
return AppLanguagePythonPip, nil
102102
}
103103
if _, hasHatch := tool["hatch"]; hasHatch {
104-
return ProjectTypePythonPip, nil
104+
return AppLanguagePythonPip, nil
105105
}
106106
if _, hasUv := tool["uv"]; hasUv {
107-
return ProjectTypePythonUV, nil
107+
return AppLanguagePythonUV, nil
108108
}
109109
}
110110
}
111111
}
112112
// Default to pip if pyproject.toml is present but not informative
113-
return ProjectTypePythonPip, nil
113+
return AppLanguagePythonPip, nil
114114
}
115115

116-
return ProjectTypeUnknown, errors.New("project type could not be identified; expected package.json, requirements.txt, pyproject.toml, or lock files")
116+
return AppLanguageUnknown, errors.New("app language could not be identified; expected package.json, requirements.txt, pyproject.toml, or lock files")
117117
}

pkg/agentfs/docker.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,8 @@ func HasDockerIgnore(dir string) (bool, error) {
6262
return false, nil
6363
}
6464

65-
func CreateDockerIgnoreFile(dir string, projectType ProjectType) error {
66-
dockerIgnoreContent, err := embedfs.ReadFile(path.Join("examples", string(projectType)+".dockerignore"))
65+
func CreateDockerIgnoreFile(dir string, appLanguage AppLanguage) error {
66+
dockerIgnoreContent, err := embedfs.ReadFile(path.Join("examples", string(appLanguage)+".dockerignore"))
6767
if err != nil {
6868
return err
6969
}
@@ -73,8 +73,8 @@ func CreateDockerIgnoreFile(dir string, projectType ProjectType) error {
7373
return nil
7474
}
7575

76-
func CreateDockerfile(dir string, projectType ProjectType, settingsMap map[string]string) error {
77-
dockerfileContent, dockerIgnoreContent, err := GenerateDockerArtifacts(dir, projectType, settingsMap)
76+
func CreateDockerfile(dir string, appLanguage AppLanguage, settingsMap map[string]string) error {
77+
dockerfileContent, dockerIgnoreContent, err := GenerateDockerArtifacts(dir, appLanguage, settingsMap)
7878
if err != nil {
7979
return err
8080
}
@@ -93,34 +93,34 @@ func CreateDockerfile(dir string, projectType ProjectType, settingsMap map[strin
9393
// GenerateDockerArtifacts returns the Dockerfile and .dockerignore contents for the
9494
// provided project type without writing them to disk. The Dockerfile content may be
9595
// templated/validated (e.g., Python entrypoint).
96-
func GenerateDockerArtifacts(dir string, projectType ProjectType, settingsMap map[string]string) ([]byte, []byte, error) {
96+
func GenerateDockerArtifacts(dir string, appLanguage AppLanguage, settingsMap map[string]string) ([]byte, []byte, error) {
9797
if len(settingsMap) == 0 {
9898
return nil, nil, fmt.Errorf("unable to fetch client settings from server, please try again later")
9999
}
100100

101101
// NOTE: embed.FS uses unix-style path separators on all platforms, so cannot use filepath.Join here.
102102
// path.Join always uses '/' as the separator.
103-
dockerfileContent, err := embedfs.ReadFile(path.Join("examples", string(projectType)+".Dockerfile"))
103+
dockerfileContent, err := embedfs.ReadFile(path.Join("examples", string(appLanguage)+".Dockerfile"))
104104
if err != nil {
105105
return nil, nil, err
106106
}
107107

108108
// NOTE: embed.FS uses unix-style path separators on all platforms, so cannot use filepath.Join here
109109
// path.Join always uses '/' as the separator.
110-
dockerIgnoreContent, err := embedfs.ReadFile(path.Join("examples", string(projectType)+".dockerignore"))
110+
dockerIgnoreContent, err := embedfs.ReadFile(path.Join("examples", string(appLanguage)+".dockerignore"))
111111
if err != nil {
112112
return nil, nil, err
113113
}
114114

115-
dockerfileContent, err = validateEntrypoint(dir, dockerfileContent, dockerIgnoreContent, projectType)
115+
dockerfileContent, err = validateEntrypoint(dir, dockerfileContent, dockerIgnoreContent, appLanguage)
116116
if err != nil {
117117
return nil, nil, err
118118
}
119119

120120
return dockerfileContent, dockerIgnoreContent, nil
121121
}
122122

123-
func validateEntrypoint(dir string, dockerfileContent []byte, dockerignoreContent []byte, projectType ProjectType) ([]byte, error) {
123+
func validateEntrypoint(dir string, dockerfileContent []byte, dockerignoreContent []byte, appLanguage AppLanguage) ([]byte, error) {
124124
// Build matcher from the Dockerignore content so we don't consider ignored files
125125
reader := bytes.NewReader(dockerignoreContent)
126126
patterns, err := ignorefile.ReadAll(reader)
@@ -142,7 +142,7 @@ func validateEntrypoint(dir string, dockerfileContent []byte, dockerignoreConten
142142
} else if err != nil {
143143
return err
144144
}
145-
if !d.IsDir() && strings.HasSuffix(d.Name(), projectType.FileExt()) {
145+
if !d.IsDir() && strings.HasSuffix(d.Name(), appLanguage.FileExt()) {
146146
// Exclude double-underscore files (e.g., __init__.py) which cannot be entrypoint
147147
// except for __main__.py, which is the default entrypoint for Python.
148148
if strings.HasPrefix(d.Name(), "__") && d.Name() != "__main__.py" {
@@ -182,15 +182,15 @@ func validateEntrypoint(dir string, dockerfileContent []byte, dockerignoreConten
182182

183183
var newEntrypoint string
184184
if len(fileList) == 0 {
185-
newEntrypoint = projectType.DefaultEntrypoint()
185+
newEntrypoint = appLanguage.DefaultEntrypoint()
186186
} else if len(fileList) == 1 {
187187
newEntrypoint = fileList[0]
188188
} else {
189189
selected := fileList[0]
190190
form := huh.NewForm(
191191
huh.NewGroup(
192192
huh.NewSelect[string]().
193-
Title(fmt.Sprintf("Select the %s file which contains your agent's entrypoint", projectType.Lang())).
193+
Title(fmt.Sprintf("Select the %s file which contains your agent's entrypoint", appLanguage.Lang())).
194194
Options(huh.NewOptions(fileList...)...).
195195
Value(&selected).
196196
WithTheme(util.Theme),

0 commit comments

Comments
 (0)