From f3f47f00f2b1c9329bc89b237f5cc99248015315 Mon Sep 17 00:00:00 2001 From: umbynos Date: Thu, 13 Aug 2020 13:34:34 +0200 Subject: [PATCH 1/3] add fqbn flag for `board details` command --- cli/board/details.go | 11 +++++++---- test/test_board.py | 27 ++++++++++++++++++++++++++- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/cli/board/details.go b/cli/board/details.go index 828a51b6d1d..db49ae06fb5 100644 --- a/cli/board/details.go +++ b/cli/board/details.go @@ -33,18 +33,21 @@ import ( var tr = i18n.Tr var showFullDetails bool +var fqbn string func initDetailsCommand() *cobra.Command { var detailsCommand = &cobra.Command{ - Use: "details ", + Use: "details -b ", Short: tr("Print details about a board."), Long: tr("Show information about a board, in particular if the board has options to be specified in the FQBN."), - Example: " " + os.Args[0] + " board details arduino:avr:nano", - Args: cobra.ExactArgs(1), + Example: " " + os.Args[0] + " board details -b arduino:avr:nano", + Args: cobra.NoArgs, Run: runDetailsCommand, } detailsCommand.Flags().BoolVarP(&showFullDetails, "full", "f", false, tr("Show full board details")) + detailsCommand.Flags().StringVarP(&fqbn, "fqbn", "b", "", "Fully Qualified Board Name, e.g.: arduino:avr:uno") + detailsCommand.MarkFlagRequired("fqbn") return detailsCommand } @@ -58,7 +61,7 @@ func runDetailsCommand(cmd *cobra.Command, args []string) { res, err := board.Details(context.Background(), &rpc.BoardDetailsReq{ Instance: inst, - Fqbn: args[0], + Fqbn: fqbn, }) if err != nil { diff --git a/test/test_board.py b/test/test_board.py index abbe16468fc..d7f4b88f749 100644 --- a/test/test_board.py +++ b/test/test_board.py @@ -398,7 +398,7 @@ def test_board_details(run_command): # Download samd core pinned to 1.8.6 result = run_command("core install arduino:samd@1.8.6") assert result.ok - result = run_command("board details arduino:samd:nano_33_iot --format json") + result = run_command("board details -b arduino:samd:nano_33_iot --format json") assert result.ok # Sort everything before compare result = json.loads(result.stdout) @@ -413,3 +413,28 @@ def test_board_details(run_command): assert result["platform"] == gold_board_details["platform"] for usb_id in gold_board_details["identification_pref"]: assert usb_id in result["identification_pref"] + + +# old `arduino-cli board details` did not need -b flag to work +def test_board_details_old(run_command): + result = run_command("core update-index") + assert result.ok + # Download samd core pinned to 1.8.6 + result = run_command("core install arduino:samd@1.8.6") + assert result.ok + result = run_command("board details arduino:samd:nano_33_iot") + assert not result.ok + assert result.stdout == "" + assert 'Error: unknown command "arduino:samd:nano_33_iot" for "arduino-cli board details"' in result.stderr + + +def test_board_details_no_flags(run_command): + result = run_command("core update-index") + assert result.ok + # Download samd core pinned to 1.8.6 + result = run_command("core install arduino:samd@1.8.6") + assert result.ok + result = run_command("board details") + assert not result.ok + assert 'Error: required flag(s) "fqbn" not set in result.stderr' + assert result.stdout == "" From 0b2803b512517af6345e061266064af54ec49604 Mon Sep 17 00:00:00 2001 From: umbynos Date: Thu, 13 Aug 2020 15:07:19 +0200 Subject: [PATCH 2/3] update i18n files --- i18n/data/en.po | 54 ++++++++++++++++++++++++------------------------ i18n/rice-box.go | 15 +++++++------- 2 files changed, 35 insertions(+), 34 deletions(-) diff --git a/i18n/data/en.po b/i18n/data/en.po index a52cfbcb404..5baf25e1388 100644 --- a/i18n/data/en.po +++ b/i18n/data/en.po @@ -13,20 +13,20 @@ msgstr "Aliases:" msgid "Available Commands:" msgstr "Available Commands:" -#: cli/board/details.go:98 +#: cli/board/details.go:101 msgid "Board name:" msgstr "Board name:" -#: cli/board/details.go:100 +#: cli/board/details.go:103 msgid "Board version:" msgstr "Board version:" -#: cli/board/details.go:141 +#: cli/board/details.go:144 msgid "Checksum:" msgstr "Checksum:" -#: cli/board/details.go:55 -#: cli/board/details.go:65 +#: cli/board/details.go:58 +#: cli/board/details.go:68 msgid "Error getting board details: %v" msgstr "Error getting board details: %v" @@ -34,7 +34,7 @@ msgstr "Error getting board details: %v" msgid "Examples:" msgstr "Examples:" -#: cli/board/details.go:139 +#: cli/board/details.go:142 msgid "File:" msgstr "File:" @@ -46,87 +46,87 @@ msgstr "Flags:" msgid "Global Flags:" msgstr "Global Flags:" -#: cli/board/details.go:111 +#: cli/board/details.go:114 msgid "Identification properties:" msgstr "Identification properties:" -#: cli/board/details.go:138 +#: cli/board/details.go:141 msgid "OS:" msgstr "OS:" -#: cli/board/details.go:104 +#: cli/board/details.go:107 msgid "Official Arduino board:" msgstr "Official Arduino board:" -#: cli/board/details.go:150 +#: cli/board/details.go:153 msgid "Option:" msgstr "Option:" -#: cli/board/details.go:120 +#: cli/board/details.go:123 msgid "Package URL:" msgstr "Package URL:" -#: cli/board/details.go:119 +#: cli/board/details.go:122 msgid "Package maintainer:" msgstr "Package maintainer:" -#: cli/board/details.go:118 +#: cli/board/details.go:121 msgid "Package name:" msgstr "Package name:" -#: cli/board/details.go:122 +#: cli/board/details.go:125 msgid "Package online help:" msgstr "Package online help:" -#: cli/board/details.go:121 +#: cli/board/details.go:124 msgid "Package website:" msgstr "Package website:" -#: cli/board/details.go:128 +#: cli/board/details.go:131 msgid "Platform URL:" msgstr "Platform URL:" -#: cli/board/details.go:127 +#: cli/board/details.go:130 msgid "Platform architecture:" msgstr "Platform architecture:" -#: cli/board/details.go:126 +#: cli/board/details.go:129 msgid "Platform category:" msgstr "Platform category:" -#: cli/board/details.go:131 +#: cli/board/details.go:134 msgid "Platform checksum:" msgstr "Platform checksum:" -#: cli/board/details.go:129 +#: cli/board/details.go:132 msgid "Platform file name:" msgstr "Platform file name:" -#: cli/board/details.go:125 +#: cli/board/details.go:128 msgid "Platform name:" msgstr "Platform name:" -#: cli/board/details.go:130 +#: cli/board/details.go:133 msgid "Platform size (bytes):" msgstr "Platform size (bytes):" -#: cli/board/details.go:40 +#: cli/board/details.go:41 msgid "Print details about a board." msgstr "Print details about a board." -#: cli/board/details.go:135 +#: cli/board/details.go:138 msgid "Required tool:" msgstr "Required tool:" -#: cli/board/details.go:47 +#: cli/board/details.go:48 msgid "Show full board details" msgstr "Show full board details" -#: cli/board/details.go:41 +#: cli/board/details.go:42 msgid "Show information about a board, in particular if the board has options to be specified in the FQBN." msgstr "Show information about a board, in particular if the board has options to be specified in the FQBN." -#: cli/board/details.go:140 +#: cli/board/details.go:143 msgid "Size (bytes):" msgstr "Size (bytes):" diff --git a/i18n/rice-box.go b/i18n/rice-box.go index 04040194388..a21d4d9ad9c 100644 --- a/i18n/rice-box.go +++ b/i18n/rice-box.go @@ -1,3 +1,4 @@ +// Code generated by rice embed-go; DO NOT EDIT. package i18n import ( @@ -11,25 +12,25 @@ func init() { // define files file2 := &embedded.EmbeddedFile{ Filename: ".gitkeep", - FileModTime: time.Unix(1593396125, 0), + FileModTime: time.Unix(1591633479, 0), Content: string(""), } file3 := &embedded.EmbeddedFile{ Filename: "en.po", - FileModTime: time.Unix(1593396125, 0), + FileModTime: time.Unix(1597323991, 0), - Content: string("msgid \"\"\nmsgstr \"\"\n\n#: cli/usage.go:31\nmsgid \"Additional help topics:\"\nmsgstr \"Additional help topics:\"\n\n#: cli/usage.go:26\nmsgid \"Aliases:\"\nmsgstr \"Aliases:\"\n\n#: cli/usage.go:28\nmsgid \"Available Commands:\"\nmsgstr \"Available Commands:\"\n\n#: cli/board/details.go:98\nmsgid \"Board name:\"\nmsgstr \"Board name:\"\n\n#: cli/board/details.go:100\nmsgid \"Board version:\"\nmsgstr \"Board version:\"\n\n#: cli/board/details.go:141\nmsgid \"Checksum:\"\nmsgstr \"Checksum:\"\n\n#: cli/board/details.go:55\n#: cli/board/details.go:65\nmsgid \"Error getting board details: %v\"\nmsgstr \"Error getting board details: %v\"\n\n#: cli/usage.go:27\nmsgid \"Examples:\"\nmsgstr \"Examples:\"\n\n#: cli/board/details.go:139\nmsgid \"File:\"\nmsgstr \"File:\"\n\n#: cli/usage.go:29\nmsgid \"Flags:\"\nmsgstr \"Flags:\"\n\n#: cli/usage.go:30\nmsgid \"Global Flags:\"\nmsgstr \"Global Flags:\"\n\n#: cli/board/details.go:111\nmsgid \"Identification properties:\"\nmsgstr \"Identification properties:\"\n\n#: cli/board/details.go:138\nmsgid \"OS:\"\nmsgstr \"OS:\"\n\n#: cli/board/details.go:104\nmsgid \"Official Arduino board:\"\nmsgstr \"Official Arduino board:\"\n\n#: cli/board/details.go:150\nmsgid \"Option:\"\nmsgstr \"Option:\"\n\n#: cli/board/details.go:120\nmsgid \"Package URL:\"\nmsgstr \"Package URL:\"\n\n#: cli/board/details.go:119\nmsgid \"Package maintainer:\"\nmsgstr \"Package maintainer:\"\n\n#: cli/board/details.go:118\nmsgid \"Package name:\"\nmsgstr \"Package name:\"\n\n#: cli/board/details.go:122\nmsgid \"Package online help:\"\nmsgstr \"Package online help:\"\n\n#: cli/board/details.go:121\nmsgid \"Package website:\"\nmsgstr \"Package website:\"\n\n#: cli/board/details.go:128\nmsgid \"Platform URL:\"\nmsgstr \"Platform URL:\"\n\n#: cli/board/details.go:127\nmsgid \"Platform architecture:\"\nmsgstr \"Platform architecture:\"\n\n#: cli/board/details.go:126\nmsgid \"Platform category:\"\nmsgstr \"Platform category:\"\n\n#: cli/board/details.go:131\nmsgid \"Platform checksum:\"\nmsgstr \"Platform checksum:\"\n\n#: cli/board/details.go:129\nmsgid \"Platform file name:\"\nmsgstr \"Platform file name:\"\n\n#: cli/board/details.go:125\nmsgid \"Platform name:\"\nmsgstr \"Platform name:\"\n\n#: cli/board/details.go:130\nmsgid \"Platform size (bytes):\"\nmsgstr \"Platform size (bytes):\"\n\n#: cli/board/details.go:40\nmsgid \"Print details about a board.\"\nmsgstr \"Print details about a board.\"\n\n#: cli/board/details.go:135\nmsgid \"Required tool:\"\nmsgstr \"Required tool:\"\n\n#: cli/board/details.go:47\nmsgid \"Show full board details\"\nmsgstr \"Show full board details\"\n\n#: cli/board/details.go:41\nmsgid \"Show information about a board, in particular if the board has options to be specified in the FQBN.\"\nmsgstr \"Show information about a board, in particular if the board has options to be specified in the FQBN.\"\n\n#: cli/board/details.go:140\nmsgid \"Size (bytes):\"\nmsgstr \"Size (bytes):\"\n\n#: cli/usage.go:25\nmsgid \"Usage:\"\nmsgstr \"Usage:\"\n\n#: cli/usage.go:32\nmsgid \"Use %s for more information about a command.\"\nmsgstr \"Use %s for more information about a command.\"\n\n"), + Content: string("msgid \"\"\nmsgstr \"\"\n\n#: cli/usage.go:31\nmsgid \"Additional help topics:\"\nmsgstr \"Additional help topics:\"\n\n#: cli/usage.go:26\nmsgid \"Aliases:\"\nmsgstr \"Aliases:\"\n\n#: cli/usage.go:28\nmsgid \"Available Commands:\"\nmsgstr \"Available Commands:\"\n\n#: cli/board/details.go:101\nmsgid \"Board name:\"\nmsgstr \"Board name:\"\n\n#: cli/board/details.go:103\nmsgid \"Board version:\"\nmsgstr \"Board version:\"\n\n#: cli/board/details.go:144\nmsgid \"Checksum:\"\nmsgstr \"Checksum:\"\n\n#: cli/board/details.go:58\n#: cli/board/details.go:68\nmsgid \"Error getting board details: %v\"\nmsgstr \"Error getting board details: %v\"\n\n#: cli/usage.go:27\nmsgid \"Examples:\"\nmsgstr \"Examples:\"\n\n#: cli/board/details.go:142\nmsgid \"File:\"\nmsgstr \"File:\"\n\n#: cli/usage.go:29\nmsgid \"Flags:\"\nmsgstr \"Flags:\"\n\n#: cli/usage.go:30\nmsgid \"Global Flags:\"\nmsgstr \"Global Flags:\"\n\n#: cli/board/details.go:114\nmsgid \"Identification properties:\"\nmsgstr \"Identification properties:\"\n\n#: cli/board/details.go:141\nmsgid \"OS:\"\nmsgstr \"OS:\"\n\n#: cli/board/details.go:107\nmsgid \"Official Arduino board:\"\nmsgstr \"Official Arduino board:\"\n\n#: cli/board/details.go:153\nmsgid \"Option:\"\nmsgstr \"Option:\"\n\n#: cli/board/details.go:123\nmsgid \"Package URL:\"\nmsgstr \"Package URL:\"\n\n#: cli/board/details.go:122\nmsgid \"Package maintainer:\"\nmsgstr \"Package maintainer:\"\n\n#: cli/board/details.go:121\nmsgid \"Package name:\"\nmsgstr \"Package name:\"\n\n#: cli/board/details.go:125\nmsgid \"Package online help:\"\nmsgstr \"Package online help:\"\n\n#: cli/board/details.go:124\nmsgid \"Package website:\"\nmsgstr \"Package website:\"\n\n#: cli/board/details.go:131\nmsgid \"Platform URL:\"\nmsgstr \"Platform URL:\"\n\n#: cli/board/details.go:130\nmsgid \"Platform architecture:\"\nmsgstr \"Platform architecture:\"\n\n#: cli/board/details.go:129\nmsgid \"Platform category:\"\nmsgstr \"Platform category:\"\n\n#: cli/board/details.go:134\nmsgid \"Platform checksum:\"\nmsgstr \"Platform checksum:\"\n\n#: cli/board/details.go:132\nmsgid \"Platform file name:\"\nmsgstr \"Platform file name:\"\n\n#: cli/board/details.go:128\nmsgid \"Platform name:\"\nmsgstr \"Platform name:\"\n\n#: cli/board/details.go:133\nmsgid \"Platform size (bytes):\"\nmsgstr \"Platform size (bytes):\"\n\n#: cli/board/details.go:41\nmsgid \"Print details about a board.\"\nmsgstr \"Print details about a board.\"\n\n#: cli/board/details.go:138\nmsgid \"Required tool:\"\nmsgstr \"Required tool:\"\n\n#: cli/board/details.go:48\nmsgid \"Show full board details\"\nmsgstr \"Show full board details\"\n\n#: cli/board/details.go:42\nmsgid \"Show information about a board, in particular if the board has options to be specified in the FQBN.\"\nmsgstr \"Show information about a board, in particular if the board has options to be specified in the FQBN.\"\n\n#: cli/board/details.go:143\nmsgid \"Size (bytes):\"\nmsgstr \"Size (bytes):\"\n\n#: cli/usage.go:25\nmsgid \"Usage:\"\nmsgstr \"Usage:\"\n\n#: cli/usage.go:32\nmsgid \"Use %s for more information about a command.\"\nmsgstr \"Use %s for more information about a command.\"\n\n"), } file4 := &embedded.EmbeddedFile{ Filename: "it_IT.po", - FileModTime: time.Unix(1593396146, 0), + FileModTime: time.Unix(1594311934, 0), Content: string("# \n# Translators:\n# Cristian Maglie , 2020\n# \nmsgid \"\"\nmsgstr \"\"\n\"Last-Translator: Cristian Maglie , 2020\\n\"\n\"Language-Team: Italian (Italy) (https://www.transifex.com/arduino-1/teams/108174/it_IT/)\\n\"\n\"Language: it_IT\\n\"\n\"Plural-Forms: nplurals=2; plural=(n != 1);\\n\"\n\n#: cli/usage.go:31\nmsgid \"Additional help topics:\"\nmsgstr \"Informazioni aggiuntive:\"\n\n#: cli/usage.go:26\nmsgid \"Aliases:\"\nmsgstr \"Alias:\"\n\n#: cli/usage.go:28\nmsgid \"Available Commands:\"\nmsgstr \"Comandi disponibili:\"\n\n#: cli/board/details.go:98\nmsgid \"Board name:\"\nmsgstr \"\"\n\n#: cli/board/details.go:100\nmsgid \"Board version:\"\nmsgstr \"\"\n\n#: cli/board/details.go:141\nmsgid \"Checksum:\"\nmsgstr \"\"\n\n#: cli/board/details.go:55 cli/board/details.go:65\nmsgid \"Error getting board details: %v\"\nmsgstr \"\"\n\n#: cli/usage.go:27\nmsgid \"Examples:\"\nmsgstr \"Esempi:\"\n\n#: cli/board/details.go:139\nmsgid \"File:\"\nmsgstr \"\"\n\n#: cli/usage.go:29\nmsgid \"Flags:\"\nmsgstr \"\"\n\n#: cli/usage.go:30\nmsgid \"Global Flags:\"\nmsgstr \"\"\n\n#: cli/board/details.go:111\nmsgid \"Identification properties:\"\nmsgstr \"\"\n\n#: cli/board/details.go:138\nmsgid \"OS:\"\nmsgstr \"\"\n\n#: cli/board/details.go:104\nmsgid \"Official Arduino board:\"\nmsgstr \"\"\n\n#: cli/board/details.go:150\nmsgid \"Option:\"\nmsgstr \"\"\n\n#: cli/board/details.go:120\nmsgid \"Package URL:\"\nmsgstr \"\"\n\n#: cli/board/details.go:119\nmsgid \"Package maintainer:\"\nmsgstr \"\"\n\n#: cli/board/details.go:118\nmsgid \"Package name:\"\nmsgstr \"\"\n\n#: cli/board/details.go:122\nmsgid \"Package online help:\"\nmsgstr \"\"\n\n#: cli/board/details.go:121\nmsgid \"Package website:\"\nmsgstr \"\"\n\n#: cli/board/details.go:128\nmsgid \"Platform URL:\"\nmsgstr \"\"\n\n#: cli/board/details.go:127\nmsgid \"Platform architecture:\"\nmsgstr \"\"\n\n#: cli/board/details.go:126\nmsgid \"Platform category:\"\nmsgstr \"\"\n\n#: cli/board/details.go:131\nmsgid \"Platform checksum:\"\nmsgstr \"\"\n\n#: cli/board/details.go:129\nmsgid \"Platform file name:\"\nmsgstr \"\"\n\n#: cli/board/details.go:125\nmsgid \"Platform name:\"\nmsgstr \"\"\n\n#: cli/board/details.go:130\nmsgid \"Platform size (bytes):\"\nmsgstr \"\"\n\n#: cli/board/details.go:40\nmsgid \"Print details about a board.\"\nmsgstr \"\"\n\n#: cli/board/details.go:135\nmsgid \"Required tool:\"\nmsgstr \"\"\n\n#: cli/board/details.go:47\nmsgid \"Show full board details\"\nmsgstr \"\"\n\n#: cli/board/details.go:41\nmsgid \"\"\n\"Show information about a board, in particular if the board has options to be\"\n\" specified in the FQBN.\"\nmsgstr \"\"\n\n#: cli/board/details.go:140\nmsgid \"Size (bytes):\"\nmsgstr \"\"\n\n#: cli/usage.go:25\nmsgid \"Usage:\"\nmsgstr \"\"\n\n#: cli/usage.go:32\nmsgid \"Use %s for more information about a command.\"\nmsgstr \"\"\n"), } file5 := &embedded.EmbeddedFile{ Filename: "pt_BR.po", - FileModTime: time.Unix(1593396147, 0), + FileModTime: time.Unix(1594311934, 0), Content: string("# \n# Translators:\n# Henrique Diniz , 2020\n# \nmsgid \"\"\nmsgstr \"\"\n\"Last-Translator: Henrique Diniz , 2020\\n\"\n\"Language-Team: Portuguese (Brazil) (https://www.transifex.com/arduino-1/teams/108174/pt_BR/)\\n\"\n\"Language: pt_BR\\n\"\n\"Plural-Forms: nplurals=2; plural=(n > 1);\\n\"\n\n#: cli/usage.go:31\nmsgid \"Additional help topics:\"\nmsgstr \"\"\n\n#: cli/usage.go:26\nmsgid \"Aliases:\"\nmsgstr \"\"\n\n#: cli/usage.go:28\nmsgid \"Available Commands:\"\nmsgstr \"\"\n\n#: cli/board/details.go:98\nmsgid \"Board name:\"\nmsgstr \"\"\n\n#: cli/board/details.go:100\nmsgid \"Board version:\"\nmsgstr \"\"\n\n#: cli/board/details.go:141\nmsgid \"Checksum:\"\nmsgstr \"\"\n\n#: cli/board/details.go:55 cli/board/details.go:65\nmsgid \"Error getting board details: %v\"\nmsgstr \"\"\n\n#: cli/usage.go:27\nmsgid \"Examples:\"\nmsgstr \"\"\n\n#: cli/board/details.go:139\nmsgid \"File:\"\nmsgstr \"\"\n\n#: cli/usage.go:29\nmsgid \"Flags:\"\nmsgstr \"\"\n\n#: cli/usage.go:30\nmsgid \"Global Flags:\"\nmsgstr \"\"\n\n#: cli/board/details.go:111\nmsgid \"Identification properties:\"\nmsgstr \"\"\n\n#: cli/board/details.go:138\nmsgid \"OS:\"\nmsgstr \"\"\n\n#: cli/board/details.go:104\nmsgid \"Official Arduino board:\"\nmsgstr \"\"\n\n#: cli/board/details.go:150\nmsgid \"Option:\"\nmsgstr \"\"\n\n#: cli/board/details.go:120\nmsgid \"Package URL:\"\nmsgstr \"\"\n\n#: cli/board/details.go:119\nmsgid \"Package maintainer:\"\nmsgstr \"\"\n\n#: cli/board/details.go:118\nmsgid \"Package name:\"\nmsgstr \"\"\n\n#: cli/board/details.go:122\nmsgid \"Package online help:\"\nmsgstr \"\"\n\n#: cli/board/details.go:121\nmsgid \"Package website:\"\nmsgstr \"\"\n\n#: cli/board/details.go:128\nmsgid \"Platform URL:\"\nmsgstr \"\"\n\n#: cli/board/details.go:127\nmsgid \"Platform architecture:\"\nmsgstr \"\"\n\n#: cli/board/details.go:126\nmsgid \"Platform category:\"\nmsgstr \"\"\n\n#: cli/board/details.go:131\nmsgid \"Platform checksum:\"\nmsgstr \"\"\n\n#: cli/board/details.go:129\nmsgid \"Platform file name:\"\nmsgstr \"\"\n\n#: cli/board/details.go:125\nmsgid \"Platform name:\"\nmsgstr \"\"\n\n#: cli/board/details.go:130\nmsgid \"Platform size (bytes):\"\nmsgstr \"\"\n\n#: cli/board/details.go:40\nmsgid \"Print details about a board.\"\nmsgstr \"\"\n\n#: cli/board/details.go:135\nmsgid \"Required tool:\"\nmsgstr \"\"\n\n#: cli/board/details.go:47\nmsgid \"Show full board details\"\nmsgstr \"\"\n\n#: cli/board/details.go:41\nmsgid \"\"\n\"Show information about a board, in particular if the board has options to be\"\n\" specified in the FQBN.\"\nmsgstr \"\"\n\n#: cli/board/details.go:140\nmsgid \"Size (bytes):\"\nmsgstr \"\"\n\n#: cli/usage.go:25\nmsgid \"Usage:\"\nmsgstr \"\"\n\n#: cli/usage.go:32\nmsgid \"Use %s for more information about a command.\"\nmsgstr \"Use %s para mais informações sobre um comando.\"\n"), } @@ -37,7 +38,7 @@ func init() { // define dirs dir1 := &embedded.EmbeddedDir{ Filename: "", - DirModTime: time.Unix(1593396147, 0), + DirModTime: time.Unix(1597323916, 0), ChildFiles: []*embedded.EmbeddedFile{ file2, // ".gitkeep" file3, // "en.po" @@ -53,7 +54,7 @@ func init() { // register embeddedBox embedded.RegisterEmbeddedBox(`./data`, &embedded.EmbeddedBox{ Name: `./data`, - Time: time.Unix(1593396147, 0), + Time: time.Unix(1597323916, 0), Dirs: map[string]*embedded.EmbeddedDir{ "": dir1, }, From a652e92d291e70cb05685b4ae950bbd15a61516e Mon Sep 17 00:00:00 2001 From: umbynos Date: Fri, 14 Aug 2020 17:09:01 +0200 Subject: [PATCH 3/3] restored `board details ` & updated i18n files & updated tests --- cli/board/details.go | 9 ++++-- i18n/data/en.po | 46 ++++++++++++++-------------- i18n/rice-box.go | 8 ++--- test/test_board.py | 73 ++++++++++++++++++++++++++------------------ 4 files changed, 77 insertions(+), 59 deletions(-) diff --git a/cli/board/details.go b/cli/board/details.go index db49ae06fb5..b923d281022 100644 --- a/cli/board/details.go +++ b/cli/board/details.go @@ -41,13 +41,13 @@ func initDetailsCommand() *cobra.Command { Short: tr("Print details about a board."), Long: tr("Show information about a board, in particular if the board has options to be specified in the FQBN."), Example: " " + os.Args[0] + " board details -b arduino:avr:nano", - Args: cobra.NoArgs, + Args: cobra.MaximumNArgs(1), Run: runDetailsCommand, } detailsCommand.Flags().BoolVarP(&showFullDetails, "full", "f", false, tr("Show full board details")) detailsCommand.Flags().StringVarP(&fqbn, "fqbn", "b", "", "Fully Qualified Board Name, e.g.: arduino:avr:uno") - detailsCommand.MarkFlagRequired("fqbn") + // detailsCommand.MarkFlagRequired("fqbn") // enable once `board details ` is removed return detailsCommand } @@ -59,6 +59,11 @@ func runDetailsCommand(cmd *cobra.Command, args []string) { os.Exit(errorcodes.ErrGeneric) } + // remove once `board details ` is removed + if fqbn == "" && len(args) > 0 { + fqbn = args[0] + } + res, err := board.Details(context.Background(), &rpc.BoardDetailsReq{ Instance: inst, Fqbn: fqbn, diff --git a/i18n/data/en.po b/i18n/data/en.po index 5baf25e1388..5b4c885fc60 100644 --- a/i18n/data/en.po +++ b/i18n/data/en.po @@ -13,20 +13,20 @@ msgstr "Aliases:" msgid "Available Commands:" msgstr "Available Commands:" -#: cli/board/details.go:101 +#: cli/board/details.go:106 msgid "Board name:" msgstr "Board name:" -#: cli/board/details.go:103 +#: cli/board/details.go:108 msgid "Board version:" msgstr "Board version:" -#: cli/board/details.go:144 +#: cli/board/details.go:149 msgid "Checksum:" msgstr "Checksum:" #: cli/board/details.go:58 -#: cli/board/details.go:68 +#: cli/board/details.go:73 msgid "Error getting board details: %v" msgstr "Error getting board details: %v" @@ -34,7 +34,7 @@ msgstr "Error getting board details: %v" msgid "Examples:" msgstr "Examples:" -#: cli/board/details.go:142 +#: cli/board/details.go:147 msgid "File:" msgstr "File:" @@ -46,67 +46,67 @@ msgstr "Flags:" msgid "Global Flags:" msgstr "Global Flags:" -#: cli/board/details.go:114 +#: cli/board/details.go:119 msgid "Identification properties:" msgstr "Identification properties:" -#: cli/board/details.go:141 +#: cli/board/details.go:146 msgid "OS:" msgstr "OS:" -#: cli/board/details.go:107 +#: cli/board/details.go:112 msgid "Official Arduino board:" msgstr "Official Arduino board:" -#: cli/board/details.go:153 +#: cli/board/details.go:158 msgid "Option:" msgstr "Option:" -#: cli/board/details.go:123 +#: cli/board/details.go:128 msgid "Package URL:" msgstr "Package URL:" -#: cli/board/details.go:122 +#: cli/board/details.go:127 msgid "Package maintainer:" msgstr "Package maintainer:" -#: cli/board/details.go:121 +#: cli/board/details.go:126 msgid "Package name:" msgstr "Package name:" -#: cli/board/details.go:125 +#: cli/board/details.go:130 msgid "Package online help:" msgstr "Package online help:" -#: cli/board/details.go:124 +#: cli/board/details.go:129 msgid "Package website:" msgstr "Package website:" -#: cli/board/details.go:131 +#: cli/board/details.go:136 msgid "Platform URL:" msgstr "Platform URL:" -#: cli/board/details.go:130 +#: cli/board/details.go:135 msgid "Platform architecture:" msgstr "Platform architecture:" -#: cli/board/details.go:129 +#: cli/board/details.go:134 msgid "Platform category:" msgstr "Platform category:" -#: cli/board/details.go:134 +#: cli/board/details.go:139 msgid "Platform checksum:" msgstr "Platform checksum:" -#: cli/board/details.go:132 +#: cli/board/details.go:137 msgid "Platform file name:" msgstr "Platform file name:" -#: cli/board/details.go:128 +#: cli/board/details.go:133 msgid "Platform name:" msgstr "Platform name:" -#: cli/board/details.go:133 +#: cli/board/details.go:138 msgid "Platform size (bytes):" msgstr "Platform size (bytes):" @@ -114,7 +114,7 @@ msgstr "Platform size (bytes):" msgid "Print details about a board." msgstr "Print details about a board." -#: cli/board/details.go:138 +#: cli/board/details.go:143 msgid "Required tool:" msgstr "Required tool:" @@ -126,7 +126,7 @@ msgstr "Show full board details" msgid "Show information about a board, in particular if the board has options to be specified in the FQBN." msgstr "Show information about a board, in particular if the board has options to be specified in the FQBN." -#: cli/board/details.go:143 +#: cli/board/details.go:148 msgid "Size (bytes):" msgstr "Size (bytes):" diff --git a/i18n/rice-box.go b/i18n/rice-box.go index a21d4d9ad9c..1d9efcd68f6 100644 --- a/i18n/rice-box.go +++ b/i18n/rice-box.go @@ -18,9 +18,9 @@ func init() { } file3 := &embedded.EmbeddedFile{ Filename: "en.po", - FileModTime: time.Unix(1597323991, 0), + FileModTime: time.Unix(1597417587, 0), - Content: string("msgid \"\"\nmsgstr \"\"\n\n#: cli/usage.go:31\nmsgid \"Additional help topics:\"\nmsgstr \"Additional help topics:\"\n\n#: cli/usage.go:26\nmsgid \"Aliases:\"\nmsgstr \"Aliases:\"\n\n#: cli/usage.go:28\nmsgid \"Available Commands:\"\nmsgstr \"Available Commands:\"\n\n#: cli/board/details.go:101\nmsgid \"Board name:\"\nmsgstr \"Board name:\"\n\n#: cli/board/details.go:103\nmsgid \"Board version:\"\nmsgstr \"Board version:\"\n\n#: cli/board/details.go:144\nmsgid \"Checksum:\"\nmsgstr \"Checksum:\"\n\n#: cli/board/details.go:58\n#: cli/board/details.go:68\nmsgid \"Error getting board details: %v\"\nmsgstr \"Error getting board details: %v\"\n\n#: cli/usage.go:27\nmsgid \"Examples:\"\nmsgstr \"Examples:\"\n\n#: cli/board/details.go:142\nmsgid \"File:\"\nmsgstr \"File:\"\n\n#: cli/usage.go:29\nmsgid \"Flags:\"\nmsgstr \"Flags:\"\n\n#: cli/usage.go:30\nmsgid \"Global Flags:\"\nmsgstr \"Global Flags:\"\n\n#: cli/board/details.go:114\nmsgid \"Identification properties:\"\nmsgstr \"Identification properties:\"\n\n#: cli/board/details.go:141\nmsgid \"OS:\"\nmsgstr \"OS:\"\n\n#: cli/board/details.go:107\nmsgid \"Official Arduino board:\"\nmsgstr \"Official Arduino board:\"\n\n#: cli/board/details.go:153\nmsgid \"Option:\"\nmsgstr \"Option:\"\n\n#: cli/board/details.go:123\nmsgid \"Package URL:\"\nmsgstr \"Package URL:\"\n\n#: cli/board/details.go:122\nmsgid \"Package maintainer:\"\nmsgstr \"Package maintainer:\"\n\n#: cli/board/details.go:121\nmsgid \"Package name:\"\nmsgstr \"Package name:\"\n\n#: cli/board/details.go:125\nmsgid \"Package online help:\"\nmsgstr \"Package online help:\"\n\n#: cli/board/details.go:124\nmsgid \"Package website:\"\nmsgstr \"Package website:\"\n\n#: cli/board/details.go:131\nmsgid \"Platform URL:\"\nmsgstr \"Platform URL:\"\n\n#: cli/board/details.go:130\nmsgid \"Platform architecture:\"\nmsgstr \"Platform architecture:\"\n\n#: cli/board/details.go:129\nmsgid \"Platform category:\"\nmsgstr \"Platform category:\"\n\n#: cli/board/details.go:134\nmsgid \"Platform checksum:\"\nmsgstr \"Platform checksum:\"\n\n#: cli/board/details.go:132\nmsgid \"Platform file name:\"\nmsgstr \"Platform file name:\"\n\n#: cli/board/details.go:128\nmsgid \"Platform name:\"\nmsgstr \"Platform name:\"\n\n#: cli/board/details.go:133\nmsgid \"Platform size (bytes):\"\nmsgstr \"Platform size (bytes):\"\n\n#: cli/board/details.go:41\nmsgid \"Print details about a board.\"\nmsgstr \"Print details about a board.\"\n\n#: cli/board/details.go:138\nmsgid \"Required tool:\"\nmsgstr \"Required tool:\"\n\n#: cli/board/details.go:48\nmsgid \"Show full board details\"\nmsgstr \"Show full board details\"\n\n#: cli/board/details.go:42\nmsgid \"Show information about a board, in particular if the board has options to be specified in the FQBN.\"\nmsgstr \"Show information about a board, in particular if the board has options to be specified in the FQBN.\"\n\n#: cli/board/details.go:143\nmsgid \"Size (bytes):\"\nmsgstr \"Size (bytes):\"\n\n#: cli/usage.go:25\nmsgid \"Usage:\"\nmsgstr \"Usage:\"\n\n#: cli/usage.go:32\nmsgid \"Use %s for more information about a command.\"\nmsgstr \"Use %s for more information about a command.\"\n\n"), + Content: string("msgid \"\"\nmsgstr \"\"\n\n#: cli/usage.go:31\nmsgid \"Additional help topics:\"\nmsgstr \"Additional help topics:\"\n\n#: cli/usage.go:26\nmsgid \"Aliases:\"\nmsgstr \"Aliases:\"\n\n#: cli/usage.go:28\nmsgid \"Available Commands:\"\nmsgstr \"Available Commands:\"\n\n#: cli/board/details.go:106\nmsgid \"Board name:\"\nmsgstr \"Board name:\"\n\n#: cli/board/details.go:108\nmsgid \"Board version:\"\nmsgstr \"Board version:\"\n\n#: cli/board/details.go:149\nmsgid \"Checksum:\"\nmsgstr \"Checksum:\"\n\n#: cli/board/details.go:58\n#: cli/board/details.go:73\nmsgid \"Error getting board details: %v\"\nmsgstr \"Error getting board details: %v\"\n\n#: cli/usage.go:27\nmsgid \"Examples:\"\nmsgstr \"Examples:\"\n\n#: cli/board/details.go:147\nmsgid \"File:\"\nmsgstr \"File:\"\n\n#: cli/usage.go:29\nmsgid \"Flags:\"\nmsgstr \"Flags:\"\n\n#: cli/usage.go:30\nmsgid \"Global Flags:\"\nmsgstr \"Global Flags:\"\n\n#: cli/board/details.go:119\nmsgid \"Identification properties:\"\nmsgstr \"Identification properties:\"\n\n#: cli/board/details.go:146\nmsgid \"OS:\"\nmsgstr \"OS:\"\n\n#: cli/board/details.go:112\nmsgid \"Official Arduino board:\"\nmsgstr \"Official Arduino board:\"\n\n#: cli/board/details.go:158\nmsgid \"Option:\"\nmsgstr \"Option:\"\n\n#: cli/board/details.go:128\nmsgid \"Package URL:\"\nmsgstr \"Package URL:\"\n\n#: cli/board/details.go:127\nmsgid \"Package maintainer:\"\nmsgstr \"Package maintainer:\"\n\n#: cli/board/details.go:126\nmsgid \"Package name:\"\nmsgstr \"Package name:\"\n\n#: cli/board/details.go:130\nmsgid \"Package online help:\"\nmsgstr \"Package online help:\"\n\n#: cli/board/details.go:129\nmsgid \"Package website:\"\nmsgstr \"Package website:\"\n\n#: cli/board/details.go:136\nmsgid \"Platform URL:\"\nmsgstr \"Platform URL:\"\n\n#: cli/board/details.go:135\nmsgid \"Platform architecture:\"\nmsgstr \"Platform architecture:\"\n\n#: cli/board/details.go:134\nmsgid \"Platform category:\"\nmsgstr \"Platform category:\"\n\n#: cli/board/details.go:139\nmsgid \"Platform checksum:\"\nmsgstr \"Platform checksum:\"\n\n#: cli/board/details.go:137\nmsgid \"Platform file name:\"\nmsgstr \"Platform file name:\"\n\n#: cli/board/details.go:133\nmsgid \"Platform name:\"\nmsgstr \"Platform name:\"\n\n#: cli/board/details.go:138\nmsgid \"Platform size (bytes):\"\nmsgstr \"Platform size (bytes):\"\n\n#: cli/board/details.go:41\nmsgid \"Print details about a board.\"\nmsgstr \"Print details about a board.\"\n\n#: cli/board/details.go:143\nmsgid \"Required tool:\"\nmsgstr \"Required tool:\"\n\n#: cli/board/details.go:48\nmsgid \"Show full board details\"\nmsgstr \"Show full board details\"\n\n#: cli/board/details.go:42\nmsgid \"Show information about a board, in particular if the board has options to be specified in the FQBN.\"\nmsgstr \"Show information about a board, in particular if the board has options to be specified in the FQBN.\"\n\n#: cli/board/details.go:148\nmsgid \"Size (bytes):\"\nmsgstr \"Size (bytes):\"\n\n#: cli/usage.go:25\nmsgid \"Usage:\"\nmsgstr \"Usage:\"\n\n#: cli/usage.go:32\nmsgid \"Use %s for more information about a command.\"\nmsgstr \"Use %s for more information about a command.\"\n\n"), } file4 := &embedded.EmbeddedFile{ Filename: "it_IT.po", @@ -38,7 +38,7 @@ func init() { // define dirs dir1 := &embedded.EmbeddedDir{ Filename: "", - DirModTime: time.Unix(1597323916, 0), + DirModTime: time.Unix(1597332152, 0), ChildFiles: []*embedded.EmbeddedFile{ file2, // ".gitkeep" file3, // "en.po" @@ -54,7 +54,7 @@ func init() { // register embeddedBox embedded.RegisterEmbeddedBox(`./data`, &embedded.EmbeddedBox{ Name: `./data`, - Time: time.Unix(1597323916, 0), + Time: time.Unix(1597332152, 0), Dirs: map[string]*embedded.EmbeddedDir{ "": dir1, }, diff --git a/test/test_board.py b/test/test_board.py index d7f4b88f749..f97e42122f0 100644 --- a/test/test_board.py +++ b/test/test_board.py @@ -18,30 +18,7 @@ from .common import running_on_ci -@pytest.mark.skipif(running_on_ci(), reason="VMs have no serial ports") -def test_board_list(run_command): - result = run_command("core update-index") - assert result.ok - result = run_command("board list --format json") - assert result.ok - # check is a valid json and contains a list of ports - ports = json.loads(result.stdout) - assert isinstance(ports, list) - for port in ports: - assert "protocol" in port - assert "protocol_label" in port - - -@pytest.mark.skipif(running_on_ci(), reason="VMs have no serial ports") -def test_board_listall(run_command): - assert run_command("core update-index") - result = run_command("board listall") - assert result.ok - assert ["Board", "Name", "FQBN"] == result.stdout.splitlines()[0].strip().split() - - -def test_board_details(run_command): - gold_board_details = """ +gold_board = """ { "fqbn": "arduino:samd:nano_33_iot", "name": "Arduino NANO 33 IoT", @@ -393,6 +370,31 @@ def test_board_details(run_command): ] } """ # noqa: E501 + + +@pytest.mark.skipif(running_on_ci(), reason="VMs have no serial ports") +def test_board_list(run_command): + result = run_command("core update-index") + assert result.ok + result = run_command("board list --format json") + assert result.ok + # check is a valid json and contains a list of ports + ports = json.loads(result.stdout) + assert isinstance(ports, list) + for port in ports: + assert "protocol" in port + assert "protocol_label" in port + + +@pytest.mark.skipif(running_on_ci(), reason="VMs have no serial ports") +def test_board_listall(run_command): + assert run_command("core update-index") + result = run_command("board listall") + assert result.ok + assert ["Board", "Name", "FQBN"] == result.stdout.splitlines()[0].strip().split() + + +def test_board_details(run_command): result = run_command("core update-index") assert result.ok # Download samd core pinned to 1.8.6 @@ -402,7 +404,7 @@ def test_board_details(run_command): assert result.ok # Sort everything before compare result = json.loads(result.stdout) - gold_board_details = json.loads(gold_board_details) + gold_board_details = json.loads(gold_board) assert result["fqbn"] == gold_board_details["fqbn"] assert result["name"] == gold_board_details["name"] @@ -422,10 +424,21 @@ def test_board_details_old(run_command): # Download samd core pinned to 1.8.6 result = run_command("core install arduino:samd@1.8.6") assert result.ok - result = run_command("board details arduino:samd:nano_33_iot") - assert not result.ok - assert result.stdout == "" - assert 'Error: unknown command "arduino:samd:nano_33_iot" for "arduino-cli board details"' in result.stderr + result = run_command("board details arduino:samd:nano_33_iot --format json") + assert result.ok + # Sort everything before compare + result = json.loads(result.stdout) + gold_board_details = json.loads(gold_board) + + assert result["fqbn"] == gold_board_details["fqbn"] + assert result["name"] == gold_board_details["name"] + assert result["version"] == gold_board_details["version"] + assert result["propertiesId"] == gold_board_details["propertiesId"] + assert result["official"] == gold_board_details["official"] + assert result["package"] == gold_board_details["package"] + assert result["platform"] == gold_board_details["platform"] + for usb_id in gold_board_details["identification_pref"]: + assert usb_id in result["identification_pref"] def test_board_details_no_flags(run_command): @@ -436,5 +449,5 @@ def test_board_details_no_flags(run_command): assert result.ok result = run_command("board details") assert not result.ok - assert 'Error: required flag(s) "fqbn" not set in result.stderr' + assert "Error getting board details: parsing fqbn: invalid fqbn:" assert result.stdout == ""