Skip to content

chore: Rename Projects to Templates #880

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Apr 6, 2022
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
chore: Rename Projects to Templates
Customer feedback indicated projects was a confusing name.
After querying the team internally, it seemed unanimous
that it is indeed a confusing name.

Here's for a lil less confusion @ashmeer7 🥂
  • Loading branch information
kylecarbs committed Apr 5, 2022
commit 1ac8aedf28d794bb11792b8777c2993f9c7248fc
4 changes: 2 additions & 2 deletions cli/clitest/clitest.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,9 @@ func SetupConfig(t *testing.T, client *codersdk.Client, root config.Root) {
require.NoError(t, err)
}

// CreateProjectVersionSource writes the echo provisioner responses into a
// CreateTemplateVersionSource writes the echo provisioner responses into a
// new temporary testing directory.
func CreateProjectVersionSource(t *testing.T, responses *echo.Responses) string {
func CreateTemplateVersionSource(t *testing.T, responses *echo.Responses) string {
directory := t.TempDir()
data, err := echo.Tar(responses)
require.NoError(t, err)
Expand Down
2 changes: 1 addition & 1 deletion cli/clitest/clitest_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ func TestMain(m *testing.M) {

func TestCli(t *testing.T) {
t.Parallel()
clitest.CreateProjectVersionSource(t, nil)
clitest.CreateTemplateVersionSource(t, nil)
client := coderdtest.New(t, nil)
cmd, config := clitest.New(t)
clitest.SetupConfig(t, client, config)
Expand Down
2 changes: 1 addition & 1 deletion cli/cliui/parameter.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import (
"github.com/coder/coder/codersdk"
)

func ParameterSchema(cmd *cobra.Command, parameterSchema codersdk.ProjectVersionParameterSchema) (string, error) {
func ParameterSchema(cmd *cobra.Command, parameterSchema codersdk.TemplateVersionParameterSchema) (string, error) {
_, _ = fmt.Fprintln(cmd.OutOrStdout(), Styles.Bold.Render("var."+parameterSchema.Name))
if parameterSchema.Description != "" {
_, _ = fmt.Fprintln(cmd.OutOrStdout(), " "+strings.TrimSpace(strings.Join(strings.Split(parameterSchema.Description, "\n"), "\n "))+"\n")
Expand Down
8 changes: 4 additions & 4 deletions cli/configssh_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@ func TestConfigSSH(t *testing.T) {
client := coderdtest.New(t, nil)
user := coderdtest.CreateFirstUser(t, client)
coderdtest.NewProvisionerDaemon(t, client)
version := coderdtest.CreateProjectVersion(t, client, user.OrganizationID, nil)
coderdtest.AwaitProjectVersionJob(t, client, version.ID)
project := coderdtest.CreateProject(t, client, user.OrganizationID, version.ID)
workspace := coderdtest.CreateWorkspace(t, client, codersdk.Me, project.ID)
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil)
coderdtest.AwaitTemplateVersionJob(t, client, version.ID)
template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
workspace := coderdtest.CreateWorkspace(t, client, codersdk.Me, template.ID)
coderdtest.AwaitWorkspaceBuildJob(t, client, workspace.LatestBuild.ID)
tempFile, err := os.CreateTemp(t.TempDir(), "")
require.NoError(t, err)
Expand Down
2 changes: 1 addition & 1 deletion cli/login.go
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ func login() *cobra.Command {
cliui.Styles.Paragraph.Render(fmt.Sprintf("Welcome to Coder, %s! You're authenticated.", cliui.Styles.Keyword.Render(username)))+"\n")

_, _ = fmt.Fprintf(cmd.OutOrStdout(),
cliui.Styles.Paragraph.Render("Get started by creating a project: "+cliui.Styles.Code.Render("coder projects create"))+"\n")
cliui.Styles.Paragraph.Render("Get started by creating a template: "+cliui.Styles.Code.Render("coder templates create"))+"\n")
return nil
}

Expand Down
10 changes: 5 additions & 5 deletions cli/parameters.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,12 @@ func parseScopeAndID(ctx context.Context, client *codersdk.Client, organization
}
scopeID = org.ID
}
case codersdk.ParameterProject:
project, err := client.ProjectByName(ctx, organization.ID, name)
case codersdk.ParameterTemplate:
template, err := client.TemplateByName(ctx, organization.ID, name)
if err != nil {
return scope, uuid.Nil, err
}
scopeID = project.ID
scopeID = template.ID
case codersdk.ParameterUser:
uid, _ := uuid.Parse(name)
user, err := client.User(ctx, uid)
Expand All @@ -67,8 +67,8 @@ func parseParameterScope(scope string) (codersdk.ParameterScope, error) {
switch scope {
case string(codersdk.ParameterOrganization):
return codersdk.ParameterOrganization, nil
case string(codersdk.ParameterProject):
return codersdk.ParameterProject, nil
case string(codersdk.ParameterTemplate):
return codersdk.ParameterTemplate, nil
case string(codersdk.ParameterUser):
return codersdk.ParameterUser, nil
case string(codersdk.ParameterWorkspace):
Expand Down
6 changes: 3 additions & 3 deletions cli/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,9 @@ func Root() *cobra.Command {
Example: cliui.Styles.Paragraph.Render(`Start Coder in "dev" mode. This dev-mode requires no further setup, and your local `+cliui.Styles.Code.Render("coder")+` CLI will be authenticated to talk to it. This makes it easy to experiment with Coder.`) + `

` + cliui.Styles.Code.Render("$ coder start --dev") + `
` + cliui.Styles.Paragraph.Render("Get started by creating a project from an example.") + `
` + cliui.Styles.Paragraph.Render("Get started by creating a template from an example.") + `

` + cliui.Styles.Code.Render("$ coder projects init"),
` + cliui.Styles.Code.Render("$ coder templates init"),
}
// Customizes the color of headings to make subcommands
// more visually appealing.
Expand All @@ -65,7 +65,7 @@ func Root() *cobra.Command {
start(),
login(),
parameters(),
projects(),
templates(),
users(),
workspaces(),
ssh(),
Expand Down
16 changes: 8 additions & 8 deletions cli/ssh_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func TestSSH(t *testing.T) {
user := coderdtest.CreateFirstUser(t, client)
coderdtest.NewProvisionerDaemon(t, client)
agentToken := uuid.NewString()
version := coderdtest.CreateProjectVersion(t, client, user.OrganizationID, &echo.Responses{
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, &echo.Responses{
Parse: echo.ParseComplete,
ProvisionDryRun: echo.ProvisionComplete,
Provision: []*proto.Provision_Response{{
Expand All @@ -51,9 +51,9 @@ func TestSSH(t *testing.T) {
},
}},
})
coderdtest.AwaitProjectVersionJob(t, client, version.ID)
project := coderdtest.CreateProject(t, client, user.OrganizationID, version.ID)
workspace := coderdtest.CreateWorkspace(t, client, codersdk.Me, project.ID)
coderdtest.AwaitTemplateVersionJob(t, client, version.ID)
template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
workspace := coderdtest.CreateWorkspace(t, client, codersdk.Me, template.ID)
go func() {
// Run this async so the SSH command has to wait for
// the build and agent to connect!
Expand Down Expand Up @@ -89,7 +89,7 @@ func TestSSH(t *testing.T) {
user := coderdtest.CreateFirstUser(t, client)
coderdtest.NewProvisionerDaemon(t, client)
agentToken := uuid.NewString()
version := coderdtest.CreateProjectVersion(t, client, user.OrganizationID, &echo.Responses{
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, &echo.Responses{
Parse: echo.ParseComplete,
ProvisionDryRun: echo.ProvisionComplete,
Provision: []*proto.Provision_Response{{
Expand All @@ -109,9 +109,9 @@ func TestSSH(t *testing.T) {
},
}},
})
coderdtest.AwaitProjectVersionJob(t, client, version.ID)
project := coderdtest.CreateProject(t, client, user.OrganizationID, version.ID)
workspace := coderdtest.CreateWorkspace(t, client, codersdk.Me, project.ID)
coderdtest.AwaitTemplateVersionJob(t, client, version.ID)
template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
workspace := coderdtest.CreateWorkspace(t, client, codersdk.Me, template.ID)
go func() {
// Run this async so the SSH command has to wait for
// the build and agent to connect!
Expand Down
2 changes: 1 addition & 1 deletion cli/start.go
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ func start() *cobra.Command {
cliui.Styles.Field.Render("dev")+` mode. All data is in-memory! Do not use in production. Press `+cliui.Styles.Field.Render("ctrl+c")+` to clean up provisioned infrastructure.`))+
`
`+
cliui.Styles.Paragraph.Render(cliui.Styles.Wrap.Render(cliui.Styles.Prompt.String()+`Run `+cliui.Styles.Code.Render("coder projects init")+" in a new terminal to get started.\n"))+`
cliui.Styles.Paragraph.Render(cliui.Styles.Wrap.Render(cliui.Styles.Prompt.String()+`Run `+cliui.Styles.Code.Render("coder templates init")+" in a new terminal to get started.\n"))+`
`)
} else {
// This is helpful for tests, but can be silently ignored.
Expand Down
8 changes: 4 additions & 4 deletions cli/start_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -187,10 +187,10 @@ func TestStart(t *testing.T) {
coderdtest.NewProvisionerDaemon(t, client)

// Create a workspace so the cleanup occurs!
version := coderdtest.CreateProjectVersion(t, client, orgs[0].ID, nil)
coderdtest.AwaitProjectVersionJob(t, client, version.ID)
project := coderdtest.CreateProject(t, client, orgs[0].ID, version.ID)
workspace := coderdtest.CreateWorkspace(t, client, codersdk.Me, project.ID)
version := coderdtest.CreateTemplateVersion(t, client, orgs[0].ID, nil)
coderdtest.AwaitTemplateVersionJob(t, client, version.ID)
template := coderdtest.CreateTemplate(t, client, orgs[0].ID, version.ID)
workspace := coderdtest.CreateWorkspace(t, client, codersdk.Me, template.ID)
coderdtest.AwaitWorkspaceBuildJob(t, client, workspace.LatestBuild.ID)

require.NoError(t, err)
Expand Down
54 changes: 27 additions & 27 deletions cli/projectcreate.go → cli/templatecreate.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,15 @@ import (
"github.com/coder/coder/provisionersdk"
)

func projectCreate() *cobra.Command {
func templateCreate() *cobra.Command {
var (
yes bool
directory string
provisioner string
)
cmd := &cobra.Command{
Use: "create [name]",
Short: "Create a project from the current directory",
Short: "Create a template from the current directory",
RunE: func(cmd *cobra.Command, args []string) error {
client, err := createClient(cmd)
if err != nil {
Expand All @@ -39,15 +39,15 @@ func projectCreate() *cobra.Command {
return err
}

var projectName string
var templateName string
if len(args) == 0 {
projectName = filepath.Base(directory)
templateName = filepath.Base(directory)
} else {
projectName = args[0]
templateName = args[0]
}
_, err = client.ProjectByName(cmd.Context(), organization.ID, projectName)
_, err = client.TemplateByName(cmd.Context(), organization.ID, templateName)
if err == nil {
return xerrors.Errorf("A project already exists named %q!", projectName)
return xerrors.Errorf("A template already exists named %q!", templateName)
}

spin := spinner.New(spinner.CharSets[5], 100*time.Millisecond)
Expand All @@ -69,14 +69,14 @@ func projectCreate() *cobra.Command {
spin = spinner.New(spinner.CharSets[5], 100*time.Millisecond)
spin.Writer = cmd.OutOrStdout()
spin.Suffix = cliui.Styles.Keyword.Render("Something")
job, parameters, err := createValidProjectVersion(cmd, client, organization, database.ProvisionerType(provisioner), resp.Hash)
job, parameters, err := createValidTemplateVersion(cmd, client, organization, database.ProvisionerType(provisioner), resp.Hash)
if err != nil {
return err
}

if !yes {
_, err = cliui.Prompt(cmd, cliui.PromptOptions{
Text: "Create project?",
Text: "Create template?",
IsConfirm: true,
Default: "yes",
})
Expand All @@ -88,16 +88,16 @@ func projectCreate() *cobra.Command {
}
}

_, err = client.CreateProject(cmd.Context(), organization.ID, codersdk.CreateProjectRequest{
Name: projectName,
_, err = client.CreateTemplate(cmd.Context(), organization.ID, codersdk.CreateTemplateRequest{
Name: templateName,
VersionID: job.ID,
ParameterValues: parameters,
})
if err != nil {
return err
}

_, _ = fmt.Fprintf(cmd.OutOrStdout(), "The %s project has been created!\n", projectName)
_, _ = fmt.Fprintf(cmd.OutOrStdout(), "The %s template has been created!\n", templateName)
return nil
},
}
Expand All @@ -113,9 +113,9 @@ func projectCreate() *cobra.Command {
return cmd
}

func createValidProjectVersion(cmd *cobra.Command, client *codersdk.Client, organization codersdk.Organization, provisioner database.ProvisionerType, hash string, parameters ...codersdk.CreateParameterRequest) (*codersdk.ProjectVersion, []codersdk.CreateParameterRequest, error) {
func createValidTemplateVersion(cmd *cobra.Command, client *codersdk.Client, organization codersdk.Organization, provisioner database.ProvisionerType, hash string, parameters ...codersdk.CreateParameterRequest) (*codersdk.TemplateVersion, []codersdk.CreateParameterRequest, error) {
before := time.Now()
version, err := client.CreateProjectVersion(cmd.Context(), organization.ID, codersdk.CreateProjectVersionRequest{
version, err := client.CreateTemplateVersion(cmd.Context(), organization.ID, codersdk.CreateTemplateVersionRequest{
StorageMethod: database.ProvisionerStorageMethodFile,
StorageSource: hash,
Provisioner: provisioner,
Expand All @@ -127,51 +127,51 @@ func createValidProjectVersion(cmd *cobra.Command, client *codersdk.Client, orga

err = cliui.ProvisionerJob(cmd.Context(), cmd.OutOrStdout(), cliui.ProvisionerJobOptions{
Fetch: func() (codersdk.ProvisionerJob, error) {
version, err := client.ProjectVersion(cmd.Context(), version.ID)
version, err := client.TemplateVersion(cmd.Context(), version.ID)
return version.Job, err
},
Cancel: func() error {
return client.CancelProjectVersion(cmd.Context(), version.ID)
return client.CancelTemplateVersion(cmd.Context(), version.ID)
},
Logs: func() (<-chan codersdk.ProvisionerJobLog, error) {
return client.ProjectVersionLogsAfter(cmd.Context(), version.ID, before)
return client.TemplateVersionLogsAfter(cmd.Context(), version.ID, before)
},
})
if err != nil {
if !provisionerd.IsMissingParameterError(err.Error()) {
return nil, nil, err
}
}
version, err = client.ProjectVersion(cmd.Context(), version.ID)
version, err = client.TemplateVersion(cmd.Context(), version.ID)
if err != nil {
return nil, nil, err
}
parameterSchemas, err := client.ProjectVersionSchema(cmd.Context(), version.ID)
parameterSchemas, err := client.TemplateVersionSchema(cmd.Context(), version.ID)
if err != nil {
return nil, nil, err
}
parameterValues, err := client.ProjectVersionParameters(cmd.Context(), version.ID)
parameterValues, err := client.TemplateVersionParameters(cmd.Context(), version.ID)
if err != nil {
return nil, nil, err
}

if provisionerd.IsMissingParameterError(version.Job.Error) {
valuesBySchemaID := map[string]codersdk.ProjectVersionParameter{}
valuesBySchemaID := map[string]codersdk.TemplateVersionParameter{}
for _, parameterValue := range parameterValues {
valuesBySchemaID[parameterValue.SchemaID.String()] = parameterValue
}
sort.Slice(parameterSchemas, func(i, j int) bool {
return parameterSchemas[i].Name < parameterSchemas[j].Name
})
missingSchemas := make([]codersdk.ProjectVersionParameterSchema, 0)
missingSchemas := make([]codersdk.TemplateVersionParameterSchema, 0)
for _, parameterSchema := range parameterSchemas {
_, ok := valuesBySchemaID[parameterSchema.ID.String()]
if ok {
continue
}
missingSchemas = append(missingSchemas, parameterSchema)
}
_, _ = fmt.Fprintln(cmd.OutOrStdout(), cliui.Styles.Paragraph.Render("This project has required variables! They are scoped to the project, and not viewable after being set.")+"\r\n")
_, _ = fmt.Fprintln(cmd.OutOrStdout(), cliui.Styles.Paragraph.Render("This template has required variables! They are scoped to the template, and not viewable after being set.")+"\r\n")
for _, parameterSchema := range missingSchemas {
value, err := cliui.ParameterSchema(cmd, parameterSchema)
if err != nil {
Expand All @@ -185,18 +185,18 @@ func createValidProjectVersion(cmd *cobra.Command, client *codersdk.Client, orga
})
_, _ = fmt.Fprintln(cmd.OutOrStdout())
}
return createValidProjectVersion(cmd, client, organization, provisioner, hash, parameters...)
return createValidTemplateVersion(cmd, client, organization, provisioner, hash, parameters...)
}

if version.Job.Status != codersdk.ProvisionerJobSucceeded {
return nil, nil, xerrors.New(version.Job.Error)
}

_, _ = fmt.Fprintf(cmd.OutOrStdout(), cliui.Styles.Checkmark.String()+" Successfully imported project source!\n")
_, _ = fmt.Fprintf(cmd.OutOrStdout(), cliui.Styles.Checkmark.String()+" Successfully imported template source!\n")

resources, err := client.ProjectVersionResources(cmd.Context(), version.ID)
resources, err := client.TemplateVersionResources(cmd.Context(), version.ID)
if err != nil {
return nil, nil, err
}
return &version, parameters, displayProjectVersionInfo(cmd, resources)
return &version, parameters, displayTemplateVersionInfo(cmd, resources)
}
8 changes: 4 additions & 4 deletions cli/projectcreate_test.go → cli/templatecreate_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,17 @@ import (
"github.com/coder/coder/pty/ptytest"
)

func TestProjectCreate(t *testing.T) {
func TestTemplateCreate(t *testing.T) {
t.Parallel()
t.Run("Create", func(t *testing.T) {
t.Parallel()
client := coderdtest.New(t, nil)
coderdtest.CreateFirstUser(t, client)
source := clitest.CreateProjectVersionSource(t, &echo.Responses{
source := clitest.CreateTemplateVersionSource(t, &echo.Responses{
Parse: echo.ParseComplete,
Provision: echo.ProvisionComplete,
})
cmd, root := clitest.New(t, "projects", "create", "my-project", "--directory", source, "--provisioner", string(database.ProvisionerTypeEcho))
cmd, root := clitest.New(t, "templates", "create", "my-template", "--directory", source, "--provisioner", string(database.ProvisionerTypeEcho))
clitest.SetupConfig(t, client, root)
_ = coderdtest.NewProvisionerDaemon(t, client)
doneChan := make(chan struct{})
Expand All @@ -35,7 +35,7 @@ func TestProjectCreate(t *testing.T) {
require.NoError(t, err)
}()
matches := []string{
"Create project?", "yes",
"Create template?", "yes",
}
for i := 0; i < len(matches); i += 2 {
match := matches[i]
Expand Down
2 changes: 1 addition & 1 deletion cli/projectedit.go → cli/templateedit.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package cli

import "github.com/spf13/cobra"

func projectEdit() *cobra.Command {
func templateEdit() *cobra.Command {
return &cobra.Command{
Use: "edit",
RunE: func(cmd *cobra.Command, args []string) error {
Expand Down
Loading