Skip to content

Commit

Permalink
Update v2 formatter default width and some other improvements (Azure#…
Browse files Browse the repository at this point in the history
…13503)

The modifications outlined below are based on feedback gathered during
the community call:

- The default `formatting.width` value is now set to 120.
- The rules for splitting arrays have been refined to accommodate a
newline character following the opening bracket `[`.

Additionally, this PR introduces an enhancement for formatting function
calls with a single argument. The formatter will no longer apply
indentation to a single argument, leading to a more compact
presentation. For instance, the previous formatting:

```bicep
@description(
  'Loooooooooooooooooooooooooooooooooooooong description'
)
@Allowed(
  [
    1
    2
    3
  ]
)
param foo array
```
Will now be compacted to:

```bicep
@description('Loooooooooooooooooooooooooooooooooooooong description')
@Allowed([
  1
  2
  3
])
param foo array
```
  • Loading branch information
shenglol committed Mar 2, 2024
1 parent ff0af89 commit 8717dd5
Show file tree
Hide file tree
Showing 177 changed files with 1,922 additions and 2,561 deletions.
5 changes: 1 addition & 4 deletions src/Bicep.Cli.IntegrationTests/CliScenarioTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -180,10 +180,7 @@ public async Task Test_Issue3182()
resource roleAssignment 'Microsoft.Authorization/roleAssignments@2020-04-01-preview' = {
name: guid(roleAssignmentName)
properties: {
roleDefinitionId: subscriptionResourceId(
'Microsoft.Authorization/roleDefinitions',
roleDefinitionId
)
roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', roleDefinitionId)
principalId: principalId
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,10 @@ public async Task Decompile_ValidParamFile_ShouldSucceed()

param second = 1

param third = [1, 'foo']
param third = [
1
'foo'
]

param fourth = {
firstKey: 'bar'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
param deployTimeParam string = 'steve'
var deployTimeVar = 'nigel'
var dependentVar = {
dependencies: [deployTimeVar, deployTimeParam]
dependencies: [
deployTimeVar
deployTimeParam
]
}

var resourceDependency = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,14 @@ func objReturnType(name string) object => {
hello: 'Hi ${name}!'
}

func arrayReturnType(name string) array => [name]
func arrayReturnType(name string) array => [
name
]

func asdf(name string) array => ['asdf', name]
func asdf(name string) array => [
'asdf'
name
]

@minValue(0)
type positiveInt = int
Expand All @@ -31,15 +36,10 @@ func test3() object => loadYamlContent('./repro-data.json')
func test4() string => loadFileAsBase64('./repro-data.json')

// validate formatter works (https://github.com/Azure/bicep/issues/12913)
func a(
____________________________________________________________________________________________ string
) string => 'a'
func b(
longParameterName1 string,
longParameterName2 string,
longParameterName3 string,
longParameterName4 string
) string => 'b'
func a(____________________________________________________________________________________________ string) string =>
'a'
func b(longParameterName1 string, longParameterName2 string, longParameterName3 string, longParameterName4 string) string =>
'b'

func buildUrlMultiLine(https bool, hostname string, path string) string =>
'${https ? 'https' : 'http'}:https://${hostname}${empty(path) ? '' : '/${path}'}'
Original file line number Diff line number Diff line change
Expand Up @@ -73,15 +73,15 @@ var ternary = null ? 4 : false
var complex = test(2 + 3 * 4, true || false && null)
var complex = -2 && 3 && !4 && 5
var complex = null ? !4 : false
var complex = true == false != null == 4 != 'a'
? -2 && 3 && !4 && 5
: true || false && null
var complex = true == false != null == 4 != 'a' ? -2 && 3 && !4 && 5 : true || false && null

var nestedTernary = null ? 1 : 2 ? true ? 'a' : 'b' : false ? 'd' : 15
var nestedTernary = (null ? 1 : 2) ? (true ? 'a' : 'b') : (false ? 'd' : 15)

// bad array access
var errorInsideArrayAccess = [!null][!0]
var errorInsideArrayAccess = [
!null
][!0]
var integerIndexOnNonArray = (null)[0]
var stringIndexOnNonObject = 'test'['test']
var malformedStringIndex = {
Expand Down Expand Up @@ -150,9 +150,16 @@ var sampleObject = {
myNull: null
myInner: {
anotherStr: 'a'
otherArr: ['s', 'a']
otherArr: [
's'
'a'
]
}
myArr: [1, 2, 3]
myArr: [
1
2
3
]
}

var badProperty = sampleObject.myFake
Expand All @@ -179,10 +186,7 @@ var bannedFunctions = {
if: sys.if(null, null)
obj: sys.createArray()
arr: sys.createObject()
numeric: sys.add(1) + sys.sub(2, 3) + sys.mul(8, 's') + sys.div(true) + sys.mod(
null,
false
)
numeric: sys.add(1) + sys.sub(2, 3) + sys.mul(8, 's') + sys.div(true) + sys.mod(null, false)
relational: sys.less() && sys.lessOrEquals() && sys.greater() && sys.greaterOrEquals()
equals: sys.equals()
bool: sys.not() || sys.and() || sys.or()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,10 @@ var inObject = {
a: i => i
}

var inArray = [i => i, j => j]
var inArray = [
i => i
j => j
]

resource stg 'Microsoft.Storage/storageAccounts@2021-09-01' = [
for i in range(0, 2): {
Expand All @@ -60,19 +63,10 @@ resource stg 'Microsoft.Storage/storageAccounts@2021-09-01' = [
]

output stgKeys array = map(range(0, 2), i => stg[i].listKeys().keys[0].value)
output stgKeys2 array = map(
range(0, 2),
j => stg[((j + 2) % 123)].listKeys().keys[0].value
)
output stgKeys3 array = map(
ids,
id => listKeys(id, stg[0].apiVersion).keys[0].value
)
output stgKeys2 array = map(range(0, 2), j => stg[((j + 2) % 123)].listKeys().keys[0].value)
output stgKeys3 array = map(ids, id => listKeys(id, stg[0].apiVersion).keys[0].value)
output accessTiers array = map(range(0, 2), k => stg[k].properties.accessTier)
output accessTiers2 array = map(
range(0, 2),
x => map(range(0, 2), y => stg[x / y].properties.accessTier)
)
output accessTiers2 array = map(range(0, 2), x => map(range(0, 2), y => stg[x / y].properties.accessTier))
output accessTiers3 array = map(ids, foo => reference('${foo}').accessTier)

module modLoop './empty.bicep' = [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,132 +13,40 @@ var binaryLoadInvalidCharactersPath1 = loadFileAsBase64('Assets\\binary')
var textLoadInvalidCharactersPath2 = loadTextContent('/Assets/TextFile.txt')
var binaryLoadInvalidCharactersPath2 = loadFileAsBase64('/Assets/binary')

var textLoadInvalidCharactersPath3 = loadTextContent(
'file:https://Assets/TextFile.txt'
)
var textLoadInvalidCharactersPath3 = loadTextContent('file:https://Assets/TextFile.txt')
var binaryLoadInvalidCharactersPath3 = loadFileAsBase64('file:https://Assets/binary')

var textLoadUnsupportedEncoding = loadTextContent(
'Assets/TextFile.txt',
'windows-1250'
)

var textLoadWrongEncoding01 = loadTextContent(
'Assets/encoding-iso.txt',
'us-ascii'
)
var textLoadWrongEncoding02 = loadTextContent(
'Assets/encoding-iso.txt',
'utf-8'
)
var textLoadWrongEncoding03 = loadTextContent(
'Assets/encoding-iso.txt',
'utf-16BE'
)
var textLoadWrongEncoding04 = loadTextContent(
'Assets/encoding-iso.txt',
'utf-16'
)
var textLoadWrongEncoding05 = loadTextContent(
'Assets/encoding-ascii.txt',
'iso-8859-1'
)
var textLoadWrongEncoding06 = loadTextContent(
'Assets/encoding-ascii.txt',
'utf-8'
)
var textLoadWrongEncoding07 = loadTextContent(
'Assets/encoding-ascii.txt',
'utf-16BE'
)
var textLoadWrongEncoding08 = loadTextContent(
'Assets/encoding-ascii.txt',
'utf-16'
)
var textLoadWrongEncoding09 = loadTextContent(
'Assets/encoding-utf16.txt',
'iso-8859-1'
)
var textLoadWrongEncoding10 = loadTextContent(
'Assets/encoding-utf16.txt',
'utf-8'
)
var textLoadWrongEncoding11 = loadTextContent(
'Assets/encoding-utf16.txt',
'utf-16BE'
)
var textLoadWrongEncoding12 = loadTextContent(
'Assets/encoding-utf16.txt',
'us-ascii'
)
var textLoadWrongEncoding13 = loadTextContent(
'Assets/encoding-utf16be.txt',
'utf-16'
)
var textLoadWrongEncoding14 = loadTextContent(
'Assets/encoding-utf16be.txt',
'utf-8'
)
var textLoadWrongEncoding15 = loadTextContent(
'Assets/encoding-utf16be.txt',
'us-ascii'
)
var textLoadWrongEncoding16 = loadTextContent(
'Assets/encoding-utf16be.txt',
'iso-8859-1'
)
var textLoadWrongEncoding17 = loadTextContent(
'Assets/encoding-windows1250.txt',
'utf-16BE'
)
var textLoadWrongEncoding18 = loadTextContent(
'Assets/encoding-windows1250.txt',
'utf-16'
)
var textLoadWrongEncoding19 = loadTextContent(
'Assets/encoding-windows1250.txt',
'utf-8'
)
var textLoadWrongEncoding20 = loadTextContent(
'Assets/encoding-windows1250.txt',
'us-ascii'
)
var textLoadWrongEncoding21 = loadTextContent(
'Assets/encoding-windows1250.txt',
'iso-8859-1'
)
var textLoadWrongEncoding22 = loadTextContent(
'Assets/encoding-utf8.txt',
'iso-8859-1'
)
var textLoadWrongEncoding23 = loadTextContent(
'Assets/encoding-utf8.txt',
'utf-16'
)
var textLoadWrongEncoding24 = loadTextContent(
'Assets/encoding-utf8.txt',
'utf-16BE'
)
var textLoadWrongEncoding25 = loadTextContent(
'Assets/encoding-utf8.txt',
'us-ascii'
)
var textLoadWrongEncoding26 = loadTextContent(
'Assets/encoding-utf8-bom.txt',
'iso-8859-1'
)
var textLoadWrongEncoding27 = loadTextContent(
'Assets/encoding-utf8-bom.txt',
'utf-16'
)
var textLoadWrongEncoding28 = loadTextContent(
'Assets/encoding-utf8-bom.txt',
'utf-16BE'
)
var textLoadWrongEncoding29 = loadTextContent(
'Assets/encoding-utf8-bom.txt',
'us-ascii'
)
var textLoadUnsupportedEncoding = loadTextContent('Assets/TextFile.txt', 'windows-1250')

var textLoadWrongEncoding01 = loadTextContent('Assets/encoding-iso.txt', 'us-ascii')
var textLoadWrongEncoding02 = loadTextContent('Assets/encoding-iso.txt', 'utf-8')
var textLoadWrongEncoding03 = loadTextContent('Assets/encoding-iso.txt', 'utf-16BE')
var textLoadWrongEncoding04 = loadTextContent('Assets/encoding-iso.txt', 'utf-16')
var textLoadWrongEncoding05 = loadTextContent('Assets/encoding-ascii.txt', 'iso-8859-1')
var textLoadWrongEncoding06 = loadTextContent('Assets/encoding-ascii.txt', 'utf-8')
var textLoadWrongEncoding07 = loadTextContent('Assets/encoding-ascii.txt', 'utf-16BE')
var textLoadWrongEncoding08 = loadTextContent('Assets/encoding-ascii.txt', 'utf-16')
var textLoadWrongEncoding09 = loadTextContent('Assets/encoding-utf16.txt', 'iso-8859-1')
var textLoadWrongEncoding10 = loadTextContent('Assets/encoding-utf16.txt', 'utf-8')
var textLoadWrongEncoding11 = loadTextContent('Assets/encoding-utf16.txt', 'utf-16BE')
var textLoadWrongEncoding12 = loadTextContent('Assets/encoding-utf16.txt', 'us-ascii')
var textLoadWrongEncoding13 = loadTextContent('Assets/encoding-utf16be.txt', 'utf-16')
var textLoadWrongEncoding14 = loadTextContent('Assets/encoding-utf16be.txt', 'utf-8')
var textLoadWrongEncoding15 = loadTextContent('Assets/encoding-utf16be.txt', 'us-ascii')
var textLoadWrongEncoding16 = loadTextContent('Assets/encoding-utf16be.txt', 'iso-8859-1')
var textLoadWrongEncoding17 = loadTextContent('Assets/encoding-windows1250.txt', 'utf-16BE')
var textLoadWrongEncoding18 = loadTextContent('Assets/encoding-windows1250.txt', 'utf-16')
var textLoadWrongEncoding19 = loadTextContent('Assets/encoding-windows1250.txt', 'utf-8')
var textLoadWrongEncoding20 = loadTextContent('Assets/encoding-windows1250.txt', 'us-ascii')
var textLoadWrongEncoding21 = loadTextContent('Assets/encoding-windows1250.txt', 'iso-8859-1')
var textLoadWrongEncoding22 = loadTextContent('Assets/encoding-utf8.txt', 'iso-8859-1')
var textLoadWrongEncoding23 = loadTextContent('Assets/encoding-utf8.txt', 'utf-16')
var textLoadWrongEncoding24 = loadTextContent('Assets/encoding-utf8.txt', 'utf-16BE')
var textLoadWrongEncoding25 = loadTextContent('Assets/encoding-utf8.txt', 'us-ascii')
var textLoadWrongEncoding26 = loadTextContent('Assets/encoding-utf8-bom.txt', 'iso-8859-1')
var textLoadWrongEncoding27 = loadTextContent('Assets/encoding-utf8-bom.txt', 'utf-16')
var textLoadWrongEncoding28 = loadTextContent('Assets/encoding-utf8-bom.txt', 'utf-16BE')
var textLoadWrongEncoding29 = loadTextContent('Assets/encoding-utf8-bom.txt', 'us-ascii')

var textOversize = loadTextContent('Assets/oversizeText.txt')
var binaryOversize = loadFileAsBase64('Assets/oversizeBinary')
Expand All @@ -148,8 +56,5 @@ var binaryAsText = loadTextContent('Assets/binary')
var jsonObject1 = loadJsonContent('Assets/jsonInvalid.json.txt')
var jsonObject2 = loadJsonContent('Assets/jsonValid.json.txt', '.')
var jsonObject3 = loadJsonContent('Assets/jsonValid.json.txt', '$.')
var jsonObject4 = loadJsonContent(
'Assets/jsonValid.json.txt',
'.propertyThatDoesNotExist'
)
var jsonObject4 = loadJsonContent('Assets/jsonValid.json.txt', '.propertyThatDoesNotExist')
var jsonObject5 = loadJsonContent('Assets/fileNotExists')
Loading

0 comments on commit 8717dd5

Please sign in to comment.