Merge "v.io/jiri: set default profiles appropriately."
diff --git a/cmd/jiri/profile.go b/cmd/jiri/profile.go
index a472a09..aa78d3f 100644
--- a/cmd/jiri/profile.go
+++ b/cmd/jiri/profile.go
@@ -18,5 +18,5 @@
 
 func init() {
 	profilescmdline.RegisterReaderCommands(cmdProfile, jiri.ProfilesDBDir)
-	profilescmdline.RegisterManagementCommands(cmdProfile, "", jiri.ProfilesDBDir, jiri.ProfilesRootDir)
+	profilescmdline.RegisterManagementCommands(cmdProfile, true, "", jiri.ProfilesDBDir, jiri.ProfilesRootDir)
 }
diff --git a/profile.go b/profile.go
index a472a09..aa78d3f 100644
--- a/profile.go
+++ b/profile.go
@@ -18,5 +18,5 @@
 
 func init() {
 	profilescmdline.RegisterReaderCommands(cmdProfile, jiri.ProfilesDBDir)
-	profilescmdline.RegisterManagementCommands(cmdProfile, "", jiri.ProfilesDBDir, jiri.ProfilesRootDir)
+	profilescmdline.RegisterManagementCommands(cmdProfile, true, "", jiri.ProfilesDBDir, jiri.ProfilesRootDir)
 }
diff --git a/profiles/.api b/profiles/.api
index 88be259..b106611 100644
--- a/profiles/.api
+++ b/profiles/.api
@@ -15,7 +15,6 @@
 pkg profiles, func NewTarget(string, ...string) (Target, error)
 pkg profiles, func NewVersionInfo(string, map[string]interface{}, string) *VersionInfo
 pkg profiles, func QualifiedProfileName(string, string) string
-pkg profiles, func RegisterProfilesFlag(*flag.FlagSet, *string)
 pkg profiles, func RegisterTargetAndEnvFlags(*flag.FlagSet, *Target)
 pkg profiles, func RegisterTargetFlag(*flag.FlagSet, *Target)
 pkg profiles, func RemoveTarget(Targets, *Target) Targets
diff --git a/profiles/flags.go b/profiles/flags.go
index 53c1449..f426171 100644
--- a/profiles/flags.go
+++ b/profiles/flags.go
@@ -19,11 +19,6 @@
 	flags.Var(&target.commandLineEnv, "env", target.commandLineEnv.Usage())
 }
 
-// RegisterProfilesFlag registers the --profiles flag
-func RegisterProfilesFlag(flags *flag.FlagSet, profiles *string) {
-	flags.StringVar(profiles, "profiles", "base,jiri", "a comma separated list of profiles to use")
-}
-
 // RegisterTargetFlag registers the commonly used --target flag with
 // the supplied FlagSet.
 func RegisterTargetFlag(flags *flag.FlagSet, target *Target) {
diff --git a/profiles/profilescmdline/.api b/profiles/profilescmdline/.api
index 9d99303..a435258 100644
--- a/profiles/profilescmdline/.api
+++ b/profiles/profilescmdline/.api
@@ -1,8 +1,7 @@
-pkg profilescmdline, const DefaultProfiles ideal-string
 pkg profilescmdline, func HelpMsg() string
 pkg profilescmdline, func IsFlagSet(*flag.FlagSet, string) bool
 pkg profilescmdline, func RegisterDBPathFlag(*flag.FlagSet, *string, string)
-pkg profilescmdline, func RegisterManagementCommands(*cmdline.Command, string, string, string)
+pkg profilescmdline, func RegisterManagementCommands(*cmdline.Command, bool, string, string, string)
 pkg profilescmdline, func RegisterMergePoliciesFlag(*flag.FlagSet, *profilesreader.MergePolicies)
 pkg profilescmdline, func RegisterProfilesFlag(*flag.FlagSet, *string)
 pkg profilescmdline, func RegisterReaderCommands(*cmdline.Command, string)
diff --git a/profiles/profilescmdline/internal/i1/i1.go b/profiles/profilescmdline/internal/i1/i1.go
index 1b3c1bc..4b1cc3e 100644
--- a/profiles/profilescmdline/internal/i1/i1.go
+++ b/profiles/profilescmdline/internal/i1/i1.go
@@ -28,7 +28,7 @@
 
 func main() {
 	profilesmanager.Register(example.New("i1", "eg"))
-	profilescmdline.RegisterManagementCommands(commandLineDriver, "i1", jiri.ProfilesDBDir, jiri.ProfilesRootDir)
+	profilescmdline.RegisterManagementCommands(commandLineDriver, true, "i1", jiri.ProfilesDBDir, jiri.ProfilesRootDir)
 	tool.InitializeRunFlags(&commandLineDriver.Flags)
 	cmdline.Main(commandLineDriver)
 }
diff --git a/profiles/profilescmdline/internal/i2/i2.go b/profiles/profilescmdline/internal/i2/i2.go
index efb16be..70fd08b 100644
--- a/profiles/profilescmdline/internal/i2/i2.go
+++ b/profiles/profilescmdline/internal/i2/i2.go
@@ -29,7 +29,7 @@
 
 func main() {
 	profilesmanager.Register(example.New("i2", "eg"))
-	profilescmdline.RegisterManagementCommands(commandLineDriver, "i2", jiri.ProfilesDBDir, jiri.ProfilesRootDir)
+	profilescmdline.RegisterManagementCommands(commandLineDriver, true, "i2", jiri.ProfilesDBDir, jiri.ProfilesRootDir)
 	tool.InitializeRunFlags(&commandLineDriver.Flags)
 	cmdline.Main(commandLineDriver)
 }
diff --git a/profiles/profilescmdline/manager_cmdline.go b/profiles/profilescmdline/manager_cmdline.go
index 110f9a3..95e8f59 100644
--- a/profiles/profilescmdline/manager_cmdline.go
+++ b/profiles/profilescmdline/manager_cmdline.go
@@ -254,11 +254,12 @@
 	updateFlags      updateFlagValues
 	availableFlags   availableFlagValues
 	profileInstaller string
+	runSubcommands   bool
 )
 
 // RegisterManagementCommands registers the management subcommands:
 // uninstall, install, update and cleanup.
