mirror of
https://github.com/keymanapp/keyman.git
synced 2026-09-08 08:37:42 +00:00
Merge pull request #2120 from keymanapp/developer-add-cli-for-creating-lexical-models-fixes-2083
[Developer] Add -lexical-model command line option for building lexical model template projects to kmconvert.
This commit is contained in:
commit
38e6d4ed7b
5 changed files with 77 additions and 8 deletions
|
|
@ -3,6 +3,12 @@
|
|||
## 13.0 alpha
|
||||
* Start version 13.0
|
||||
|
||||
## 2019-09-25 12.0.37 beta
|
||||
* Compiler: Add -lexical-model command line option for building lexical model template projects to kmconvert. (#2120)
|
||||
* Debugger: Remove legacy 'Install keyboard' link in web test and cleanup look somewhat. (#2122)
|
||||
* Compiler: Support colour log messages and cleanup logging. (#2128)
|
||||
* Help: Fix some of the issues with Context Help, and address one specific topic - touch layout editor. (#2132)
|
||||
|
||||
## 2019-09-24 12.0.36 beta
|
||||
* General: File type icons were mismatched (#2112)
|
||||
* Project: Shift layer in basic touch layout template had incorrect modifier for period (.) on shift layer (#2113)
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ uses
|
|||
UKeymanTargets;
|
||||
|
||||
type
|
||||
TKMConvertMode = (cmImportWindows, cmTemplate);
|
||||
TKMConvertMode = (cmImportWindows, cmTemplate, cmLexicalModel);
|
||||
|
||||
TKMConvertParameters = record
|
||||
KLID: string;
|
||||
|
|
@ -20,6 +20,8 @@ type
|
|||
Targets: TKeymanTargets;
|
||||
Mode: TKMConvertMode;
|
||||
NoLogo: Boolean;
|
||||
|
||||
ModelIdAuthor, ModelIdLanguage, ModelIdUniq: string;
|
||||
private
|
||||
function CheckParam(name, value: string): Boolean;
|
||||
public
|
||||
|
|
@ -49,6 +51,8 @@ begin
|
|||
Mode := cmImportWindows
|
||||
else if ModeString = 'template' then
|
||||
Mode := cmTemplate
|
||||
else if ModeString = 'lexical-model' then
|
||||
Mode := cmLexicalModel
|
||||
else
|
||||
Exit(False);
|
||||
|
||||
|
|
@ -80,20 +84,28 @@ begin
|
|||
writeln(' Imports a Windows keyboard into a new Keyman keyboard project');
|
||||
writeln;
|
||||
writeln('kmconvert template -id <keyboard_id> [additional-options]');
|
||||
writeln(' Creates a blank keyboard project in the repository template format');
|
||||
writeln(' Creates a basic keyboard project in the repository template format');
|
||||
writeln;
|
||||
writeln('kmconvert lexical-model -id-author <id-author> -id-language <id-language> -id-uniq <id-uniq> [additional-options]');
|
||||
writeln(' Creates a wordlist lexical model project in the repository template format');
|
||||
writeln;
|
||||
writeln('Parameters:');
|
||||
writeln(' -nologo Don''t show the program description and copyright banner');
|
||||
writeln(' -klid <source-klid> The KLID of the keyboard to import, per LoadKeyboardLayout');
|
||||
writeln(' -o <destination> The target folder to write the keyboard project into, defaults to "."');
|
||||
writeln(' -id <keyboard_id> The id of the keyboard to create');
|
||||
writeln(' (in `import-windows` mode, can be a format string)');
|
||||
writeln(' -name <data> Name of the keyboard, e.g. "My First Keyboard", "%s Basic" ');
|
||||
writeln(' -o <destination> The target folder to write the project into, defaults to "."');
|
||||
writeln(' -author <data> Name of author of the keyboard/model, no default');
|
||||
writeln(' -name <data> Name of the keyboard/model, e.g. "My First Keyboard", "%s Basic" ');
|
||||
writeln(' (format strings are only valid in `import-windows` mode)');
|
||||
writeln(' -copyright <data> Copyright string for the keyboard, defaults to "Copyright (C)"');
|
||||
writeln(' -version <data> Version number of the keyboard, defaults to "1.0"');
|
||||
writeln(' -copyright <data> Copyright string for the keyboard/model, defaults to "Copyright (C)"');
|
||||
writeln(' -version <data> Version number of the keyboard/model, defaults to "1.0"');
|
||||
writeln(' -languages <data> space-separated list of BCP 47 tags, e.g. "en-US tpi-PG"');
|
||||
writeln(' -author <data> Name of author of the keyboard, no default');
|
||||
// Model parameters
|
||||
writeln('Note: model identifiers are constructed from params: <id-author>.<id-language>.<id-uniq>');
|
||||
writeln(' -id-author <data> Identifier for author of model');
|
||||
writeln(' -id-language <data> Single BCP 47 tag identifying primary language of model');
|
||||
writeln(' -id-uniq <data> Unique name for the model');
|
||||
end;
|
||||
|
||||
{ TKMConvertParameters }
|
||||
|
|
@ -108,6 +120,11 @@ begin
|
|||
else if name = '-version' then Version := value
|
||||
else if name = '-languages' then BCP47Tags := value
|
||||
else if name = '-author' then Author := value
|
||||
|
||||
else if name = '-id-author' then ModelIdAuthor := value
|
||||
else if name = '-id-language' then ModelIdLanguage := value
|
||||
else if name = '-id-uniq' then ModelIdUniq := value
|
||||
|
||||
else Exit(False);
|
||||
Result := True;
|
||||
end;
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ uses
|
|||
Keyman.Developer.System.KMConvertParameters,
|
||||
Keyman.Developer.System.ImportWindowsKeyboard,
|
||||
Keyman.Developer.System.KeyboardProjectTemplate,
|
||||
Keyman.Developer.System.ModelProjectTemplate,
|
||||
KeymanVersion,
|
||||
VersionInfo;
|
||||
|
||||
|
|
@ -102,6 +103,43 @@ begin
|
|||
end;
|
||||
end;
|
||||
|
||||
function DoCreateModelTemplate(FParameters: TKMConvertParameters): Boolean;
|
||||
var
|
||||
mpt: TModelProjectTemplate;
|
||||
FTargetFolder: string;
|
||||
ModelID: string;
|
||||
begin
|
||||
ModelID := FParameters.ModelIdAuthor + '.' + FParameters.ModelIdLanguage + '.' + FParameters.ModelIdUniq;
|
||||
mpt := TModelProjectTemplate.Create(FParameters.Destination, ModelID);
|
||||
try
|
||||
mpt.Name := FParameters.Name;
|
||||
mpt.Copyright := FParameters.Copyright;
|
||||
mpt.Version := FParameters.Version;
|
||||
mpt.BCP47Tags := FParameters.BCP47Tags;
|
||||
mpt.Author := FParameters.Author;
|
||||
|
||||
FTargetFolder := ExtractFileDir(mpt.ProjectFilename);
|
||||
if DirectoryExists(FTargetFolder) then
|
||||
begin
|
||||
writeln('ERROR: The directory "'+FTargetFolder+'" already exists.');
|
||||
Exit(False);
|
||||
end;
|
||||
|
||||
try
|
||||
mpt.Generate;
|
||||
except
|
||||
on E:EModelProjectTemplate do
|
||||
begin
|
||||
writeln(E.Message);
|
||||
Exit(False);
|
||||
end;
|
||||
end;
|
||||
Result := True;
|
||||
finally
|
||||
mpt.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure WriteBanner;
|
||||
begin
|
||||
writeln(SKeymanDeveloperName + ' Conversion Utility');
|
||||
|
|
@ -133,6 +171,8 @@ begin
|
|||
Result := DoImportWindowsKeyboard(FParameters);
|
||||
cmTemplate:
|
||||
Result := DoCreateKeyboardTemplate(FParameters);
|
||||
cmLexicalModel:
|
||||
Result := DoCreateModelTemplate(FParameters);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
|
|
|||
|
|
@ -79,7 +79,10 @@ uses
|
|||
TouchLayoutUtils in '..\TIKE\oskbuilder\TouchLayoutUtils.pas',
|
||||
KeyboardFonts in '..\..\global\delphi\general\KeyboardFonts.pas',
|
||||
Keyman.System.Util.RenderLanguageIcon in '..\..\global\delphi\ui\Keyman.System.Util.RenderLanguageIcon.pas',
|
||||
utilicon in '..\..\global\delphi\general\utilicon.pas';
|
||||
utilicon in '..\..\global\delphi\general\utilicon.pas',
|
||||
Keyman.Developer.System.ModelProjectTemplate in 'Keyman.Developer.System.ModelProjectTemplate.pas',
|
||||
Keyman.Developer.System.Project.modelTsProjectFile in '..\TIKE\project\Keyman.Developer.System.Project.modelTsProjectFile.pas',
|
||||
Keyman.Developer.System.Project.wordlistTsvProjectFile in '..\TIKE\project\Keyman.Developer.System.Project.wordlistTsvProjectFile.pas';
|
||||
|
||||
{$R icons.RES}
|
||||
{$R version.res}
|
||||
|
|
|
|||
|
|
@ -179,6 +179,9 @@
|
|||
<DCCReference Include="..\..\global\delphi\general\KeyboardFonts.pas"/>
|
||||
<DCCReference Include="..\..\global\delphi\ui\Keyman.System.Util.RenderLanguageIcon.pas"/>
|
||||
<DCCReference Include="..\..\global\delphi\general\utilicon.pas"/>
|
||||
<DCCReference Include="Keyman.Developer.System.ModelProjectTemplate.pas"/>
|
||||
<DCCReference Include="..\TIKE\project\Keyman.Developer.System.Project.modelTsProjectFile.pas"/>
|
||||
<DCCReference Include="..\TIKE\project\Keyman.Developer.System.Project.wordlistTsvProjectFile.pas"/>
|
||||
<BuildConfiguration Include="Release">
|
||||
<Key>Cfg_2</Key>
|
||||
<CfgParent>Base</CfgParent>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue