Added azcli
parent
f0ef36333b
commit
e0ecde0617
@ -0,0 +1,17 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
'use strict';
|
||||
|
||||
import { registerLanguage } from '../_.contribution';
|
||||
|
||||
// Allow for running under nodejs/requirejs in tests
|
||||
const _monaco: typeof monaco = (typeof monaco === 'undefined' ? (<any>self).monaco : monaco);
|
||||
|
||||
registerLanguage({
|
||||
id: 'azcli',
|
||||
extensions: ['.azcli'],
|
||||
aliases: ['Azure CLI', 'azcli'],
|
||||
loader: () => _monaco.Promise.wrap(import('./azcli'))
|
||||
});
|
@ -0,0 +1,157 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
'use strict';
|
||||
|
||||
import { testTokenization as actualTestTokenization, ITestItem } from '../test/testRunner';
|
||||
|
||||
function testTokenization(_language: string | string[], tests: ITestItem[][]): void {
|
||||
tests = tests.map(t => {
|
||||
return t.map(t => {
|
||||
return {
|
||||
line: t.line.replace(/\n/g, ' '),
|
||||
tokens: t.tokens
|
||||
};
|
||||
});
|
||||
});
|
||||
actualTestTokenization(_language, tests);
|
||||
}
|
||||
|
||||
testTokenization('azcli', [
|
||||
// Comment single line
|
||||
[{
|
||||
line: '#',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'comment.azcli' }
|
||||
]
|
||||
}],
|
||||
[{
|
||||
line: '# az find -q secret',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'comment.azcli' }
|
||||
]
|
||||
}],
|
||||
[{
|
||||
line: ' # az find -q secret',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'keyword.azcli' },
|
||||
{ startIndex: 4, type: 'comment.azcli' }
|
||||
]
|
||||
}],
|
||||
[{
|
||||
line: '#az find -q secret',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'comment.azcli' }
|
||||
]
|
||||
}],
|
||||
|
||||
// Other cases
|
||||
[{
|
||||
line: 'az find -q secret',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'keyword.azcli' },
|
||||
{ startIndex: 7, type: 'key.identifier.azcli' },
|
||||
{ startIndex: 11, type: 'string.azcli' }
|
||||
]
|
||||
}],
|
||||
[{
|
||||
line: '',
|
||||
tokens: [
|
||||
]
|
||||
}],
|
||||
[{
|
||||
line: ' ',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'keyword.azcli' }
|
||||
]
|
||||
}],
|
||||
[{
|
||||
line: '--assignee',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'key.identifier.azcli' }
|
||||
]
|
||||
}],
|
||||
[{
|
||||
line: ' --service-principal',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'keyword.azcli' },
|
||||
{ startIndex: 3, type: 'key.identifier.azcli' }
|
||||
]
|
||||
}],
|
||||
[{
|
||||
line: 'az ad sp create-for-rb --name ServicePrincipalName --password PASSWORD',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'keyword.azcli' },
|
||||
{ startIndex: 23, type: 'key.identifier.azcli' },
|
||||
{ startIndex: 31, type: 'string.azcli' },
|
||||
{ startIndex: 52, type: 'key.identifier.azcli' },
|
||||
{ startIndex: 63, type: 'string.azcli' }
|
||||
]
|
||||
}],
|
||||
[{
|
||||
line: '--name!~`\"$%^&*(|\/\.,-=+',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'key.identifier.azcli' }
|
||||
]
|
||||
}],
|
||||
[{
|
||||
line: '--name#some comment',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'key.identifier.azcli' },
|
||||
{ startIndex: 6, type: 'comment.azcli' }
|
||||
]
|
||||
}],
|
||||
[{
|
||||
line: '--query osPro ``````',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'key.identifier.azcli' },
|
||||
{ startIndex: 8, type: 'string.azcli' }
|
||||
]
|
||||
}],
|
||||
[{
|
||||
line: 'az ad sp create-for-rbac',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'keyword.azcli' }
|
||||
]
|
||||
}],
|
||||
[{
|
||||
line: '123456789',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'keyword.azcli' }
|
||||
]
|
||||
}],
|
||||
[{
|
||||
line: '- abc',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'key.identifier.azcli' },
|
||||
{ startIndex: 2, type: 'string.azcli' }
|
||||
]
|
||||
}],
|
||||
[{
|
||||
line: '- @!$()',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'key.identifier.azcli' },
|
||||
{ startIndex: 2, type: 'string.azcli' }
|
||||
]
|
||||
}],
|
||||
[{
|
||||
line: '""',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'keyword.azcli' }
|
||||
]
|
||||
}],
|
||||
[{
|
||||
line: '// some text',
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'keyword.azcli' }
|
||||
]
|
||||
}],
|
||||
[{
|
||||
line: `'APP_ID'`,
|
||||
tokens: [
|
||||
{ startIndex: 0, type: 'keyword.azcli' }
|
||||
]
|
||||
}]
|
||||
]);
|
@ -0,0 +1,65 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
|
||||
'use strict';
|
||||
|
||||
import IRichLanguageConfiguration = monaco.languages.LanguageConfiguration;
|
||||
import ILanguage = monaco.languages.IMonarchLanguage;
|
||||
|
||||
export const conf: IRichLanguageConfiguration = {
|
||||
comments: {
|
||||
lineComment: '#',
|
||||
}
|
||||
};
|
||||
|
||||
export const language = <ILanguage>{
|
||||
defaultToken: 'keyword',
|
||||
ignoreCase: true,
|
||||
tokenPostfix: '.azcli',
|
||||
|
||||
str: /[^#\s]/,
|
||||
|
||||
tokenizer: {
|
||||
root: [
|
||||
{include: '@comment'},
|
||||
[/\s-+@str*\s*/, {
|
||||
cases: {
|
||||
'@eos': { token: 'key.identifier', next: '@popall' },
|
||||
'@default': { token: 'key.identifier', next: '@type' }
|
||||
}
|
||||
}],
|
||||
[/^-+@str*\s*/, {
|
||||
cases: {
|
||||
'@eos': { token: 'key.identifier', next: '@popall' },
|
||||
'@default': { token: 'key.identifier', next: '@type' }
|
||||
}
|
||||
}]
|
||||
],
|
||||
|
||||
type: [
|
||||
{include: '@comment'},
|
||||
[/-+@str*\s*/, {
|
||||
cases: {
|
||||
'@eos': { token: 'key.identifier', next: '@popall' },
|
||||
'@default': 'key.identifier'
|
||||
}
|
||||
}],
|
||||
[/@str+\s*/, {
|
||||
cases: {
|
||||
'@eos': { token: 'string', next: '@popall' },
|
||||
'@default': 'string'
|
||||
}
|
||||
}]
|
||||
],
|
||||
|
||||
comment: [
|
||||
[/#.*$/, {
|
||||
cases: {
|
||||
'@eos': { token: 'comment', next: '@popall' }
|
||||
}
|
||||
}]
|
||||
]
|
||||
}
|
||||
};
|
Loading…
Reference in New Issue