Skip to content

Commit

Permalink
feat: Created flow from cubeIde import to a STM32 config yaml file
Browse files Browse the repository at this point in the history
  • Loading branch information
jortbmd committed Oct 13, 2021
1 parent cd57931 commit a5ecf5e
Show file tree
Hide file tree
Showing 5 changed files with 66 additions and 5 deletions.
5 changes: 2 additions & 3 deletions src/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ import CommandMenu from './menu/CommandMenu';
import buildSTM from './BuildTask';
import { checkBuildTools } from './buildTools';
import { installAllTools } from './buildTools/installTools';
import CubeIDEProject from './getInfo/STM32CubeIDE';
import importAndSetupCubeIDEProject from './import';


// this method is called when your extension is activated
Expand All @@ -51,8 +51,7 @@ export function activate(context: vscode.ExtensionContext): void {
vscode.commands.registerCommand('stm32-for-vscode.importCubeIDEProject',
async () => {
try {
const projectFile = await CubeIDEProject();
console.log({ projectFile });
await importAndSetupCubeIDEProject();
} catch (error) {
console.error(error);
}
Expand Down
2 changes: 1 addition & 1 deletion src/getInfo/STM32CubeIDE/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ export default async function getCubeIDEProjectInfo(): Promise<MakeInfo> {
const result = new MakeInfo();
result.cSources = projectFiles.sourceFiles;
result.target = projectFiles.target;
const targetMCU = getTargetMCUFromFullName(cProjectInfo.targetMCU)
const targetMCU = getTargetMCUFromFullName(cProjectInfo.targetMCU);
if (targetMCU) {
result.targetMCU = targetMCU;
}
Expand Down
42 changes: 42 additions & 0 deletions src/getInfo/defaultInfo.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@

import _ = require('lodash');
import MakeInfo from '../types/MakeInfo';

const defaults: Partial<MakeInfo> = {
libs: ['c', 'm', 'nosys'],
assemblyFlags: ['-specs=nosys.specs'],
cxxFlags: ['-feliminate-unused-debug-types']
};

/**
* Adds default library and flags to the MakeInfo.
* @param info makeInfo to add default libs and flags to
* @returns
*/
export function addDefaultLibsAndFlagsInfo(info: MakeInfo): MakeInfo {
if (info.libs === undefined) {
info.libs = [];
}
if (defaults.libs === undefined) {
defaults.libs = [];
}
if (info.assemblyFlags === undefined) {
info.assemblyFlags = [];
}
if (defaults.assemblyFlags === undefined) {
defaults.assemblyFlags = [];
}
if (defaults.cxxFlags === undefined) {
defaults.cxxFlags = [];
}


info.libs = info.libs.concat(defaults.libs);
info.assemblyFlags = info.assemblyFlags.concat(defaults.assemblyFlags);
info.cxxFlags = info.cxxFlags.concat(defaults.cxxFlags);
return info;
}

export default function addDefaults(info: MakeInfo): MakeInfo {
return addDefaultLibsAndFlagsInfo(info);
}
19 changes: 19 additions & 0 deletions src/import.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import getCubeProjectInfo from './getInfo/STM32CubeIDE';
import setDefaults from './getInfo/defaultInfo';
import { ExtensionConfiguration } from './types';
import { writeConfigFile } from './configuration/stm32Config';
import * as vscode from 'vscode';

export default async function importAndSetupCubeIDEProject(): Promise<void> {
try {
const cubeProjectInfo = await getCubeProjectInfo();
const withDefaults = setDefaults(cubeProjectInfo);
const configFile = new ExtensionConfiguration();
configFile.importRelevantInfoFromMakefile(withDefaults);
console.log({ cubeProjectInfo, withDefaults, configFile });

await writeConfigFile(configFile);
} catch (error) {
vscode.window.showErrorMessage(`Something went wrong with importing the project. Error: ${error}`);
}
}
3 changes: 2 additions & 1 deletion src/types/MakeInfo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,8 @@ export class ExtensionConfiguration implements ExtensionConfigurationInterface {
this.assemblyFlags = makeInfo.assemblyFlags;
this.cxxFlags = makeInfo.cxxFlags;
this.libraryDirectories = makeInfo.libdir;
this.sourceFiles.concat(makeInfo.asmSources);
this.sourceFiles = this.sourceFiles.concat(makeInfo.asmSources, makeInfo.cSources, makeInfo.cxxSources);
this.includeDirectories = this.includeDirectories.concat(makeInfo.cIncludes);
}
}

Expand Down

0 comments on commit a5ecf5e

Please sign in to comment.