Skip to content

Commit e54bb97

Browse files
committed
This change standardizes the command line flag naming conventions across the headscale CLI:
User-related operations now consistently use -u/--user (changed from -n/--name) Node-related operations now consistently use -n/--node-id (changed from -N/--identifier) User ID operations continue to use -i/--identifier The error message for user identification has also been simplified for better clarity. Integration tests have been updated to use the new flag naming conventions, ensuring all test cases properly exercise the updated CLI interface. This includes modifying test fixtures and command invocations to align with the standardized flags.
1 parent 78d89df commit e54bb97

File tree

9 files changed

+67
-64
lines changed

9 files changed

+67
-64
lines changed

cmd/headscale/cli/debug.go

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,11 @@ func init() {
2727
if err != nil {
2828
log.Fatal().Err(err).Msg("")
2929
}
30-
createNodeCmd.Flags().StringP("user", "u", "", "User")
31-
30+
usernameAndIDFlag(createNodeCmd)
3231
createNodeCmd.Flags().StringP("namespace", "n", "", "User")
3332
createNodeNamespaceFlag := createNodeCmd.Flags().Lookup("namespace")
3433
createNodeNamespaceFlag.Deprecated = deprecateNamespaceMessage
3534
createNodeNamespaceFlag.Hidden = true
36-
37-
err = createNodeCmd.MarkFlagRequired("user")
38-
if err != nil {
39-
log.Fatal().Err(err).Msg("")
40-
}
4135
createNodeCmd.Flags().StringP("key", "k", "", "Key")
4236
err = createNodeCmd.MarkFlagRequired("key")
4337
if err != nil {
@@ -61,15 +55,16 @@ var createNodeCmd = &cobra.Command{
6155
Run: func(cmd *cobra.Command, args []string) {
6256
output, _ := cmd.Flags().GetString("output")
6357

64-
user, err := cmd.Flags().GetString("user")
65-
if err != nil {
66-
ErrorOutput(err, fmt.Sprintf("Error getting user: %s", err), output)
67-
}
68-
6958
ctx, client, conn, cancel := newHeadscaleCLIWithConfig()
7059
defer cancel()
7160
defer conn.Close()
7261

62+
user, err := findSingleUser(ctx, client, cmd, "debug-createNodeCmd", output)
63+
if err != nil {
64+
// The helper already calls ErrorOutput, so we can just return
65+
return
66+
}
67+
7368
name, err := cmd.Flags().GetString("name")
7469
if err != nil {
7570
ErrorOutput(
@@ -109,7 +104,7 @@ var createNodeCmd = &cobra.Command{
109104
request := &v1.DebugCreateNodeRequest{
110105
Key: registrationID,
111106
Name: name,
112-
User: user,
107+
User: user.GetName(),
113108
Routes: routes,
114109
}
115110

cmd/headscale/cli/nodes.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ func init() {
2424
listNodesCmd.Flags().BoolP("tags", "t", false, "Show tags")
2525
usernameAndIDFlag(listNodesCmd)
2626
nodeCmd.AddCommand(listNodesCmd)
27-
listNodeRoutesCmd.Flags().Uint64P("node-id", "N", 0, "Node identifier (ID)")
27+
listNodeRoutesCmd.Flags().Uint64P("node-id", "n", 0, "Node identifier (ID)")
2828
nodeCmd.AddCommand(listNodeRoutesCmd)
2929
usernameAndIDFlag(registerNodeCmd)
3030
registerNodeCmd.Flags().StringP("key", "k", "", "Key")
@@ -34,28 +34,28 @@ func init() {
3434
}
3535
nodeCmd.AddCommand(registerNodeCmd)
3636

37-
expireNodeCmd.Flags().Uint64P("node-id", "N", 0, "Node identifier (ID)")
37+
expireNodeCmd.Flags().Uint64P("node-id", "n", 0, "Node identifier (ID)")
3838
err = expireNodeCmd.MarkFlagRequired("node-id")
3939
if err != nil {
4040
log.Fatal(err.Error())
4141
}
4242
nodeCmd.AddCommand(expireNodeCmd)
4343

44-
renameNodeCmd.Flags().Uint64P("node-id", "N", 0, "Node identifier (ID)")
44+
renameNodeCmd.Flags().Uint64P("node-id", "n", 0, "Node identifier (ID)")
4545
err = renameNodeCmd.MarkFlagRequired("node-id")
4646
if err != nil {
4747
log.Fatal(err.Error())
4848
}
4949
nodeCmd.AddCommand(renameNodeCmd)
5050

51-
deleteNodeCmd.Flags().Uint64P("node-id", "N", 0, "Node identifier (ID)")
51+
deleteNodeCmd.Flags().Uint64P("node-id", "n", 0, "Node identifier (ID)")
5252
err = deleteNodeCmd.MarkFlagRequired("node-id")
5353
if err != nil {
5454
log.Fatal(err.Error())
5555
}
5656
nodeCmd.AddCommand(deleteNodeCmd)
5757

58-
moveNodeCmd.Flags().Uint64P("node-id", "N", 0, "Node identifier (ID)")
58+
moveNodeCmd.Flags().Uint64P("node-id", "n", 0, "Node identifier (ID)")
5959

6060
err = moveNodeCmd.MarkFlagRequired("node-id")
6161
if err != nil {
@@ -66,12 +66,12 @@ func init() {
6666

6767
nodeCmd.AddCommand(moveNodeCmd)
6868

69-
tagCmd.Flags().Uint64P("node-id", "N", 0, "Node identifier (ID)")
69+
tagCmd.Flags().Uint64P("node-id", "n", 0, "Node identifier (ID)")
7070
tagCmd.MarkFlagRequired("node-id")
7171
tagCmd.Flags().StringSliceP("tags", "t", []string{}, "List of tags to add to the node")
7272
nodeCmd.AddCommand(tagCmd)
7373

74-
approveRoutesCmd.Flags().Uint64P("node-id", "N", 0, "Node identifier (ID)")
74+
approveRoutesCmd.Flags().Uint64P("node-id", "n", 0, "Node identifier (ID)")
7575
approveRoutesCmd.MarkFlagRequired("node-id")
7676
approveRoutesCmd.Flags().StringSliceP("routes", "r", []string{}, `List of routes that will be approved (comma-separated, e.g. "10.0.0.0/8,192.168.0.0/24" or empty string to remove all approved routes)`)
7777
nodeCmd.AddCommand(approveRoutesCmd)
@@ -150,7 +150,7 @@ var listNodesCmd = &cobra.Command{
150150

151151
// Check if user identifier flags are provided
152152
id, _ := cmd.Flags().GetInt64("identifier")
153-
username, _ := cmd.Flags().GetString("name")
153+
username, _ := cmd.Flags().GetString("user")
154154

155155
request := &v1.ListNodesRequest{}
156156

cmd/headscale/cli/user_helpers.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,16 @@ func usernameAndIDFlag(cmd *cobra.Command, opts ...string) {
2222
nameHelp = opts[1]
2323
}
2424
cmd.PersistentFlags().Int64P("identifier", "i", -1, idHelp)
25-
cmd.PersistentFlags().StringP("name", "n", "", nameHelp)
25+
cmd.PersistentFlags().StringP("user", "u", "", nameHelp)
2626
}
2727

2828
// usernameAndIDFromFlag returns the username and ID from the flags of the command.
2929
// If both are empty, it will exit the program with an error.
3030
func usernameAndIDFromFlag(cmd *cobra.Command) (uint64, string) {
31-
username, _ := cmd.Flags().GetString("name")
31+
username, _ := cmd.Flags().GetString("user")
3232
identifier, _ := cmd.Flags().GetInt64("identifier")
3333
if username == "" && identifier < 0 {
34-
err := errors.New("--name or --identifier flag is required")
34+
err := errors.New("--user or --identifier flag is required")
3535
ErrorOutput(
3636
err,
3737
fmt.Sprintf(
@@ -71,7 +71,7 @@ func findSingleUser(
7171
}
7272

7373
if len(users.GetUsers()) != 1 {
74-
err := fmt.Errorf("Unable to determine user to %s, query returned multiple users, use ID", operationName)
74+
err := fmt.Errorf("Unable to determine user for %s", operationName)
7575
ErrorOutput(
7676
err,
7777
fmt.Sprintf("Error: %s", status.Convert(err).Message()),

cmd/headscale/cli/users.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ var listUsersCmd = &cobra.Command{
168168
request := &v1.ListUsersRequest{}
169169

170170
id, _ := cmd.Flags().GetInt64("identifier")
171-
username, _ := cmd.Flags().GetString("name")
171+
username, _ := cmd.Flags().GetString("user")
172172
email, _ := cmd.Flags().GetString("email")
173173

174174
// filter by one param at most

integration/auth_key_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -342,7 +342,7 @@ func TestAuthKeyLogoutAndReloginSameUserExpiredKey(t *testing.T) {
342342
[]string{
343343
"headscale",
344344
"preauthkeys",
345-
"--user",
345+
"--identifier",
346346
strconv.FormatUint(userMap[userName].GetId(), 10),
347347
"expire",
348348
key.Key,

0 commit comments

Comments
 (0)