Skip to content

Commit

Permalink
change code to use command argument class
Browse files Browse the repository at this point in the history
  • Loading branch information
vsch committed Apr 12, 2023
1 parent a1d1de4 commit 856a831
Show file tree
Hide file tree
Showing 9 changed files with 260 additions and 195 deletions.
12 changes: 9 additions & 3 deletions VERSION.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,9 @@
### Version History
- [CLionArduinoPlugin Version Notes](#clionarduinoplugin-version-notes)
- [TO DO](#to-do)
- [1.5.32](#1532)
- [1.5.33](#1533)
- [1.5.31](#1531)
- [1.5.29](#1529)
- [1.5.25](#1525)
- [1.5.11](#1511)
- [1.5.9](#159)
Expand Down Expand Up @@ -54,12 +55,17 @@
* Add: inspection to check that `CMakeLists.txt` is out of sync, especially if missing the
toolchain file.

### 1.5.32
### 1.5.33

* Fix: improve toolchain file path error and info messages
* Fix: refactor cmake AST command with `CommandArgument` class to encapsulate the value and
leading spaces instead of lugging around two separate lists.

### 1.5.31

* Fix: improve toolchain file path error and info messages

### 1.5.29

* Fix: revert macro name for `_SRCS` and `_HRDS` to be resolved, with arguments to remain
unresolved.

Expand Down
6 changes: 4 additions & 2 deletions resources/META-INF/plugin.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<name>Arduino Support</name>
<vendor email="[email protected]" url="https://github.com/vsch">Vladimir Schneider</vendor>

<version>1.5.31</version>
<version>1.5.33</version>
<depends>com.intellij.modules.clion</depends>
<idea-version since-build="201.6668.113"/>

Expand Down Expand Up @@ -52,8 +52,10 @@
]]></description>

<change-notes><![CDATA[
<h3>1.5.32</h3>
<h3>1.5.34</h3>
<ul>
<li>Fix: refactor cmake AST command with <code>CommandArgument</code> class to encapsulate the value and
leading spaces instead of lugging around two separate lists.</li>
<li>Fix: improve toolchain file path error and info messages</li>
<li>Fix: revert macro name for <code>_SRCS</code> and <code>_HRDS</code> to be resolved, with arguments to remain
unresolved.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,6 @@ import java.io.File
* generate_arduino_firmware(${CMAKE_PROJECT_NAME})
*/
class ArduinoCMakeListsTxtBuilder : CMakeListsTxtBuilder {

constructor() : super(ourCommands, ourAnchors, PROJECT_NAME)

constructor(text: CharSequence, options: DataHolder? = null, values: Map<String, Any>? = null) : super(
PROJECT_NAME,
ourCommands,
Expand Down Expand Up @@ -222,7 +219,7 @@ class ArduinoCMakeListsTxtBuilder : CMakeListsTxtBuilder {
builder.setOrAddCommand(SET_HDRS, hFiles).setSuppressible(hFiles.isEmpty())

// TODO: implement
val staticLibs = arrayOf<String>();
val staticLibs = arrayOf<String>()
builder.setOrAddCommand(SET_LIBS, *staticLibs).setSuppressible(staticLibs.isEmpty())

builder.setOrAddCommand(SET_SKETCH, sketchFile.ifEmpty(projectName + Strings.DOT_INO_EXT)).setSuppressible(sketchFile.isEmpty())
Expand Down Expand Up @@ -271,7 +268,7 @@ class ArduinoCMakeListsTxtBuilder : CMakeListsTxtBuilder {
}

// Can add our own values to resolve variables

return builder.getCMakeContents(
null,
!appSettings.isCommentUnusedSettings,
Expand Down Expand Up @@ -304,15 +301,15 @@ class ArduinoCMakeListsTxtBuilder : CMakeListsTxtBuilder {
builder.isWantCommented = false // commented commands don't count

// see if at all our project type by looking for generate_arduino_firmware(${CMAKE_PROJECT_NAME}) or generate_arduino_library(${CMAKE_PROJECT_NAME})
val arduinoCommand = builder.getCommand(ArduinoCMakeListsTxtBuilder.GENERATE_ARDUINO_FIRMWARE)
?: builder.getCommand(ArduinoCMakeListsTxtBuilder.GENERATE_ARDUINO_LIBRARY) ?: return null
val arduinoCommand = builder.getCommand(GENERATE_ARDUINO_FIRMWARE)
?: builder.getCommand(GENERATE_ARDUINO_LIBRARY) ?: return null

// ok, it is ours
val settings = ArduinoApplicationSettingsProxy.wrap(applicationSettings, false) as ArduinoProjectFileSettings
val cMakeVariableValues = builder.cMakeVariableValues
val cMakeProjectName = builder.cMakeProjectName

settings.projectName = cMakeProjectName ?: ""
settings.projectName = cMakeProjectName
settings.sources = cMakeVariableValues["${cMakeProjectName}_SRCS"].toTypedArray()
settings.headers = cMakeVariableValues["${cMakeProjectName}_HDRS"].toTypedArray()
settings.sketch = cMakeVariableValues["${cMakeProjectName}_SKETCH"].firstOrNull() ?: ""
Expand All @@ -331,12 +328,12 @@ class ArduinoCMakeListsTxtBuilder : CMakeListsTxtBuilder {
}

when (arduinoCommand.commandType) {
ArduinoCMakeListsTxtBuilder.GENERATE_ARDUINO_LIBRARY -> {
GENERATE_ARDUINO_LIBRARY -> {
settings.isLibrary = true
settings.libraryType = ArduinoProjectFileSettings.STATIC_LIB_TYPE
}

ArduinoCMakeListsTxtBuilder.GENERATE_ARDUINO_FIRMWARE -> {
GENERATE_ARDUINO_FIRMWARE -> {
if (libraryProperties.exists() && libraryProperties.isFile) {
settings.isLibrary = true
settings.libraryType = ArduinoProjectFileSettings.ARDUINO_LIB_TYPE
Expand All @@ -351,14 +348,15 @@ class ArduinoCMakeListsTxtBuilder : CMakeListsTxtBuilder {
val list = builder.getCommands(LINK_DIRECTORIES).flatMap { it.args }
if (!list.isEmpty()) {
settings.isAddLibraryDirectory = true
settings.libraryDirectories = list.map { it.removePrefix("\${CMAKE_CURRENT_SOURCE_DIR}/") }.toTypedArray()
settings.libraryDirectories =
list.map { it.value.toString().removePrefix("\${CMAKE_CURRENT_SOURCE_DIR}/") }.toTypedArray()
}
}

if (!settings.isLibrary) {
val list = ArrayList<String>()
builder.getCommands(ArduinoCMakeListsTxtBuilder.SET_LIB_NAMES_RECURSE).forEach {
list.addAll(it.args)
builder.getCommands(SET_LIB_NAMES_RECURSE).forEach { command ->
list.addAll(command.args.map { arg -> arg.value.toString() })
}
settings.nestedLibraries = list.toTypedArray()
}
Expand Down
Loading

0 comments on commit 856a831

Please sign in to comment.