-func RegisterManagementCommands(parent *cmdline.Command, installer, defaultDBPath, defaultProfilesPath string) {
+func RegisterManagementCommands(parent *cmdline.Command, useSubcommands bool, installer, defaultDBPath, defaultProfilesPath string) {
 	cmdInstall := newCmdInstall()
 	cmdUninstall := newCmdUninstall()
 	cmdUpdate := newCmdUpdate()
@@ -271,9 +272,13 @@
 	initAvailableCommand(&cmdAvailable.Flags, installer, defaultDBPath, defaultProfilesPath)
 	parent.Children = append(parent.Children, cmdInstall, cmdUninstall, cmdUpdate, cmdCleanup, cmdAvailable)
 	profileInstaller = installer
+	runSubcommands = useSubcommands
 }
 
 func findProfileSubcommands(jirix *jiri.X) []string {
+	if !runSubcommands {
+		return []string{}
+	}
 	fi, err := os.Stat(filepath.Join(jirix.Root, jiri.ProfilesDBDir))
 	if err == nil && fi.IsDir() {
 		env := cmdline.EnvFromOS()
diff --git a/profiles/profilescmdline/manager_test.go b/profiles/profilescmdline/manager_test.go
index 26c05c8..38cd5d7 100644
--- a/profiles/profilescmdline/manager_test.go
+++ b/profiles/profilescmdline/manager_test.go
@@ -30,7 +30,7 @@
 func TestManagerArgs(t *testing.T) {
 	profilescmdline.Reset()
 	p := parent
-	profilescmdline.RegisterManagementCommands(&p, "", "", jiri.ProfilesRootDir)
+	profilescmdline.RegisterManagementCommands(&p, false, "", "", jiri.ProfilesRootDir)
 	if got, want := len(p.Children), 5; got != want {
 		t.Errorf("got %v, want %v", got, want)
 	}
diff --git a/profiles/profilescmdline/reader_cmdline.go b/profiles/profilescmdline/reader_cmdline.go
index e273510..e5436f3 100644
--- a/profiles/profilescmdline/reader_cmdline.go
+++ b/profiles/profilescmdline/reader_cmdline.go
@@ -12,6 +12,7 @@
 	"bytes"
 	"flag"
 	"fmt"
+	"os"
 	"path/filepath"
 	"strings"
 	"text/template"
@@ -24,8 +25,6 @@
 	"v.io/x/lib/textutil"
 )
 
-const DefaultProfiles = "base,jiri"
-
 // IsFlagSet returns true if the specified flag has been set on
 // the command line.
 func IsFlagSet(fs *flag.FlagSet, name string) bool {
@@ -133,7 +132,17 @@
 
 // RegisterProfilesFlag registers the --profiles flag
 func RegisterProfilesFlag(flags *flag.FlagSet, profiles *string) {
-	flags.StringVar(profiles, "profiles", DefaultProfiles, "a comma separated list of profiles to use")
+	// TODO(cnicolaou): delete this when the new profiles are in use.
+	root := jiri.FindRoot()
+	fi, err := os.Stat(filepath.Join(root, jiri.ProfilesDBDir))
+	defaultProfiles := "base,jiri"
+	if err == nil && fi.IsDir() {
+		// TODO(cnicolaou): we need a better way of setting the default profiles,
+		// ideally via the profiles db, or some other config. Provide a command
+		// line tool for setting the default profiles.
+		defaultProfiles = "v23:base,jiri"
+	}
+	flags.StringVar(profiles, "profiles", defaultProfiles, "a comma separated list of profiles to use")
 }
 
 // RegisterMergePoliciesFlag registers the --merge-policies flag