├── docs
├── .nojekyll
├── CNAME
├── assets
│ ├── favicon.ico
│ └── samples
│ │ ├── top.png
│ │ ├── bottom.png
│ │ ├── icon.png
│ │ ├── example.png
│ │ ├── topleft.png
│ │ ├── topright.png
│ │ ├── bottomleft.png
│ │ ├── bottomright.png
│ │ ├── dotnetbot.png
│ │ ├── icon-beta.png
│ │ ├── beta-version.png
│ │ ├── icon-example.png
│ │ ├── dotnetbot-beta.png
│ │ └── dotnetbot-example.png
├── continuous-integration
│ ├── platforms.md
│ └── setup.md
├── appendix
│ ├── json-schemas.md
│ └── upgrade.md
├── release-notes.md
├── images
│ └── built-in-templates.md
└── maui.md
├── E2E
├── E2EApp
│ ├── .gitignore
│ ├── E2EApp
│ │ ├── Theme
│ │ │ ├── anotherStyle.scss
│ │ │ ├── _colors.scss
│ │ │ └── style.scss
│ │ ├── sample.json
│ │ ├── App.xaml
│ │ ├── E2EApp.csproj
│ │ ├── Views
│ │ │ ├── ImagesPage.xaml.cs
│ │ │ └── SecretsPage.xaml.cs
│ │ └── App.xaml.cs
│ ├── NuGet.config
│ ├── Directory.Build.props
│ ├── Images
│ │ ├── Shared
│ │ │ ├── icon.png
│ │ │ ├── monkey.png
│ │ │ ├── monkey.json
│ │ │ └── icon.json
│ │ ├── iOS
│ │ │ ├── platform.jpg
│ │ │ └── platform.json
│ │ ├── Android
│ │ │ ├── launcher.png
│ │ │ ├── platform.png
│ │ │ ├── platform.json
│ │ │ └── launcher.json
│ │ └── Beta
│ │ │ ├── beta-version.png
│ │ │ ├── beta-version.json
│ │ │ └── icon.json
│ ├── E2EApp.iOS
│ │ ├── Resources
│ │ │ ├── Default.png
│ │ │ ├── Default@2x.png
│ │ │ ├── Default-568h@2x.png
│ │ │ ├── Default-Portrait.png
│ │ │ └── Default-Portrait@2x.png
│ │ ├── Assets.xcassets
│ │ │ └── AppIcon.appiconset
│ │ │ │ ├── Icon20.png
│ │ │ │ ├── Icon29.png
│ │ │ │ ├── Icon40.png
│ │ │ │ ├── Icon58.png
│ │ │ │ ├── Icon60.png
│ │ │ │ ├── Icon76.png
│ │ │ │ ├── Icon80.png
│ │ │ │ ├── Icon87.png
│ │ │ │ ├── Icon1024.png
│ │ │ │ ├── Icon120.png
│ │ │ │ ├── Icon152.png
│ │ │ │ ├── Icon167.png
│ │ │ │ └── Icon180.png
│ │ ├── Entitlements.plist
│ │ ├── app.debug.config
│ │ ├── app.foo.config
│ │ ├── app.release.config
│ │ ├── app.config
│ │ └── Main.cs
│ ├── E2EApp.Android
│ │ ├── Resources
│ │ │ ├── values
│ │ │ │ └── colors.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ │ ├── icon.xml
│ │ │ │ └── icon_round.xml
│ │ │ ├── drawable
│ │ │ │ └── splash_screen.xml
│ │ │ └── layout
│ │ │ │ ├── Toolbar.xml
│ │ │ │ └── Tabbar.xml
│ │ ├── app.foo.config
│ │ ├── app.debug.config
│ │ ├── app.release.config
│ │ ├── app.config
│ │ ├── Properties
│ │ │ └── AndroidManifest.xml
│ │ ├── Assets
│ │ │ └── AboutAssets.txt
│ │ └── SplashActivity.cs
│ ├── E2EApp.UITests
│ │ └── AppInitializer.cs
│ └── .editorconfig
├── E2E.Core
│ ├── theme
│ │ ├── _colors.scss
│ │ ├── anotherStyle.scss
│ │ └── style.scss
│ ├── E2E.Core.csproj
│ └── CommonLib.cs
├── .gitignore
├── CI.props
└── NuGet.config
├── .github
├── FUNDING.yml
├── workflows
│ ├── requirements.txt
│ └── publish-release.yml
├── ISSUE_TEMPLATE
│ ├── feature_request.md
│ └── bug_report.md
└── dependabot.yml
├── assets
└── ignore.json
├── xunit.runner.json
├── key.snk
├── tests
├── Mobile.BuildTools.Tests
│ ├── Templates
│ │ ├── Sass
│ │ │ ├── _colors.sass
│ │ │ ├── _fonts.sass
│ │ │ └── style.sass
│ │ ├── Scss
│ │ │ ├── _colors.scss
│ │ │ ├── _fonts.scss
│ │ │ ├── style.scss
│ │ │ └── style2.scss
│ │ ├── Secrets
│ │ │ ├── byte.json
│ │ │ ├── char.json
│ │ │ ├── int.json
│ │ │ ├── long.json
│ │ │ ├── sbyte.json
│ │ │ ├── uint.json
│ │ │ ├── bool.json
│ │ │ ├── decimal.json
│ │ │ ├── double.json
│ │ │ ├── float.json
│ │ │ ├── short.json
│ │ │ ├── ushort.json
│ │ │ ├── byteArray.json
│ │ │ ├── charArray.json
│ │ │ ├── intArray.json
│ │ │ ├── longArray.json
│ │ │ ├── sbyteArray.json
│ │ │ ├── timespan.json
│ │ │ ├── uintArray.json
│ │ │ ├── ulong.json
│ │ │ ├── string.json
│ │ │ ├── boolArray.json
│ │ │ ├── datetime.json
│ │ │ ├── decimalArray.json
│ │ │ ├── doubleArray.json
│ │ │ ├── floatArray.json
│ │ │ ├── shortArray.json
│ │ │ ├── ushortArray.json
│ │ │ ├── datetimeoffset.json
│ │ │ ├── stringArray.json
│ │ │ ├── uri.json
│ │ │ ├── timespanArray.json
│ │ │ ├── guid.json
│ │ │ ├── ulongArray.json
│ │ │ ├── datetimeArray.json
│ │ │ ├── datetimeoffsetArray.json
│ │ │ ├── uriArray.json
│ │ │ └── guidArray.json
│ │ ├── Images
│ │ │ ├── Debug
│ │ │ │ ├── example.json
│ │ │ │ ├── example.png
│ │ │ │ ├── ios-icon.json
│ │ │ │ └── appicon.json
│ │ │ ├── dotnetbot.png
│ │ │ ├── Watermarks
│ │ │ │ ├── icon.png
│ │ │ │ ├── example.png
│ │ │ │ ├── dotnetbot.png
│ │ │ │ └── beta-version.png
│ │ │ ├── MonoAndroid
│ │ │ │ ├── appicon.png
│ │ │ │ └── appicon.json
│ │ │ ├── Xamarin.iOS
│ │ │ │ ├── ios-icon.json
│ │ │ │ └── ios-icon.png
│ │ │ ├── programmer-clipart.png
│ │ │ ├── Expected
│ │ │ │ └── Tests
│ │ │ │ │ └── ImageResizerGeneratorFixture
│ │ │ │ │ ├── SetsCustomBackground
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── SetsDefaultBackground
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── AppliesPadding--with-paddingFactor-of-1-and-inputFile-of-logo.svg
│ │ │ │ │ └── logo.png
│ │ │ │ │ ├── AppliesPadding--with-paddingFactor-of-1.5-and-inputFile-of-logo.svg
│ │ │ │ │ └── logo.png
│ │ │ │ │ ├── GeneratesImage--with-inputFile-of-dotnetbot.png-and-scale-of-1
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── GeneratesImage--with-inputFile-of-dotnetbot.svg-and-scale-of-1
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── GeneratesImage--with-inputFile-of-dotnetbot.png-and-scale-of-0.5
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── GeneratesImage--with-inputFile-of-dotnetbot.png-and-scale-of-0.75
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── GeneratesImage--with-inputFile-of-dotnetbot.svg-and-scale-of-0.5
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── GeneratesImage--with-inputFile-of-dotnetbot.svg-and-scale-of-0.75
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── AppliesPadding--with-paddingFactor-of-1-and-inputFile-of-dotnetbot.png
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── AppliesPadding--with-paddingFactor-of-1-and-inputFile-of-dotnetbot.svg
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── AppliesTextBanner--with-text-of-Dev-and-scale-of-1-and-position-of-Top
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── AppliesWatermark--with-inputImageName-of-icon-and-watermarkImage-of-example
│ │ │ │ │ └── icon.png
│ │ │ │ │ ├── AppliesPadding--with-paddingFactor-of-0.5-and-inputFile-of-dotnetbot.png
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── AppliesPadding--with-paddingFactor-of-0.5-and-inputFile-of-dotnetbot.svg
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── AppliesPadding--with-paddingFactor-of-1.5-and-inputFile-of-dotnetbot.png
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── AppliesPadding--with-paddingFactor-of-1.5-and-inputFile-of-dotnetbot.svg
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── AppliesTextBanner--with-text-of-Dev-and-scale-of-0.5-and-position-of-Top
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── AppliesTextBanner--with-text-of-Dev-and-scale-of-0.5-and-position-of-Bottom
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── AppliesTextBanner--with-text-of-Dev-and-scale-of-1-and-position-of-Bottom
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── AppliesTextBanner--with-text-of-Dev-and-scale-of-1-and-position-of-TopLeft
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── AppliesTextBanner--with-text-of-Dev-and-scale-of-1-and-position-of-TopRight
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── AppliesTextBanner--with-text-of-Stage-and-scale-of-0.5-and-position-of-Top
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── AppliesWatermark--with-inputImageName-of-icon-and-watermarkImage-of-beta-version
│ │ │ │ │ └── icon.png
│ │ │ │ │ ├── AppliesTextBanner--with-text-of-Dev-and-scale-of-0.5-and-position-of-TopLeft
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── AppliesTextBanner--with-text-of-Dev-and-scale-of-0.5-and-position-of-TopRight
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── AppliesTextBanner--with-text-of-Dev-and-scale-of-1-and-position-of-BottomLeft
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── AppliesTextBanner--with-text-of-Stage-and-scale-of-0.5-and-position-of-Bottom
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── AppliesTextBanner--with-text-of-Dev-and-scale-of-0.5-and-position-of-BottomLeft
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── AppliesTextBanner--with-text-of-Dev-and-scale-of-0.5-and-position-of-BottomRight
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── AppliesTextBanner--with-text-of-Dev-and-scale-of-1-and-position-of-BottomRight
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── AppliesTextBanner--with-text-of-Stage-and-scale-of-0.5-and-position-of-TopLeft
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── AppliesTextBanner--with-text-of-Stage-and-scale-of-0.5-and-position-of-TopRight
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── AppliesWatermark--with-inputImageName-of-dotnetbot-and-watermarkImage-of-example
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── AppliesTextBanner--with-text-of-Something long-and-scale-of-1-and-position-of-Top
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── AppliesTextBanner--with-text-of-Stage-and-scale-of-0.5-and-position-of-BottomLeft
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── AppliesTextBanner--with-text-of-Stage-and-scale-of-0.5-and-position-of-BottomRight
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── AppliesTextBanner--with-text-of-Something long-and-scale-of-1-and-position-of-Bottom
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── AppliesTextBanner--with-text-of-Something long-and-scale-of-1-and-position-of-TopLeft
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── AppliesWatermark--with-inputImageName-of-dotnetbot-and-watermarkImage-of-beta-version
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── AppliesTextBanner--with-text-of-Something long-and-scale-of-1-and-position-of-TopRight
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── AppliesTextBanner--with-text-of-Something long-and-scale-of-1-and-position-of-BottomLeft
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── AppliesTextBanner--with-text-of-Something long-and-scale-of-1-and-position-of-BottomRight
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── GeneratesImageWithCustomHeightWidth--with-inputFile-of-dotnetbot.png-and-expectedOutput-of-150
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── GeneratesImageWithCustomHeightWidth--with-inputFile-of-dotnetbot.png-and-expectedOutput-of-225
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── GeneratesImageWithCustomHeightWidth--with-inputFile-of-dotnetbot.png-and-expectedOutput-of-300
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── GeneratesImageWithCustomHeightWidth--with-inputFile-of-dotnetbot.svg-and-expectedOutput-of-150
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ ├── GeneratesImageWithCustomHeightWidth--with-inputFile-of-dotnetbot.svg-and-expectedOutput-of-225
│ │ │ │ │ └── dotnetbot.png
│ │ │ │ │ └── GeneratesImageWithCustomHeightWidth--with-inputFile-of-dotnetbot.svg-and-expectedOutput-of-300
│ │ │ │ │ └── dotnetbot.png
│ │ │ └── square.svg
│ │ ├── Css
│ │ │ ├── style.min.css
│ │ │ ├── style2.min.css
│ │ │ ├── style.css
│ │ │ └── style2.css
│ │ ├── CompiledAndroidManifest.xml
│ │ ├── Apple
│ │ │ └── Resources
│ │ │ │ └── Media.xcassets
│ │ │ │ └── Contents.json
│ │ ├── buildtools.json
│ │ ├── CompiledGenericManifest.json
│ │ ├── MockManifestTemplate.json
│ │ └── Serialization
│ │ │ ├── css.test.json
│ │ │ ├── artifactcopy.test.json
│ │ │ ├── appconfig.test.json
│ │ │ └── google.test.json
│ ├── resources
│ │ └── resourceDefinition.json
│ └── Fixtures
│ │ ├── Drawing
│ │ ├── ImageBaseFixture.cs
│ │ └── VectorImageFixture.cs
│ │ └── Extensions
│ │ └── PlatformExtensionsFixture.cs
├── Mobile.BuildTools.Configuration.Tests
│ ├── app.foo.config
│ └── app.config
└── Mobile.BuildTools.AppSettings.Tests
│ └── Sources
│ ├── AddsSimpleProperty
│ ├── buildtools.json
│ └── buildtools.env
│ ├── SkipsUnsupportedPlatform
│ ├── buildtools.json
│ └── buildtools.env
│ ├── UsesSettingsOverDefault
│ └── buildtools.json
│ ├── GeneratesRequiredPlatform
│ ├── buildtools.json
│ └── buildtools.env
│ └── GeneratesWithRequiredPrefix
│ ├── buildtools.json
│ └── buildtools.env
├── logo
└── icon.png
├── Package.Transitive.props
├── Package.Transitive.targets
├── src
├── Mobile.BuildTools.AzurePipelines
│ ├── tasks
│ │ ├── ResigniOS
│ │ │ ├── task.sh
│ │ │ ├── tsconfig.json
│ │ │ └── package.json
│ │ ├── SwapAppAssets
│ │ │ ├── task.json
│ │ │ ├── tsconfig.json
│ │ │ ├── task.ts
│ │ │ └── package.json
│ │ └── ResignAndroid
│ │ │ ├── tsconfig.json
│ │ │ ├── task.ts
│ │ │ └── package.json
│ ├── ReadMe.md
│ └── vss-extension.json
├── assets
│ └── runtimes
│ │ ├── win-x64
│ │ └── libsass.dll
│ │ ├── win-x86
│ │ └── libsass.dll
│ │ └── osx-x64
│ │ └── libsass.dylib
├── Mobile.BuildTools.Reference
│ ├── Models
│ │ ├── ArtifactCopy.cs
│ │ ├── Configuration
│ │ │ └── ExpectedAppConfig.cs
│ │ ├── Settings
│ │ │ ├── Accessibility.cs
│ │ │ └── PropertyTypeExtensions.cs
│ │ ├── VersionEnvironment.cs
│ │ ├── VersionBehavior.cs
│ │ ├── AppIcons
│ │ │ ├── AppleIconSet.cs
│ │ │ ├── WatermarkPosition.cs
│ │ │ ├── PlatformResourceType.cs
│ │ │ ├── PlatformConfiguration.cs
│ │ │ └── AppleIconSetImage.cs
│ │ ├── GoogleConfig.cs
│ │ ├── ToolItem.cs
│ │ ├── XamarinCss.cs
│ │ ├── EnvironmentSettings.cs
│ │ ├── ImageResize.cs
│ │ └── AppConfig.cs
│ ├── Handlers
│ │ ├── FloatValueHandler.cs
│ │ ├── DecimalValueHandler.cs
│ │ ├── UriValueHandler.cs
│ │ ├── DefaultValueHandler.cs
│ │ └── NumericValueHandler.cs
│ ├── Utils
│ │ └── Platform.cs
│ ├── Logging
│ │ ├── ILog.cs
│ │ └── ConsoleLogger.cs
│ ├── Generators
│ │ ├── IGenerator.cs
│ │ └── GeneratorBase.cs
│ ├── Extensions
│ │ └── DictionaryExtensions.cs
│ ├── IO
│ │ └── DirectoryInfoEqualityComparer.cs
│ └── Constants.cs
├── Mobile.BuildTools
│ ├── buildTransitive
│ │ ├── Mobile.BuildTools.props
│ │ └── Mobile.BuildTools.targets
│ ├── Utils
│ │ └── MSBuildConfigHelper.cs
│ ├── Resources
│ │ └── resourceDefinition.json
│ ├── NetStandard.targets
│ ├── Extensions
│ │ └── FileInfoExtensions.cs
│ ├── UAP.targets
│ ├── Mobile.BuildTools.props
│ ├── readme.md
│ └── Tasks
│ │ └── GenerateGitReleaseNotesTask.cs
├── Mobile.BuildTools.Configuration
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── Xdt
│ │ ├── IXmlOriginalDocumentService.cs
│ │ ├── XmlTransformationException.cs
│ │ └── Microsoft.Web.XmlTransform.csproj
│ ├── INameValueCollection.cs
│ ├── EmptyDisposable.cs
│ ├── IPlatformConfigManager.cs
│ ├── IConfigurationManager.cs
│ ├── AppConfigElement.cs
│ ├── AppConfigSource.cs
│ ├── ConnectionStringSettings.cs
│ ├── ReadMe.md
│ ├── build
│ │ └── Mobile.BuildTools.Configuration.props
│ └── ConfigurationManagerExtensions.cs
├── Mobile.BuildTools.AppSettings
│ ├── AnalyzerReleases.Unshipped.md
│ ├── AnalyzerReleases.Shipped.md
│ └── Extensions
│ │ └── AccessibilityExtensions.cs
├── Mobile.BuildTools.Configuration.MSBuild
│ ├── Configuration
│ │ └── MetaData.cs
│ └── Models
│ │ └── Configuration
│ │ └── ExpectedAppConfigExtensions.cs
├── Mobile.BuildTools.Core
│ └── ReadMe.md
├── Mobile.BuildTools.Images
│ ├── Drawing
│ │ ├── FloatExtensions.cs
│ │ └── SKBitmapExtensions.cs
│ ├── Windows.targets
│ ├── ReadMe.md
│ ├── Android.targets
│ └── Apple.targets
└── Mobile.BuildTools.AppManifests
│ └── ReadMe.md
├── samples
├── Directory.Build.props
├── BuildToolsSample
│ ├── images
│ │ ├── banner.png
│ │ ├── ios
│ │ │ ├── icon.png
│ │ │ └── icon.json
│ │ ├── android
│ │ │ ├── icon.png
│ │ │ └── icon.json
│ │ ├── banner.json
│ │ └── ProjectImages.csproj
│ ├── src
│ │ ├── core
│ │ │ └── BuildToolsSample
│ │ │ │ ├── Properties
│ │ │ │ └── AssemblyInfo.cs
│ │ │ │ ├── Theme
│ │ │ │ ├── _colors.scss
│ │ │ │ └── style.scss
│ │ │ │ ├── Views
│ │ │ │ ├── DocsPage.xaml.cs
│ │ │ │ ├── HomePage.xaml.cs
│ │ │ │ ├── MainPage.xaml.cs
│ │ │ │ └── AppConfigPage.xaml.cs
│ │ │ │ ├── BuildToolsSample.csproj
│ │ │ │ └── App.xaml
│ │ └── platform
│ │ │ ├── BuildToolsSample.iOS
│ │ │ ├── Resources
│ │ │ │ └── Media.xcassets
│ │ │ │ │ └── Contents.json
│ │ │ ├── Entitlements.plist
│ │ │ └── Main.cs
│ │ │ ├── BuildToolsSample.UWP
│ │ │ ├── App.xaml
│ │ │ ├── MainPage.xaml
│ │ │ ├── Properties
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── MainPage.xaml.cs
│ │ │ └── BuildToolsSample.Android
│ │ │ ├── Resources
│ │ │ ├── mipmap-anydpi-v26
│ │ │ │ ├── icon.xml
│ │ │ │ └── icon_round.xml
│ │ │ ├── values
│ │ │ │ └── colors.xml
│ │ │ ├── drawable
│ │ │ │ └── splash_screen.xml
│ │ │ └── layout
│ │ │ │ ├── Toolbar.xml
│ │ │ │ └── Tabbar.xml
│ │ │ ├── Properties
│ │ │ └── AndroidManifest.xml
│ │ │ ├── MainApplication.cs
│ │ │ ├── MainActivity.cs
│ │ │ └── SplashActivity.cs
│ ├── Directory.Build.targets
│ └── secrets.json
└── AppConfigSample
│ └── src
│ ├── AppConfigSample.iOS
│ ├── Resources
│ │ ├── Media.xcassets
│ │ │ ├── Contents.json
│ │ │ └── PrismLogo.imageset
│ │ │ │ ├── prism@1x.png
│ │ │ │ ├── prism@2x.png
│ │ │ │ └── prism@3x.png
│ │ ├── app.foo.config
│ │ ├── app.config
│ │ ├── app.debug.config
│ │ └── app.release.config
│ ├── Assets.xcassets
│ │ └── AppIcon.appiconset
│ │ │ ├── Icon1024.png
│ │ │ ├── Icon120.png
│ │ │ ├── Icon152.png
│ │ │ ├── Icon167.png
│ │ │ ├── Icon180.png
│ │ │ ├── Icon20.png
│ │ │ ├── Icon29.png
│ │ │ ├── Icon40.png
│ │ │ ├── Icon58.png
│ │ │ ├── Icon60.png
│ │ │ ├── Icon76.png
│ │ │ ├── Icon80.png
│ │ │ └── Icon87.png
│ ├── Entitlements.plist
│ └── Main.cs
│ ├── AppConfigSample
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── Views
│ │ └── TabA.xaml.cs
│ └── AppConfigSample.csproj
│ ├── AppConfigSample.UWP
│ ├── Assets
│ │ ├── StoreLogo.backup.png
│ │ ├── LargeTile.scale-100.png
│ │ ├── LargeTile.scale-200.png
│ │ ├── LargeTile.scale-400.png
│ │ ├── SmallTile.scale-100.png
│ │ ├── SmallTile.scale-200.png
│ │ ├── SmallTile.scale-400.png
│ │ ├── StoreLogo.scale-100.png
│ │ ├── StoreLogo.scale-200.png
│ │ ├── StoreLogo.scale-400.png
│ │ ├── SplashScreen.scale-100.png
│ │ ├── SplashScreen.scale-200.png
│ │ ├── SplashScreen.scale-400.png
│ │ ├── Square44x44Logo.scale-100.png
│ │ ├── Square44x44Logo.scale-200.png
│ │ ├── Square44x44Logo.scale-400.png
│ │ ├── Wide310x150Logo.scale-100.png
│ │ ├── Wide310x150Logo.scale-200.png
│ │ ├── Wide310x150Logo.scale-400.png
│ │ ├── Square150x150Logo.scale-100.png
│ │ ├── Square150x150Logo.scale-200.png
│ │ ├── Square150x150Logo.scale-400.png
│ │ ├── Square44x44Logo.targetsize-16.png
│ │ ├── Square44x44Logo.targetsize-256.png
│ │ ├── Square44x44Logo.targetsize-48.png
│ │ ├── Square44x44Logo.altform-unplated_targetsize-16.png
│ │ ├── Square44x44Logo.altform-unplated_targetsize-48.png
│ │ ├── Square44x44Logo.altform-unplated_targetsize-256.png
│ │ ├── app.foo.config
│ │ ├── app.debug.config
│ │ ├── app.release.config
│ │ └── app.config
│ ├── App.xaml
│ ├── MainPage.xaml
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ └── MainPage.xaml.cs
│ └── AppConfigSample.Android
│ ├── Resources
│ ├── mipmap-hdpi
│ │ ├── icon.png
│ │ └── launcher_foreground.png
│ ├── mipmap-mdpi
│ │ ├── icon.png
│ │ └── launcher_foreground.png
│ ├── drawable-hdpi
│ │ └── icon.png
│ ├── drawable-mdpi
│ │ └── icon.png
│ ├── drawable-xhdpi
│ │ └── icon.png
│ ├── mipmap-xhdpi
│ │ ├── icon.png
│ │ └── launcher_foreground.png
│ ├── mipmap-xxhdpi
│ │ ├── icon.png
│ │ └── launcher_foreground.png
│ ├── mipmap-xxxhdpi
│ │ ├── icon.png
│ │ └── launcher_foreground.png
│ ├── drawable-xxhdpi
│ │ └── icon.png
│ ├── drawable-xxxhdpi
│ │ └── icon.png
│ ├── mipmap-anydpi-v26
│ │ ├── icon.xml
│ │ └── icon_round.xml
│ ├── values
│ │ └── colors.xml
│ ├── drawable
│ │ └── splash_screen.xml
│ └── layout
│ │ ├── Toolbar.xml
│ │ └── Tabbar.xml
│ ├── Assets
│ ├── app.debug.config
│ ├── app.foo.config
│ ├── app.config
│ ├── app.release.config
│ └── AboutAssets.txt
│ ├── Properties
│ └── AndroidManifest.xml
│ ├── MainApplication.cs
│ ├── SplashActivity.cs
│ └── MainActivity.cs
├── Update-Schemas.ps1
├── global.json
├── Generate-Schema.ps1
├── .gitignore
├── .gitmodules
├── theme
└── partials
│ ├── logo.html
│ └── footer.html
├── version.json
├── tools
└── Mobile.BuildTools.SchemaGenerator
│ └── Mobile.BuildTools.SchemaGenerator.csproj
├── Clean-Outputs.ps1
└── .vsconfig
/docs/.nojekyll:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/docs/CNAME:
--------------------------------------------------------------------------------
1 | mobilebuildtools.com
--------------------------------------------------------------------------------
/E2E/E2EApp/.gitignore:
--------------------------------------------------------------------------------
1 | manifest.json
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | github: dansiegel
2 |
--------------------------------------------------------------------------------
/E2E/E2E.Core/theme/_colors.scss:
--------------------------------------------------------------------------------
1 | $primary: #006;
--------------------------------------------------------------------------------
/assets/ignore.json:
--------------------------------------------------------------------------------
1 | {
2 | "ignore": true
3 | }
--------------------------------------------------------------------------------
/E2E/.gitignore:
--------------------------------------------------------------------------------
1 | ReleaseNotes.txt
2 |
3 | secrets.json
--------------------------------------------------------------------------------
/xunit.runner.json:
--------------------------------------------------------------------------------
1 | {
2 | "maxParallelThreads": 1
3 | }
4 |
--------------------------------------------------------------------------------
/.github/workflows/requirements.txt:
--------------------------------------------------------------------------------
1 | mkdocs>=1.0.4
2 | mkdocs-material>=4.5.0
--------------------------------------------------------------------------------
/key.snk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/key.snk
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Sass/_colors.sass:
--------------------------------------------------------------------------------
1 | $primary-color: #333
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Scss/_colors.scss:
--------------------------------------------------------------------------------
1 | $primary-color: #333;
2 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/byte.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "5"
3 | }
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/char.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "c"
3 | }
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/int.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "5"
3 | }
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/long.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "5"
3 | }
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/sbyte.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "4"
3 | }
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/uint.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "5"
3 | }
--------------------------------------------------------------------------------
/E2E/E2E.Core/theme/anotherStyle.scss:
--------------------------------------------------------------------------------
1 | contentpage:any {
2 | padding: 0, 20, 0, 0
3 | }
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/bool.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "true"
3 | }
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/decimal.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "1.2"
3 | }
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/double.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "2.5"
3 | }
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/float.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "4.5"
3 | }
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/short.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "200"
3 | }
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/ushort.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "200"
3 | }
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp/Theme/anotherStyle.scss:
--------------------------------------------------------------------------------
1 | contentpage:any {
2 | padding: 0, 20, 0, 0
3 | }
--------------------------------------------------------------------------------
/logo/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/logo/icon.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Sass/_fonts.sass:
--------------------------------------------------------------------------------
1 | $font-stack: Helvetica, sans-serif
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/byteArray.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "4;5;6"
3 | }
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/charArray.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "a;b;c"
3 | }
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/intArray.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "5;6;7"
3 | }
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/longArray.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "5;6;7"
3 | }
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/sbyteArray.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "4;5;6"
3 | }
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/timespan.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "02:00"
3 | }
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/uintArray.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "4;5;6"
3 | }
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/ulong.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "1000000000"
3 | }
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Scss/_fonts.scss:
--------------------------------------------------------------------------------
1 | $font-stack: Helvetica, sans-serif;
2 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/string.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "Hello World"
3 | }
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Debug/example.json:
--------------------------------------------------------------------------------
1 | {
2 | "ignore": true
3 | }
4 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/boolArray.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "true;false;true"
3 | }
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/datetime.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "7/4/1776 08:00"
3 | }
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/decimalArray.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "1.2;2.3M;3.4"
3 | }
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/doubleArray.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "1.2;2.3;3.4"
3 | }
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/floatArray.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "1.2;2.3;3.4F"
3 | }
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/shortArray.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "200;-300;400"
3 | }
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/ushortArray.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "200;300;400"
3 | }
--------------------------------------------------------------------------------
/Package.Transitive.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Css/style.min.css:
--------------------------------------------------------------------------------
1 | body{font:100% Helvetica,sans-serif;color:#333}
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/datetimeoffset.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "7/4/1776 08:00 -5"
3 | }
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/stringArray.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "Mobile;Build;Tools"
3 | }
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/uri.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "https://mobilebuildtools.com"
3 | }
--------------------------------------------------------------------------------
/E2E/E2EApp/NuGet.config:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/E2E/E2EApp/NuGet.config
--------------------------------------------------------------------------------
/Package.Transitive.targets:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/docs/assets/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/docs/assets/favicon.ico
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/CompiledAndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/timespanArray.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "02:00;00:30;00:45:30"
3 | }
--------------------------------------------------------------------------------
/E2E/E2EApp/Directory.Build.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/docs/assets/samples/top.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/docs/assets/samples/top.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/guid.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "2b2716a7-bf62-48a3-be37-5c3ca1d5a195"
3 | }
--------------------------------------------------------------------------------
/docs/assets/samples/bottom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/docs/assets/samples/bottom.png
--------------------------------------------------------------------------------
/docs/assets/samples/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/docs/assets/samples/icon.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/ulongArray.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "1000000000;2000000000;3000000000"
3 | }
--------------------------------------------------------------------------------
/docs/assets/samples/example.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/docs/assets/samples/example.png
--------------------------------------------------------------------------------
/docs/assets/samples/topleft.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/docs/assets/samples/topleft.png
--------------------------------------------------------------------------------
/docs/assets/samples/topright.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/docs/assets/samples/topright.png
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.AzurePipelines/tasks/ResigniOS/task.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # exit if a command fails
4 | set -e
5 |
6 |
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp/Theme/_colors.scss:
--------------------------------------------------------------------------------
1 | $primary: #FF5722;
2 | $primaryDark: #E64A19;
3 | $accent: #9E9E9E;
4 | $textColor: #FFFFFF;
--------------------------------------------------------------------------------
/E2E/E2EApp/Images/Shared/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/E2E/E2EApp/Images/Shared/icon.png
--------------------------------------------------------------------------------
/E2E/E2EApp/Images/Shared/monkey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/E2E/E2EApp/Images/Shared/monkey.png
--------------------------------------------------------------------------------
/E2E/E2EApp/Images/iOS/platform.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/E2E/E2EApp/Images/iOS/platform.jpg
--------------------------------------------------------------------------------
/docs/assets/samples/bottomleft.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/docs/assets/samples/bottomleft.png
--------------------------------------------------------------------------------
/docs/assets/samples/bottomright.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/docs/assets/samples/bottomright.png
--------------------------------------------------------------------------------
/docs/assets/samples/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/docs/assets/samples/dotnetbot.png
--------------------------------------------------------------------------------
/docs/assets/samples/icon-beta.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/docs/assets/samples/icon-beta.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Css/style2.min.css:
--------------------------------------------------------------------------------
1 | ^contentpage{background-color:#333;padding:20px}^button{border-radius:10px}
--------------------------------------------------------------------------------
/docs/assets/samples/beta-version.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/docs/assets/samples/beta-version.png
--------------------------------------------------------------------------------
/docs/assets/samples/icon-example.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/docs/assets/samples/icon-example.png
--------------------------------------------------------------------------------
/samples/Directory.Build.props:
--------------------------------------------------------------------------------
1 |
2 |
3 | false
4 |
5 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/datetimeArray.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "7/4/1776 08:00;4/9/1865 08:00;9/2/1945 15:00"
3 | }
--------------------------------------------------------------------------------
/E2E/E2EApp/Images/Android/launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/E2E/E2EApp/Images/Android/launcher.png
--------------------------------------------------------------------------------
/E2E/E2EApp/Images/Android/platform.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/E2E/E2EApp/Images/Android/platform.png
--------------------------------------------------------------------------------
/E2E/E2EApp/Images/Beta/beta-version.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/E2E/E2EApp/Images/Beta/beta-version.png
--------------------------------------------------------------------------------
/E2E/E2EApp/Images/Shared/monkey.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://mobilebuildtools.com/schemas/v2/resourceDefinition.schema.json"
3 | }
4 |
--------------------------------------------------------------------------------
/E2E/E2EApp/Images/iOS/platform.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://mobilebuildtools.com/schemas/v2/resourceDefinition.schema.json",
3 | }
4 |
--------------------------------------------------------------------------------
/docs/assets/samples/dotnetbot-beta.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/docs/assets/samples/dotnetbot-beta.png
--------------------------------------------------------------------------------
/src/assets/runtimes/win-x64/libsass.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/src/assets/runtimes/win-x64/libsass.dll
--------------------------------------------------------------------------------
/src/assets/runtimes/win-x86/libsass.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/src/assets/runtimes/win-x86/libsass.dll
--------------------------------------------------------------------------------
/E2E/E2EApp/Images/Android/platform.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://mobilebuildtools.com/schemas/v2/resourceDefinition.schema.json",
3 | }
4 |
--------------------------------------------------------------------------------
/docs/assets/samples/dotnetbot-example.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/docs/assets/samples/dotnetbot-example.png
--------------------------------------------------------------------------------
/samples/BuildToolsSample/images/banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/BuildToolsSample/images/banner.png
--------------------------------------------------------------------------------
/src/assets/runtimes/osx-x64/libsass.dylib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/src/assets/runtimes/osx-x64/libsass.dylib
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.iOS/Resources/Default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/E2E/E2EApp/E2EApp.iOS/Resources/Default.png
--------------------------------------------------------------------------------
/samples/BuildToolsSample/images/ios/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/BuildToolsSample/images/ios/icon.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/datetimeoffsetArray.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "7/4/1776 08:00 -5;4/9/1865 08:00 -5;9/2/1945 13:00 -5"
3 | }
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.iOS/Resources/Default@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/E2E/E2EApp/E2EApp.iOS/Resources/Default@2x.png
--------------------------------------------------------------------------------
/E2E/E2EApp/Images/Beta/beta-version.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://mobilebuildtools.com/schemas/v2/resourceDefinition.schema.json",
3 | "ignore": true
4 | }
--------------------------------------------------------------------------------
/samples/BuildToolsSample/images/android/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/BuildToolsSample/images/android/icon.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Sass/style.sass:
--------------------------------------------------------------------------------
1 | @import 'colors'
2 | @import 'fonts'
3 |
4 | body
5 | font: 100% $font-stack
6 | color: $primary-color
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/uriArray.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "https://dansiegel.net;https://avantipoint.com;https://mobilebuildtools.com"
3 | }
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.iOS/Resources/Default-568h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/E2E/E2EApp/E2EApp.iOS/Resources/Default-568h@2x.png
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.iOS/Resources/Default-Portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/E2E/E2EApp/E2EApp.iOS/Resources/Default-Portrait.png
--------------------------------------------------------------------------------
/Update-Schemas.ps1:
--------------------------------------------------------------------------------
1 | dotnet run --project .\tools\Mobile.BuildTools.SchemaGenerator\Mobile.BuildTools.SchemaGenerator.csproj -- --output-directory .\docs\schemas\v2
2 |
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.iOS/Resources/Media.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using Xamarin.Forms.Xaml;
2 |
3 | [assembly: XamlCompilation(XamlCompilationOptions.Compile)]
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Apple/Resources/Media.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.iOS/Resources/Default-Portrait@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/E2E/E2EApp/E2EApp.iOS/Resources/Default-Portrait@2x.png
--------------------------------------------------------------------------------
/samples/BuildToolsSample/src/core/BuildToolsSample/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using Xamarin.Forms.Xaml;
2 |
3 | [assembly: XamlCompilation(XamlCompilationOptions.Compile)]
--------------------------------------------------------------------------------
/samples/BuildToolsSample/src/core/BuildToolsSample/Theme/_colors.scss:
--------------------------------------------------------------------------------
1 | $primary: #FF5722;
2 | $primaryDark: #E64A19;
3 | $accent: #9E9E9E;
4 | $textColor: #FFFFFF;
5 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Reference/Models/ArtifactCopy.cs:
--------------------------------------------------------------------------------
1 | namespace Mobile.BuildTools.Models
2 | {
3 | public class ArtifactCopy : ToolItem
4 | {
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools/buildTransitive/Mobile.BuildTools.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Scss/style.scss:
--------------------------------------------------------------------------------
1 | @import 'colors';
2 | @import 'fonts';
3 |
4 | body {
5 | font: 100% $font-stack;
6 | color: $primary-color;
7 | }
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/buildtools.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://mobilebuildtools.com/schemas/v2/buildtools.schema.json",
3 | "debug": true
4 | }
5 |
--------------------------------------------------------------------------------
/E2E/E2E.Core/theme/style.scss:
--------------------------------------------------------------------------------
1 | @import "colors";
2 |
3 | .primaryButton {
4 | background-color: $primary
5 | }
6 |
7 | button:any {
8 | background-color: transparent
9 | }
--------------------------------------------------------------------------------
/samples/BuildToolsSample/src/platform/BuildToolsSample.iOS/Resources/Media.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Configuration/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.CompilerServices;
2 |
3 | [assembly: InternalsVisibleTo("Mobile.BuildTools.Configuration.Tests")]
--------------------------------------------------------------------------------
/src/Mobile.BuildTools/buildTransitive/Mobile.BuildTools.targets:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/dotnetbot.png
--------------------------------------------------------------------------------
/samples/BuildToolsSample/images/ios/icon.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://mobilebuildtools.com/schemas/v2/resourceDefinition.schema.json",
3 | "name": "AppIcon",
4 | "scale": 1.0
5 | }
6 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/CompiledGenericManifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "TemplatedParameter": "$$TemplatedParameter$$",
3 | "CustomTokenParameter": "%%CustomTokenParameter%%"
4 | }
5 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Debug/example.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Debug/example.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/MockManifestTemplate.json:
--------------------------------------------------------------------------------
1 | {
2 | "TemplatedParameter": "$TemplatedParameter$",
3 | "CustomTokenParameter": "%%CustomTokenParameter%%"
4 | }
5 |
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/E2E/E2EApp/E2EApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon20.png
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/E2E/E2EApp/E2EApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon29.png
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/E2E/E2EApp/E2EApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon40.png
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon58.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/E2E/E2EApp/E2EApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon58.png
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/E2E/E2EApp/E2EApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon60.png
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/E2E/E2EApp/E2EApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon76.png
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/E2E/E2EApp/E2EApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon80.png
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon87.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/E2E/E2EApp/E2EApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon87.png
--------------------------------------------------------------------------------
/samples/BuildToolsSample/images/banner.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://mobilebuildtools.com/schemas/v2/resourceDefinition.schema.json",
3 | "name": "BuildToolsLogo",
4 | "scale": 1.0
5 | }
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Watermarks/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Watermarks/icon.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Secrets/guidArray.json:
--------------------------------------------------------------------------------
1 | {
2 | "Prop": "88261b3c-394d-410e-8d7d-0449583370b6;DB4E95B5-2717-47C6-A0A1-CA7B68B54253;399A1B9D-8FD6-43FD-A263-EBC862CFF590"
3 | }
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/E2E/E2EApp/E2EApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon1024.png
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/E2E/E2EApp/E2EApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon120.png
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/E2E/E2EApp/E2EApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon152.png
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon167.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/E2E/E2EApp/E2EApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon167.png
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/E2E/E2EApp/E2EApp.iOS/Assets.xcassets/AppIcon.appiconset/Icon180.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/MonoAndroid/appicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/MonoAndroid/appicon.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Watermarks/example.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Watermarks/example.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Xamarin.iOS/ios-icon.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://mobilebuildtools.com/schemas/v2/resourceDefinition.schema.json",
3 | "name": "AppIcon"
4 | }
5 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/programmer-clipart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/programmer-clipart.png
--------------------------------------------------------------------------------
/global.json:
--------------------------------------------------------------------------------
1 | {
2 | "sdk": {
3 | "allowPrerelease": false
4 | },
5 | "msbuild-sdks": {
6 | "MSBuild.Sdk.Extras": "3.0.44",
7 | "Microsoft.Build.NoTargets": "3.5.6"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Watermarks/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Watermarks/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Xamarin.iOS/ios-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Xamarin.iOS/ios-icon.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/StoreLogo.backup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/StoreLogo.backup.png
--------------------------------------------------------------------------------
/samples/BuildToolsSample/images/ProjectImages.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net46
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.AzurePipelines/tasks/SwapAppAssets/task.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "",
3 | "name": "swap-app-assets",
4 | "friendlyName": "Swap App Assets",
5 | "description": "Unpacks an IPA or APK "
6 | }
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Watermarks/beta-version.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Watermarks/beta-version.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Serialization/css.test.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://mobilebuildtools.com/schemas/v2/buildtools.schema.json",
3 | "css": {
4 | "disable": false
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/LargeTile.scale-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/LargeTile.scale-100.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/LargeTile.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/LargeTile.scale-200.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/LargeTile.scale-400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/LargeTile.scale-400.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/SmallTile.scale-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/SmallTile.scale-100.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/SmallTile.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/SmallTile.scale-200.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/SmallTile.scale-400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/SmallTile.scale-400.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/StoreLogo.scale-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/StoreLogo.scale-100.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/StoreLogo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/StoreLogo.scale-200.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/StoreLogo.scale-400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/StoreLogo.scale-400.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.Android/Resources/mipmap-hdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.Android/Resources/mipmap-hdpi/icon.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.Android/Resources/mipmap-mdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.Android/Resources/mipmap-mdpi/icon.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/SplashScreen.scale-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/SplashScreen.scale-100.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/SplashScreen.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/SplashScreen.scale-200.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/SplashScreen.scale-400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/SplashScreen.scale-400.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Serialization/artifactcopy.test.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://mobilebuildtools.com/schemas/v2/buildtools.schema.json",
3 | "artifactCopy": {
4 | "disable": true
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/E2E/E2E.Core/E2E.Core.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 | false
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.Android/Resources/drawable-hdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.Android/Resources/drawable-hdpi/icon.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.Android/Resources/drawable-mdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.Android/Resources/drawable-mdpi/icon.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.Android/Resources/drawable-xhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.Android/Resources/drawable-xhdpi/icon.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.Android/Resources/mipmap-xhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.Android/Resources/mipmap-xhdpi/icon.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.Android/Resources/mipmap-xxhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.Android/Resources/mipmap-xxhdpi/icon.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.Android/Resources/mipmap-xxxhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.Android/Resources/mipmap-xxxhdpi/icon.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/Square44x44Logo.scale-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/Square44x44Logo.scale-100.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/Square44x44Logo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/Square44x44Logo.scale-200.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/Square44x44Logo.scale-400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/Square44x44Logo.scale-400.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/Wide310x150Logo.scale-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/Wide310x150Logo.scale-100.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/Wide310x150Logo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/Wide310x150Logo.scale-200.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/Wide310x150Logo.scale-400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/Wide310x150Logo.scale-400.png
--------------------------------------------------------------------------------
/samples/BuildToolsSample/Directory.Build.targets:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Serialization/appconfig.test.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://mobilebuildtools.com/schemas/v2/buildtools.schema.json",
3 | "appConfig": {
4 | "strategy": "BundleAll"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.Android/Resources/drawable-xxhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.Android/Resources/drawable-xxhdpi/icon.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.Android/Resources/drawable-xxxhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.Android/Resources/drawable-xxxhdpi/icon.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/Square150x150Logo.scale-100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/Square150x150Logo.scale-100.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/Square150x150Logo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/Square150x150Logo.scale-200.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/Square150x150Logo.scale-400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/Square150x150Logo.scale-400.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/Square44x44Logo.targetsize-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/Square44x44Logo.targetsize-16.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/Square44x44Logo.targetsize-256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/Square44x44Logo.targetsize-256.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/Square44x44Logo.targetsize-48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/Square44x44Logo.targetsize-48.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Scss/style2.scss:
--------------------------------------------------------------------------------
1 | @import 'colors';
2 |
3 | contentpage:any {
4 | background-color: $primary-color;
5 | padding: 20px
6 | }
7 |
8 | button:all {
9 | border-radius: 10px
10 | }
11 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.AppSettings/AnalyzerReleases.Unshipped.md:
--------------------------------------------------------------------------------
1 | ; Unshipped analyzer release
2 | ; https://github.com/dotnet/roslyn-analyzers/blob/main/src/Microsoft.CodeAnalysis.Analyzers/ReleaseTrackingAnalyzers.Help.md
3 |
4 | ### New Rules
5 |
--------------------------------------------------------------------------------
/Generate-Schema.ps1:
--------------------------------------------------------------------------------
1 | $currentDir = Get-Location
2 | dotnet publish ./tools/Mobile.BuildTools.SchemaGenerator/Mobile.BuildTools.SchemaGenerator.csproj -o Artifacts/SchemaTool
3 | ./Artifacts/SchemaTool/Mobile.BuildTools.SchemaGenerator $currentDir.Path
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.iOS/Assets.xcassets/AppIcon.appiconset/Icon1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.iOS/Assets.xcassets/AppIcon.appiconset/Icon1024.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.iOS/Assets.xcassets/AppIcon.appiconset/Icon120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.iOS/Assets.xcassets/AppIcon.appiconset/Icon120.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.iOS/Assets.xcassets/AppIcon.appiconset/Icon152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.iOS/Assets.xcassets/AppIcon.appiconset/Icon152.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.iOS/Assets.xcassets/AppIcon.appiconset/Icon167.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.iOS/Assets.xcassets/AppIcon.appiconset/Icon167.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.iOS/Assets.xcassets/AppIcon.appiconset/Icon180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.iOS/Assets.xcassets/AppIcon.appiconset/Icon180.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.iOS/Assets.xcassets/AppIcon.appiconset/Icon20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.iOS/Assets.xcassets/AppIcon.appiconset/Icon20.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.iOS/Assets.xcassets/AppIcon.appiconset/Icon29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.iOS/Assets.xcassets/AppIcon.appiconset/Icon29.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.iOS/Assets.xcassets/AppIcon.appiconset/Icon40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.iOS/Assets.xcassets/AppIcon.appiconset/Icon40.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.iOS/Assets.xcassets/AppIcon.appiconset/Icon58.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.iOS/Assets.xcassets/AppIcon.appiconset/Icon58.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.iOS/Assets.xcassets/AppIcon.appiconset/Icon60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.iOS/Assets.xcassets/AppIcon.appiconset/Icon60.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.iOS/Assets.xcassets/AppIcon.appiconset/Icon76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.iOS/Assets.xcassets/AppIcon.appiconset/Icon76.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.iOS/Assets.xcassets/AppIcon.appiconset/Icon80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.iOS/Assets.xcassets/AppIcon.appiconset/Icon80.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.iOS/Assets.xcassets/AppIcon.appiconset/Icon87.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.iOS/Assets.xcassets/AppIcon.appiconset/Icon87.png
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.iOS/Entitlements.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.Android/Resources/mipmap-hdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.Android/Resources/mipmap-hdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.Android/Resources/mipmap-mdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.Android/Resources/mipmap-mdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/MonoAndroid/appicon.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://mobilebuildtools.com/schemas/v2/resourceDefinition.schema.json",
3 | "name": "icon",
4 | "android": {
5 | "resourceType": "Mipmap"
6 | }
7 | }
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Serialization/google.test.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://mobilebuildtools.com/schemas/v2/buildtools.schema.json",
3 | "google": {
4 | "servicesJson": "FooBar1",
5 | "infoPlist": "FooBar2"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.Android/Resources/mipmap-xhdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.Android/Resources/mipmap-xhdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.Android/Resources/mipmap-xxhdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.Android/Resources/mipmap-xxhdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.Android/Resources/mipmap-xxxhdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.Android/Resources/mipmap-xxxhdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Debug/ios-icon.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://mobilebuildtools.com/schemas/v2/resourceDefinition.schema.json",
3 | "name": "AppIcon",
4 | "watermark": {
5 | "sourceFile": "example"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-16.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-48.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.iOS/Resources/Media.xcassets/PrismLogo.imageset/prism@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.iOS/Resources/Media.xcassets/PrismLogo.imageset/prism@1x.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.iOS/Resources/Media.xcassets/PrismLogo.imageset/prism@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.iOS/Resources/Media.xcassets/PrismLogo.imageset/prism@2x.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.iOS/Resources/Media.xcassets/PrismLogo.imageset/prism@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.iOS/Resources/Media.xcassets/PrismLogo.imageset/prism@3x.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-256.png
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Configuration.MSBuild/Configuration/MetaData.cs:
--------------------------------------------------------------------------------
1 | namespace Mobile.BuildTools.Configuration;
2 |
3 | internal static class MetaData
4 | {
5 | public const string Link = nameof(Link);
6 | public const string SourceFile = nameof(SourceFile);
7 | }
8 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Configuration/Xdt/IXmlOriginalDocumentService.cs:
--------------------------------------------------------------------------------
1 | using System.Xml;
2 |
3 | namespace Microsoft.Web.XmlTransform;
4 |
5 | internal interface IXmlOriginalDocumentService
6 | {
7 | XmlNodeList SelectNodes(string path, XmlNamespaceManager nsmgr);
8 | }
9 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Core/ReadMe.md:
--------------------------------------------------------------------------------
1 | # Mobile.BuildTools.Core
2 |
3 | The Mobile.BuildTools.Core provides the Core MSBuild Targets used by the Mobile.BuildTools. This project is not intended to be used directly, but rather as a dependency for other Mobile.BuildTools Packages.
4 |
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.iOS/Entitlements.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/samples/BuildToolsSample/src/core/BuildToolsSample/Views/DocsPage.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace BuildToolsSample.Views
2 | {
3 | public partial class DocsPage
4 | {
5 | public DocsPage()
6 | {
7 | InitializeComponent();
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/samples/BuildToolsSample/src/core/BuildToolsSample/Views/HomePage.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace BuildToolsSample.Views
2 | {
3 | public partial class HomePage
4 | {
5 | public HomePage()
6 | {
7 | InitializeComponent();
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/E2E/E2EApp/Images/Shared/icon.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://mobilebuildtools.com/schemas/v2/resourceDefinition.schema.json",
3 | "apple": {
4 | "name": "AppIcon"
5 | },
6 | "android": {
7 | "resourceType": "Mipmap",
8 | "scale": 0.375
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/samples/BuildToolsSample/src/core/BuildToolsSample/Views/MainPage.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace BuildToolsSample.Views
2 | {
3 | public partial class MainPage
4 | {
5 | public MainPage()
6 | {
7 | InitializeComponent();
8 | }
9 | }
10 | }
--------------------------------------------------------------------------------
/samples/BuildToolsSample/src/platform/BuildToolsSample.iOS/Entitlements.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | bin
2 | obj
3 |
4 | .vs
5 | .vscode
6 | .mfractor
7 | *.userprefs
8 | *.binlog
9 | *.user
10 |
11 |
12 | Artifacts/
13 | Sample/
14 | packages/
15 | binaries/
16 | site/
17 | TestResults/
18 |
19 | .DS_Store
20 | Thumbs.db
21 |
22 | **/Images/**/Thumbs.db
23 |
24 | AppPackages/
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "external/Xamarin.MacDev"]
2 | path = external/Xamarin.MacDev
3 | url = https://github.com/xamarin/Xamarin.MacDev.git
4 | [submodule "external/xamarin-android-tools"]
5 | path = external/xamarin-android-tools
6 | url = https://github.com/xamarin/xamarin-android-tools.git
7 |
--------------------------------------------------------------------------------
/samples/BuildToolsSample/src/core/BuildToolsSample/Views/AppConfigPage.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace BuildToolsSample.Views
2 | {
3 | public partial class AppConfigPage
4 | {
5 | public AppConfigPage()
6 | {
7 | InitializeComponent();
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Reference/Models/Configuration/ExpectedAppConfig.cs:
--------------------------------------------------------------------------------
1 | namespace Mobile.BuildTools.Models.Configuration
2 | {
3 | public class ExpectedAppConfig
4 | {
5 | public string OutputPath { get; set; }
6 | public string SourceFile { get; set; }
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/E2E/E2E.Core/CommonLib.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace E2E.Core
4 | {
5 | public static class CommonLib
6 | {
7 | public static IEnumerable GetManifestResourceNames() =>
8 | typeof(CommonLib).Assembly.GetManifestResourceNames();
9 | }
10 | }
--------------------------------------------------------------------------------
/E2E/E2EApp/Images/Android/launcher.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://mobilebuildtools.com/schemas/v2/resourceDefinition.schema.json",
3 | "android": {
4 | "resourceType": "Mipmap",
5 | "name": "launcher_foreground"
6 | },
7 | "watermark": {
8 | "sourceFile": "beta-version"
9 | }
10 | }
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Reference/Handlers/FloatValueHandler.cs:
--------------------------------------------------------------------------------
1 | namespace Mobile.BuildTools.Handlers
2 | {
3 | internal sealed class FloatValueHandler : NumericValueHandler
4 | {
5 | public FloatValueHandler()
6 | : base('F')
7 | {
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/SetsCustomBackground/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/SetsCustomBackground/dotnetbot.png
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Reference/Handlers/DecimalValueHandler.cs:
--------------------------------------------------------------------------------
1 | namespace Mobile.BuildTools.Handlers
2 | {
3 | internal sealed class DecimalValueHandler : NumericValueHandler
4 | {
5 | public DecimalValueHandler()
6 | : base('M')
7 | {
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/SetsDefaultBackground/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/SetsDefaultBackground/dotnetbot.png
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Reference/Utils/Platform.cs:
--------------------------------------------------------------------------------
1 | namespace Mobile.BuildTools.Utils
2 | {
3 | public enum Platform
4 | {
5 | iOS,
6 | Android,
7 | UWP,
8 | Windows,
9 | macOS,
10 | Tizen,
11 | TVOS,
12 | Unsupported
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Debug/appicon.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://mobilebuildtools.com/schemas/v2/resourceDefinition.schema.json",
3 | "name": "icon",
4 | "android": {
5 | "resourceType": "Mipmap"
6 | },
7 | "watermark": {
8 | "sourceFile": "example"
9 | }
10 | }
--------------------------------------------------------------------------------
/E2E/E2EApp/Images/Beta/icon.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://mobilebuildtools.com/schemas/v2/resourceDefinition.schema.json",
3 | "apple": {
4 | "name": "AppIcon"
5 | },
6 | "android": {
7 | "resourceType": "Mipmap",
8 | "scale": 0.375
9 | },
10 | "watermark": {
11 | "text": "E2E"
12 | }
13 | }
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.Android/Resources/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFFFFF
4 | #3F51B5
5 | #303F9F
6 | #FF4081
7 |
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp/Theme/style.scss:
--------------------------------------------------------------------------------
1 | @import "colors";
2 |
3 | .primaryButton {
4 | background-color: $primary
5 | }
6 |
7 | button:any {
8 | background-color: $accent;
9 | color: $textColor;
10 | }
11 |
12 | tabbedpage {
13 | -xf-bar-background-color: $primaryDark;
14 | -xf-bar-text-color: $textColor
15 | }
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp/sample.json:
--------------------------------------------------------------------------------
1 | {
2 | // This is a sample of a secrets.json file that should be placed here.
3 | "SampleString": "SuperSecureSecret",
4 | "SampleBool": "true",
5 | "SampleInt": "1",
6 | "SampleDouble": "2.1",
7 | "SampleUri": "https://xamarindevelopersummit.com/wp-content/uploads/2019/04/Isotype.png"
8 | }
9 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Images/Drawing/FloatExtensions.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Mobile.BuildTools.Drawing
4 | {
5 | public static class FloatExtensions
6 | {
7 | public static bool IsEqualTo(this float value, float comparisonValue) => Math.Abs(value - comparisonValue) <= 0.0001;
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Reference/Models/Settings/Accessibility.cs:
--------------------------------------------------------------------------------
1 | using System.Text.Json.Serialization;
2 |
3 | namespace Mobile.BuildTools.Models.Settings
4 | {
5 | [JsonConverter(typeof(JsonStringEnumConverter))]
6 | public enum Accessibility
7 | {
8 | Internal,
9 | Public
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.Android/Resources/mipmap-anydpi-v26/icon.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.Android/Resources/mipmap-anydpi-v26/icon_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Reference/Handlers/UriValueHandler.cs:
--------------------------------------------------------------------------------
1 | namespace Mobile.BuildTools.Handlers
2 | {
3 | internal class UriValueHandler : DefaultValueHandler
4 | {
5 | public UriValueHandler()
6 | : base("new System.Uri(\"{0}\", System.UriKind.Absolute)")
7 | {
8 | }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Reference/Models/VersionEnvironment.cs:
--------------------------------------------------------------------------------
1 | using System.Text.Json.Serialization;
2 |
3 | namespace Mobile.BuildTools.Models
4 | {
5 | [JsonConverter(typeof(JsonStringEnumConverter))]
6 | public enum VersionEnvironment
7 | {
8 | All,
9 | BuildHost,
10 | Local
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/theme/partials/logo.html:
--------------------------------------------------------------------------------
1 |
2 | {% if config.theme.logo %}
3 |
4 | {% else %}
5 | {% set icon = config.theme.icon.logo or "material/library" %}
6 | {% include ".icons/" ~ icon ~ ".svg" %}
7 | {% endif %}
--------------------------------------------------------------------------------
/.github/workflows/publish-release.yml:
--------------------------------------------------------------------------------
1 | name: Publish Mobile.BuildTools Release
2 |
3 | on:
4 | release:
5 | types: [published]
6 |
7 | jobs:
8 | publish-release:
9 | uses: avantipoint/workflow-templates/.github/workflows/deploy-nuget-from-release.yml@master
10 | secrets:
11 | apiKey: ${{ secrets.NUGET_API_KEY }}
12 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Reference/Models/VersionBehavior.cs:
--------------------------------------------------------------------------------
1 | using System.Text.Json.Serialization;
2 |
3 | namespace Mobile.BuildTools.Models
4 | {
5 | [JsonConverter(typeof(JsonStringEnumConverter))]
6 | public enum VersionBehavior
7 | {
8 | Off,
9 | PreferBuildNumber,
10 | Timestamp
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/E2E/CI.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.UWP/App.xaml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.Android/app.foo.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.iOS/app.debug.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.iOS/app.foo.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.Android/app.debug.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.iOS/app.release.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp/App.xaml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.Android/Resources/mipmap-anydpi-v26/icon.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.Android/app.release.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.Android/Resources/mipmap-anydpi-v26/icon_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.Android/Resources/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFFFFF
4 | #7E7D81
5 | #5f5f61
6 | #00A5F2
7 |
8 |
--------------------------------------------------------------------------------
/samples/BuildToolsSample/src/platform/BuildToolsSample.UWP/App.xaml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.Android/Resources/drawable/splash_screen.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
7 |
8 |
--------------------------------------------------------------------------------
/samples/BuildToolsSample/secrets.json:
--------------------------------------------------------------------------------
1 | {
2 | "AppDisplayName": "Build Tools",
3 | "AppId": "com.dansiegel.mobilebuildtools",
4 | "Message": "Hello Mobile.BuildTools from secrets.json",
5 | "AppCenterId": "7c7d626e-2e35-47d1-9dbb-93324189b987",
6 | "Backend": "http://awesomebackend.azurewebsites.com",
7 | "ClientId": "8b3242c1-a254-4474-ae95-c7db8513b542"
8 | }
9 |
--------------------------------------------------------------------------------
/samples/BuildToolsSample/src/platform/BuildToolsSample.Android/Resources/mipmap-anydpi-v26/icon.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/samples/BuildToolsSample/src/platform/BuildToolsSample.Android/Resources/mipmap-anydpi-v26/icon_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/samples/BuildToolsSample/src/platform/BuildToolsSample.Android/Resources/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFFFFF
4 | #7E7D81
5 | #5f5f61
6 | #00A5F2
7 |
8 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Configuration/INameValueCollection.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace Mobile.BuildTools.Configuration
4 | {
5 | public interface INameValueCollection : IReadOnlyList>
6 | {
7 | string this[string key] { get; }
8 | IEnumerable AllKeys { get; }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Reference/Models/AppIcons/AppleIconSet.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Text.Json.Serialization;
3 |
4 | namespace Mobile.BuildTools.Models.AppIcons
5 | {
6 | public class AppleIconSet
7 | {
8 | [JsonPropertyName("images")]
9 | public List Images { get; set; }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Configuration.Tests/app.foo.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Configuration/EmptyDisposable.cs:
--------------------------------------------------------------------------------
1 | namespace Mobile.BuildTools.Configuration;
2 |
3 | internal sealed class EmptyDisposable : IDisposable
4 | {
5 | public static EmptyDisposable Instance { get; } = new EmptyDisposable();
6 |
7 | private EmptyDisposable()
8 | {
9 | }
10 |
11 | public void Dispose()
12 | {
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/square.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.iOS/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/app.foo.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools/Utils/MSBuildConfigHelper.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Build.Framework;
2 | using Mobile.BuildTools.Models;
3 |
4 | namespace Mobile.BuildTools.Utils
5 | {
6 | public static partial class MSBuildConfigHelper
7 | {
8 | public static BuildToolsConfig GetConfig(ITaskItem item) =>
9 | ConfigHelper.GetConfig(item.ItemSpec);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesPadding--with-paddingFactor-of-1-and-inputFile-of-logo.svg/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesPadding--with-paddingFactor-of-1-and-inputFile-of-logo.svg/logo.png
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.Android/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp/E2EApp.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 | false
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.Android/Resources/drawable/splash_screen.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
7 |
8 |
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/app.debug.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesPadding--with-paddingFactor-of-1.5-and-inputFile-of-logo.svg/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesPadding--with-paddingFactor-of-1.5-and-inputFile-of-logo.svg/logo.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/GeneratesImage--with-inputFile-of-dotnetbot.png-and-scale-of-1/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/GeneratesImage--with-inputFile-of-dotnetbot.png-and-scale-of-1/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/GeneratesImage--with-inputFile-of-dotnetbot.svg-and-scale-of-1/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/GeneratesImage--with-inputFile-of-dotnetbot.svg-and-scale-of-1/dotnetbot.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/app.release.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/GeneratesImage--with-inputFile-of-dotnetbot.png-and-scale-of-0.5/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/GeneratesImage--with-inputFile-of-dotnetbot.png-and-scale-of-0.5/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/GeneratesImage--with-inputFile-of-dotnetbot.png-and-scale-of-0.75/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/GeneratesImage--with-inputFile-of-dotnetbot.png-and-scale-of-0.75/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/GeneratesImage--with-inputFile-of-dotnetbot.svg-and-scale-of-0.5/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/GeneratesImage--with-inputFile-of-dotnetbot.svg-and-scale-of-0.5/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/GeneratesImage--with-inputFile-of-dotnetbot.svg-and-scale-of-0.75/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/GeneratesImage--with-inputFile-of-dotnetbot.svg-and-scale-of-0.75/dotnetbot.png
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.AzurePipelines/tasks/ResigniOS/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "module": "commonjs",
4 | "target": "es6",
5 | "noImplicitAny": false,
6 | "outDir": "built",
7 | "rootDir": ".",
8 | "sourceMap": true,
9 | "moduleResolution": "node"
10 | },
11 | "exclude": [
12 | "node_modules"
13 | ]
14 | }
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesPadding--with-paddingFactor-of-1-and-inputFile-of-dotnetbot.png/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesPadding--with-paddingFactor-of-1-and-inputFile-of-dotnetbot.png/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesPadding--with-paddingFactor-of-1-and-inputFile-of-dotnetbot.svg/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesPadding--with-paddingFactor-of-1-and-inputFile-of-dotnetbot.svg/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Dev-and-scale-of-1-and-position-of-Top/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Dev-and-scale-of-1-and-position-of-Top/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesWatermark--with-inputImageName-of-icon-and-watermarkImage-of-example/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesWatermark--with-inputImageName-of-icon-and-watermarkImage-of-example/icon.png
--------------------------------------------------------------------------------
/samples/BuildToolsSample/src/platform/BuildToolsSample.Android/Resources/drawable/splash_screen.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
7 |
8 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.AzurePipelines/tasks/ResignAndroid/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "module": "commonjs",
4 | "target": "es6",
5 | "noImplicitAny": false,
6 | "outDir": "built",
7 | "rootDir": ".",
8 | "sourceMap": true,
9 | "moduleResolution": "node"
10 | },
11 | "exclude": [
12 | "node_modules"
13 | ]
14 | }
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.AzurePipelines/tasks/SwapAppAssets/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "module": "commonjs",
4 | "target": "es6",
5 | "noImplicitAny": false,
6 | "outDir": "built",
7 | "rootDir": ".",
8 | "sourceMap": true,
9 | "moduleResolution": "node"
10 | },
11 | "exclude": [
12 | "node_modules"
13 | ]
14 | }
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesPadding--with-paddingFactor-of-0.5-and-inputFile-of-dotnetbot.png/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesPadding--with-paddingFactor-of-0.5-and-inputFile-of-dotnetbot.png/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesPadding--with-paddingFactor-of-0.5-and-inputFile-of-dotnetbot.svg/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesPadding--with-paddingFactor-of-0.5-and-inputFile-of-dotnetbot.svg/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesPadding--with-paddingFactor-of-1.5-and-inputFile-of-dotnetbot.png/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesPadding--with-paddingFactor-of-1.5-and-inputFile-of-dotnetbot.png/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesPadding--with-paddingFactor-of-1.5-and-inputFile-of-dotnetbot.svg/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesPadding--with-paddingFactor-of-1.5-and-inputFile-of-dotnetbot.svg/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Dev-and-scale-of-0.5-and-position-of-Top/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Dev-and-scale-of-0.5-and-position-of-Top/dotnetbot.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.iOS/Resources/app.foo.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Dev-and-scale-of-0.5-and-position-of-Bottom/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Dev-and-scale-of-0.5-and-position-of-Bottom/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Dev-and-scale-of-1-and-position-of-Bottom/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Dev-and-scale-of-1-and-position-of-Bottom/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Dev-and-scale-of-1-and-position-of-TopLeft/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Dev-and-scale-of-1-and-position-of-TopLeft/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Dev-and-scale-of-1-and-position-of-TopRight/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Dev-and-scale-of-1-and-position-of-TopRight/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Stage-and-scale-of-0.5-and-position-of-Top/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Stage-and-scale-of-0.5-and-position-of-Top/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesWatermark--with-inputImageName-of-icon-and-watermarkImage-of-beta-version/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesWatermark--with-inputImageName-of-icon-and-watermarkImage-of-beta-version/icon.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.Android/Assets/app.debug.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.Android/Assets/app.foo.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.UWP/Assets/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.iOS/Resources/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Reference/Models/GoogleConfig.cs:
--------------------------------------------------------------------------------
1 | using System.Text.Json.Serialization;
2 |
3 | namespace Mobile.BuildTools.Models
4 | {
5 | public class GoogleConfig
6 | {
7 | [JsonPropertyName("servicesJson")]
8 | public string ServicesJson { get; set; }
9 |
10 | [JsonPropertyName("infoPlist")]
11 | public string InfoPlist { get; set; }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Dev-and-scale-of-0.5-and-position-of-TopLeft/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Dev-and-scale-of-0.5-and-position-of-TopLeft/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Dev-and-scale-of-0.5-and-position-of-TopRight/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Dev-and-scale-of-0.5-and-position-of-TopRight/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Dev-and-scale-of-1-and-position-of-BottomLeft/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Dev-and-scale-of-1-and-position-of-BottomLeft/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Stage-and-scale-of-0.5-and-position-of-Bottom/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Stage-and-scale-of-0.5-and-position-of-Bottom/dotnetbot.png
--------------------------------------------------------------------------------
/version.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://raw.githubusercontent.com/AArnott/Nerdbank.GitVersioning/master/src/NerdBank.GitVersioning/version.schema.json",
3 | "version": "2.1-pre",
4 | "versionHeightOffset": 5,
5 | "assemblyVersion": {
6 | "precision": "revision"
7 | },
8 | "publicReleaseRefSpec": [
9 | "^refs/heads/master$",
10 | "^refs/heads/release/stable/\\d+\\.\\d+$"
11 | ]
12 | }
13 |
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.Android/Assets/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.iOS/Resources/app.debug.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Dev-and-scale-of-0.5-and-position-of-BottomLeft/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Dev-and-scale-of-0.5-and-position-of-BottomLeft/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Dev-and-scale-of-0.5-and-position-of-BottomRight/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Dev-and-scale-of-0.5-and-position-of-BottomRight/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Dev-and-scale-of-1-and-position-of-BottomRight/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Dev-and-scale-of-1-and-position-of-BottomRight/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Stage-and-scale-of-0.5-and-position-of-TopLeft/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Stage-and-scale-of-0.5-and-position-of-TopLeft/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Stage-and-scale-of-0.5-and-position-of-TopRight/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Stage-and-scale-of-0.5-and-position-of-TopRight/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesWatermark--with-inputImageName-of-dotnetbot-and-watermarkImage-of-example/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesWatermark--with-inputImageName-of-dotnetbot-and-watermarkImage-of-example/dotnetbot.png
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.Android/Assets/app.release.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.iOS/Resources/app.release.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Reference/Models/AppIcons/WatermarkPosition.cs:
--------------------------------------------------------------------------------
1 | using System.Text.Json.Serialization;
2 |
3 | namespace Mobile.BuildTools.Models.AppIcons
4 | {
5 | [JsonConverter(typeof(JsonStringEnumConverter))]
6 | public enum WatermarkPosition
7 | {
8 | Top,
9 | Bottom,
10 | TopLeft,
11 | TopRight,
12 | BottomLeft,
13 | BottomRight
14 | };
15 | }
16 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Css/style.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Note: Mobile.BuildTools will be changing the default output behavior in a
3 | * future release. Future releases will minimize the output, and place it in the
4 | * intermediate output folder (obj). Please delete this file after updating the
5 | * Mobile.BuildTools package.
6 | */
7 | body {
8 | font: 100% Helvetica, sans-serif;
9 | color: #333; }
10 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Something long-and-scale-of-1-and-position-of-Top/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Something long-and-scale-of-1-and-position-of-Top/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Stage-and-scale-of-0.5-and-position-of-BottomLeft/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Stage-and-scale-of-0.5-and-position-of-BottomLeft/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Stage-and-scale-of-0.5-and-position-of-BottomRight/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Stage-and-scale-of-0.5-and-position-of-BottomRight/dotnetbot.png
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Configuration/IPlatformConfigManager.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.IO;
3 |
4 | namespace Mobile.BuildTools.Configuration
5 | {
6 | internal interface IPlatformConfigManager
7 | {
8 | bool ResourceExists(string name, out string path);
9 | StreamReader GetStreamReader(string name);
10 | IEnumerable GetEnvironments();
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Reference/Models/ToolItem.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using System.Text.Json.Serialization;
3 |
4 | namespace Mobile.BuildTools.Models
5 | {
6 | public abstract class ToolItem
7 | {
8 | [Description("Disables this Mobile.BuildTools Task")]
9 | [DefaultValue(false)]
10 | [JsonPropertyName("disable")]
11 | public bool? Disable { get; set; }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Something long-and-scale-of-1-and-position-of-Bottom/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Something long-and-scale-of-1-and-position-of-Bottom/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Something long-and-scale-of-1-and-position-of-TopLeft/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Something long-and-scale-of-1-and-position-of-TopLeft/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesWatermark--with-inputImageName-of-dotnetbot-and-watermarkImage-of-beta-version/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesWatermark--with-inputImageName-of-dotnetbot-and-watermarkImage-of-beta-version/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.AppSettings.Tests/Sources/AddsSimpleProperty/buildtools.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://mobilebuildtools.com/schemas/v2/buildtools.schema.json",
3 | "appSettings": {
4 | "TestProject": [
5 | {
6 | "properties": [
7 | {
8 | "name": "AProperty",
9 | "type": "String"
10 | }
11 | ]
12 | }
13 | ]
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Something long-and-scale-of-1-and-position-of-TopRight/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Something long-and-scale-of-1-and-position-of-TopRight/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.AppSettings.Tests/Sources/SkipsUnsupportedPlatform/buildtools.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://mobilebuildtools.com/schemas/v2/buildtools.schema.json",
3 | "appSettings": {
4 | "TestProject": [
5 | {
6 | "properties": [
7 | {
8 | "name": "AProperty",
9 | "type": "String"
10 | }
11 | ]
12 | }
13 | ]
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Something long-and-scale-of-1-and-position-of-BottomLeft/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Something long-and-scale-of-1-and-position-of-BottomLeft/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Something long-and-scale-of-1-and-position-of-BottomRight/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/AppliesTextBanner--with-text-of-Something long-and-scale-of-1-and-position-of-BottomRight/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/GeneratesImageWithCustomHeightWidth--with-inputFile-of-dotnetbot.png-and-expectedOutput-of-150/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/GeneratesImageWithCustomHeightWidth--with-inputFile-of-dotnetbot.png-and-expectedOutput-of-150/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/GeneratesImageWithCustomHeightWidth--with-inputFile-of-dotnetbot.png-and-expectedOutput-of-225/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/GeneratesImageWithCustomHeightWidth--with-inputFile-of-dotnetbot.png-and-expectedOutput-of-225/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/GeneratesImageWithCustomHeightWidth--with-inputFile-of-dotnetbot.png-and-expectedOutput-of-300/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/GeneratesImageWithCustomHeightWidth--with-inputFile-of-dotnetbot.png-and-expectedOutput-of-300/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/GeneratesImageWithCustomHeightWidth--with-inputFile-of-dotnetbot.svg-and-expectedOutput-of-150/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/GeneratesImageWithCustomHeightWidth--with-inputFile-of-dotnetbot.svg-and-expectedOutput-of-150/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/GeneratesImageWithCustomHeightWidth--with-inputFile-of-dotnetbot.svg-and-expectedOutput-of-225/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/GeneratesImageWithCustomHeightWidth--with-inputFile-of-dotnetbot.svg-and-expectedOutput-of-225/dotnetbot.png
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/GeneratesImageWithCustomHeightWidth--with-inputFile-of-dotnetbot.svg-and-expectedOutput-of-300/dotnetbot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dansiegel/Mobile.BuildTools/HEAD/tests/Mobile.BuildTools.Tests/Templates/Images/Expected/Tests/ImageResizerGeneratorFixture/GeneratesImageWithCustomHeightWidth--with-inputFile-of-dotnetbot.svg-and-expectedOutput-of-300/dotnetbot.png
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.Android/Resources/layout/Toolbar.xml:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/docs/continuous-integration/platforms.md:
--------------------------------------------------------------------------------
1 | # Build Platforms
2 |
3 | Because the Mobile.BuildTools is a collection of MSBuild Targets, it works absolutely everywhere that MSBuild is available and building your project. It doesn't matter if you use Cake, or CLI scripts, or which CI platform you use. In general all of the common CI Platforms that Xamarin Developers might use are covered this includes:
4 |
5 | - App Center
6 | - Azure DevOps
7 | - Appveyor
8 | - Jenkins
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Reference/Logging/ILog.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Mobile.BuildTools.Logging
4 | {
5 | public interface ILog
6 | {
7 | void LogMessage(string message);
8 |
9 | void LogError(string message);
10 |
11 | void LogWarning(string message);
12 |
13 | void LogWarning(string formattedString, params object[] args);
14 |
15 | void LogErrorFromException(Exception ex);
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Images/Windows.targets:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.Android/Properties/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.AzurePipelines/ReadMe.md:
--------------------------------------------------------------------------------
1 | # Mobile.BulidTools Build Tasks
2 |
3 | This project contains the Azure Pipelines CI/CD tasks for updating Android and iOS builds. This will allow you to swap resources and manifests to develop a great DevOps story by Building your App Once, and Deploying to Dev, QA, Stage, Production with an updated app bundle. To take full advantage of this you will need to be using Mobile.BuildTools 2.0 with the Mobile.BuildTools ConfigurationManager.
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Reference/Generators/IGenerator.cs:
--------------------------------------------------------------------------------
1 | using Mobile.BuildTools.Build;
2 | using Mobile.BuildTools.Logging;
3 |
4 | namespace Mobile.BuildTools.Generators
5 | {
6 | public interface IGenerator
7 | {
8 | IBuildConfiguration Build { get; }
9 |
10 | ILog Log { get; }
11 |
12 | void Execute();
13 | }
14 |
15 | public interface IGenerator : IGenerator
16 | {
17 | T Outputs { get; }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Templates/Css/style2.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Note: Mobile.BuildTools will be changing the default output behavior in a
3 | * future release. Future releases will minimize the output, and place it in the
4 | * intermediate output folder (obj). Please delete this file after updating the
5 | * Mobile.BuildTools package.
6 | */
7 | ^contentpage {
8 | background-color: #333;
9 | padding: 20px; }
10 |
11 | ^button {
12 | border-radius: 10px; }
13 |
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample/Views/TabA.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 |
3 | namespace AppConfigSample.Views
4 | {
5 | // Learn more about making custom code visible in the Xamarin.Forms previewer
6 | // by visiting https://aka.ms/xamarinforms-previewer
7 | [DesignTimeVisible(false)]
8 | public partial class TabA
9 | {
10 | public TabA()
11 | {
12 | InitializeComponent();
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools/Resources/resourceDefinition.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://mobilebuildtools.com/schemas/v2/resourceDefinition.schema.json",
3 | // "someWatermarkFileWithoutExtension"
4 | "watermarkFile": null,
5 | "name": null,
6 | "scale": 1,
7 | "ignore": false,
8 | "apple": {
9 | "name": null
10 | },
11 | "android": {
12 | "name": null,
13 | // Also available: Mipmap
14 | "resourceType": "Drawable"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.Android/Resources/layout/Toolbar.xml:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.AppSettings.Tests/Sources/UsesSettingsOverDefault/buildtools.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://mobilebuildtools.com/schemas/v2/buildtools.schema.json",
3 | "appSettings": {
4 | "TestProject": [
5 | {
6 | "properties": [
7 | {
8 | "name": "ClientId",
9 | "type": "String",
10 | "defaultValue": "Hello World"
11 | }
12 | ]
13 | }
14 | ]
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/resources/resourceDefinition.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://mobilebuildtools.com/schemas/v2/resourceDefinition.schema.json",
3 | // "someWatermarkFileWithoutExtension"
4 | "watermarkFile": null,
5 | "name": null,
6 | "scale": 1,
7 | "ignore": false,
8 | "apple": {
9 | "name": null
10 | },
11 | "android": {
12 | "name": null,
13 | // Also available: Mipmap
14 | "resourceType": "Drawable"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Reference/Models/AppIcons/PlatformResourceType.cs:
--------------------------------------------------------------------------------
1 | using System.Text.Json.Serialization;
2 |
3 | namespace Mobile.BuildTools.Models.AppIcons
4 | {
5 | [JsonConverter(typeof(JsonStringEnumConverter))]
6 | public enum PlatformResourceType
7 | {
8 | Default,
9 | Drawable,
10 | Mipmap,
11 | AllSquareTiles,
12 | SquareTile,
13 | SmallTile,
14 | SplashScreen,
15 | WideTile
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/docs/appendix/json-schemas.md:
--------------------------------------------------------------------------------
1 | The Mobile.BuildTools relies a lot on JSON configurations because JSON is easy for most developers to work with.
2 |
3 | | FileName | Schema Url |
4 | |:--------:|:----------:|
5 | | secrets.json | n/a - JSON Dictionary **DEPRECATED** |
6 | | appsettings.json | n/a - JSON Dictionary |
7 | | buildtools.json | https://mobilebuildtools.com/schemas/v2/buildtools.schema.json |
8 | | {imageName}.json | https://mobilebuildtools.com/schemas/v2/resourceDefinition.schema.json |
9 |
--------------------------------------------------------------------------------
/samples/BuildToolsSample/src/platform/BuildToolsSample.Android/Resources/layout/Toolbar.xml:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.Android/Properties/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/samples/BuildToolsSample/src/platform/BuildToolsSample.Android/Properties/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Reference/Models/XamarinCss.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using System.Text.Json.Serialization;
3 |
4 | namespace Mobile.BuildTools.Models
5 | {
6 | public class XamarinCss : ToolItem
7 | {
8 | [DefaultValue(false)]
9 | [JsonPropertyName("minify")]
10 | public bool Minify { get; set; }
11 |
12 | [DefaultValue(false)]
13 | [JsonPropertyName("bundleScss")]
14 | public bool BundleScss { get; set; }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 |
5 | ---
6 |
7 | ### SUMMARY
8 |
9 |
10 |
11 | ### DETAILS
12 |
13 |
14 |
15 | ```
16 | // How to use of your requested feature
17 | ```
18 |
19 | ### PLATFORMS
20 |
21 |
22 |
23 | - [ ] Android
24 | - [ ] iOS
25 | - [ ] UWP
26 |
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.UITests/AppInitializer.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Xamarin.UITest;
3 | using Xamarin.UITest.Queries;
4 |
5 | namespace E2EApp.UITests
6 | {
7 | public class AppInitializer
8 | {
9 | public static IApp StartApp(Platform platform)
10 | {
11 | if (platform == Platform.Android)
12 | {
13 | return ConfigureApp.Android.StartApp();
14 | }
15 |
16 | return ConfigureApp.iOS.StartApp();
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/samples/BuildToolsSample/src/platform/BuildToolsSample.Android/MainApplication.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Android.App;
3 | using Android.Runtime;
4 |
5 | namespace BuildToolsSample.Droid
6 | {
7 | [Application(
8 | Icon = "@mipmap/icon"
9 | )]
10 | public class MainApplication : Application
11 | {
12 | public MainApplication(IntPtr javaReference, JniHandleOwnership transfer)
13 | : base(javaReference, transfer)
14 | {
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/samples/BuildToolsSample/src/core/BuildToolsSample/BuildToolsSample.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | netstandard2.0
4 | true
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/samples/BuildToolsSample/src/core/BuildToolsSample/Theme/style.scss:
--------------------------------------------------------------------------------
1 | @import "colors";
2 |
3 | .primaryButton {
4 | background-color: $primary;
5 | color: $textColor;
6 | margin: 0,10,0,0;
7 | }
8 |
9 | navigationpage:any {
10 | -xf-bar-background-color: $primaryDark;
11 | -xf-bar-text-color: $textColor;
12 | }
13 |
14 | toolbaritem:any {
15 | color: $textColor;
16 | }
17 |
18 | .accent {
19 | background-color: $accent;
20 | }
21 |
22 | .lightText {
23 | color: #999999
24 | }
25 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Images/ReadMe.md:
--------------------------------------------------------------------------------
1 | # Mobile.BuildTools.Images
2 |
3 | This package provides support for image management in your mobile applications. This package is designed to work with any mobile application project type including .NET MAUI, .NET Mobile, Uno Platform and Avalonia applications. Unlike Resizetizer, the Mobile.BuildTools Images package is designed to be significantly more flexible with providing image overlays and json configurations that are much more natural for developers with full intellisense support.
4 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Configuration.MSBuild/Models/Configuration/ExpectedAppConfigExtensions.cs:
--------------------------------------------------------------------------------
1 | namespace Mobile.BuildTools.Models.Configuration;
2 |
3 | public static class ExpectedAppConfigExtensions
4 | {
5 | public static ExpectedAppConfig ToExpectedAppConfig(this Microsoft.Build.Framework.ITaskItem item) =>
6 | new ExpectedAppConfig
7 | {
8 | OutputPath = item.ItemSpec,
9 | SourceFile = item.GetMetadata(BuildTools.Configuration.MetaData.SourceFile)
10 | };
11 | }
12 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.AppSettings.Tests/Sources/AddsSimpleProperty/buildtools.env:
--------------------------------------------------------------------------------
1 | {
2 | "ProjectName": "TestProject",
3 | "RootNamespace": "TestProject",
4 | "BuildConfiguration": "Debug",
5 | "TargetPlatform": "Unsupported",
6 | "GeneratedClasses": [
7 | {
8 | "properties": [
9 | {
10 | "name": "AProperty",
11 | "type": "String"
12 | }
13 | ]
14 | }
15 | ],
16 | "Environment": {
17 | "AProperty": "Hello World"
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp/Views/ImagesPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | using Xamarin.Forms;
8 | using Xamarin.Forms.Xaml;
9 |
10 | namespace E2EApp.Views
11 | {
12 | [XamlCompilation(XamlCompilationOptions.Compile)]
13 | public partial class ImagesPage : ContentPage
14 | {
15 | public ImagesPage()
16 | {
17 | InitializeComponent();
18 | }
19 | }
20 | }
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.Android/MainApplication.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Android.App;
3 | using Android.Runtime;
4 |
5 | namespace AppConfigSample.Droid
6 | {
7 | [Application(
8 | Label = "Prism Sample",
9 | Icon = "@mipmap/icon"
10 | )]
11 | public class MainApplication : Application
12 | {
13 | public MainApplication(IntPtr javaReference, JniHandleOwnership transfer)
14 | : base(javaReference, transfer)
15 | {
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Configuration/IConfigurationManager.cs:
--------------------------------------------------------------------------------
1 | namespace Mobile.BuildTools.Configuration
2 | {
3 | public interface IConfigurationManager
4 | {
5 | INameValueCollection AppSettings { get; }
6 | ConnectionStringCollection ConnectionStrings { get; }
7 |
8 | bool EnvironmentExists(string name);
9 | IReadOnlyList Environments { get; }
10 | event EventHandler SettingsChanged;
11 | void Reset();
12 | void Transform(string name);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Configuration.Tests/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/samples/BuildToolsSample/src/platform/BuildToolsSample.iOS/Main.cs:
--------------------------------------------------------------------------------
1 | using UIKit;
2 |
3 | namespace BuildToolsSample.iOS
4 | {
5 | public class Application
6 | {
7 | // This is the main entry point of the application.
8 | public static void Main(string[] args)
9 | {
10 | // if you want to use a different Application Delegate class from "AppDelegate"
11 | // you can specify it here.
12 | UIApplication.Main(args, null, "AppDelegate");
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.AppSettings/AnalyzerReleases.Shipped.md:
--------------------------------------------------------------------------------
1 | ; Shipped analyzer releases
2 | ; https://github.com/dotnet/roslyn-analyzers/blob/main/src/Microsoft.CodeAnalysis.Analyzers/ReleaseTrackingAnalyzers.Help.md
3 |
4 | Rule ID | Category | Severity | Notes
5 | --------|----------|----------|-------
6 | MBT100 | Configuration | Error | Displays error for MSBuild Property that cannot be found
7 | MBT200 | CodeGen | Info | Displays message for generated class
8 | MBT404 | CodeGen | Error | Displays error message when a property cannot be found
9 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Configuration/AppConfigElement.cs:
--------------------------------------------------------------------------------
1 | namespace Mobile.BuildTools.Configuration;
2 |
3 | internal static class AppConfigElement
4 | {
5 | public const string AppSettings = "appSettings";
6 | public const string ConnectionString = "connectionString";
7 | public const string ConnectionStrings = "connectionStrings";
8 | public const string Key = "key";
9 | public const string Name = "name";
10 | public const string ProviderName = "providerName";
11 | public const string Value = "value";
12 | }
13 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.AzurePipelines/tasks/ResignAndroid/task.ts:
--------------------------------------------------------------------------------
1 | import tl = require('vsts-task-lib/task');
2 | import trm = require('vsts-task-lib/toolrunner');
3 | import fs = require('fs');
4 | import sam = require('samchon-framework');
5 | import { isNullOrUndefined } from 'util';
6 |
7 | async function run() {
8 | try {
9 | let tool: trm.ToolRunner;
10 |
11 |
12 | console.log('Task done!');
13 | }
14 | catch (err) {
15 | tl.setResult(tl.TaskResult.Failed, err.message);
16 | }
17 | }
18 |
19 | run();
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.AzurePipelines/tasks/SwapAppAssets/task.ts:
--------------------------------------------------------------------------------
1 | import tl = require('vsts-task-lib/task');
2 | import trm = require('vsts-task-lib/toolrunner');
3 | import fs = require('fs');
4 | import sam = require('samchon-framework');
5 | import { isNullOrUndefined } from 'util';
6 |
7 | async function run() {
8 | try {
9 | let tool: trm.ToolRunner;
10 |
11 |
12 | console.log('Task done!');
13 | }
14 | catch (err) {
15 | tl.setResult(tl.TaskResult.Failed, err.message);
16 | }
17 | }
18 |
19 | run();
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Configuration/AppConfigSource.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Extensions.Configuration;
2 |
3 | namespace Mobile.BuildTools.Configuration;
4 |
5 | internal class AppConfigSource : IConfigurationSource
6 | {
7 | private IConfigurationManager _manager { get; }
8 |
9 | public AppConfigSource(IConfigurationManager manager)
10 | {
11 | _manager = manager;
12 | }
13 |
14 | public IConfigurationProvider Build(IConfigurationBuilder builder)
15 | {
16 | return new AppConfigProvider(_manager);
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Reference/Models/AppIcons/PlatformConfiguration.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.ComponentModel;
3 | using System.Text.Json.Serialization;
4 |
5 | namespace Mobile.BuildTools.Models.AppIcons
6 | {
7 | public class PlatformConfiguration : BaseImageConfiguration
8 | {
9 | [Description("Provides additional resource outputs for the specified source image.")]
10 | [JsonPropertyName("additionalOutputs")]
11 | public List AdditionalOutputs { get; set; }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Images/Android.targets:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Configuration/ConnectionStringSettings.cs:
--------------------------------------------------------------------------------
1 | #nullable enable
2 | namespace Mobile.BuildTools.Configuration;
3 |
4 | ///
5 | /// Provides a foundation for containing a Connection String
6 | ///
7 | /// The name or key of the ConnectionString.
8 | /// The provider type name. This is typically ignored.
9 | /// The connection string.
10 | public record ConnectionStringSettings(string Name, string? ProviderName, string ConnectionString);
11 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Configuration/Xdt/XmlTransformationException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Microsoft.Web.XmlTransform;
4 |
5 | // This doesn't do anything, except mark an error as having come from
6 | // the transformation engine
7 | [Serializable]
8 | internal class XmlTransformationException : Exception
9 | {
10 | public XmlTransformationException(string message)
11 | : base(message) {
12 | }
13 |
14 | public XmlTransformationException(string message, Exception innerException)
15 | : base(message, innerException) {
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.iOS/Main.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 |
5 | using Foundation;
6 | using UIKit;
7 |
8 | namespace E2EApp.iOS
9 | {
10 | public class Application
11 | {
12 | // This is the main entry point of the application.
13 | static void Main(string[] args)
14 | {
15 | // if you want to use a different Application Delegate class from "AppDelegate"
16 | // you can specify it here.
17 | UIApplication.Main(args, null, "AppDelegate");
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Reference/Extensions/DictionaryExtensions.cs:
--------------------------------------------------------------------------------
1 | namespace System.Collections.Generic
2 | {
3 | public static class DictionaryExtensions
4 | {
5 | public static void Deconstruct(this KeyValuePair tuple, out T1 key, out T2 value)
6 | {
7 | key = tuple.Key;
8 | value = tuple.Value;
9 | }
10 |
11 | public static void ForEach(this IEnumerable items, Action action)
12 | {
13 | foreach (var item in items)
14 | action(item);
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.AppSettings.Tests/Sources/SkipsUnsupportedPlatform/buildtools.env:
--------------------------------------------------------------------------------
1 | {
2 | "ProjectName": "TestProject",
3 | "RootNamespace": "TestProject",
4 | "BuildConfiguration": "Debug",
5 | "TargetPlatform": "Unsupported",
6 | "GeneratedClasses": [
7 | {
8 | "properties": [
9 | {
10 | "name": "AProperty",
11 | "type": "String"
12 | }
13 | ]
14 | }
15 | ],
16 | "Environment": {
17 | "AProperty": "Hello World",
18 | "DataScheme": "MSAB44C935C-979C-4FD2-9A63-13B395C7AFE3"
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.AzurePipelines/vss-extension.json:
--------------------------------------------------------------------------------
1 | {
2 | "manifestVersion": 0,
3 | "id": "tools",
4 | "version": "0.0.1",
5 | "name": "mobile-buildtools",
6 | "publisher": "Dan Siegel",
7 | "description": "Tools to help you Rebundle your Android & iOS app with fresh resources",
8 | "targets": [
9 | {
10 | "id": "Microsoft.VisualStudio.Services"
11 | }
12 | ],
13 | "categories": [
14 | "Build and release"
15 | ],
16 | "tags": [
17 | "rebundle"
18 | ],
19 | "links": {
20 | "home": {
21 | "uri": "https://dansiegel.net"
22 | }
23 | }
24 | }
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Reference/Models/AppIcons/AppleIconSetImage.cs:
--------------------------------------------------------------------------------
1 | using System.Text.Json.Serialization;
2 |
3 | namespace Mobile.BuildTools.Models.AppIcons
4 | {
5 | public class AppleIconSetImage
6 | {
7 | [JsonPropertyName("scale")]
8 | public string Scale { get; set; }
9 |
10 | [JsonPropertyName("size")]
11 | public string Size { get; set; }
12 |
13 | [JsonPropertyName("idiom")]
14 | public string Idiom { get; set; }
15 |
16 | [JsonPropertyName("filename")]
17 | public string FileName { get; set; }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample/AppConfigSample.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 | netstandard2.0
4 | true
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Reference/IO/DirectoryInfoEqualityComparer.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.IO;
4 |
5 | namespace Mobile.BuildTools.Reference.IO;
6 |
7 | internal class DirectoryInfoEqualityComparer : IEqualityComparer
8 | {
9 | public static DirectoryInfoEqualityComparer Instance { get; } = new ();
10 |
11 | public bool Equals(DirectoryInfo x, DirectoryInfo y) =>
12 | x.FullName.Equals(y.FullName, StringComparison.Ordinal);
13 |
14 | public int GetHashCode(DirectoryInfo obj) =>
15 | obj.FullName.GetHashCode();
16 | }
17 |
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.Android/Resources/layout/Tabbar.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.AzurePipelines/tasks/ResigniOS/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "resignios",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "author": "",
10 | "license": "ISC",
11 | "dependencies": {
12 | "fs": "0.0.1-security",
13 | "samchon-framework": "^2.0.30",
14 | "util": "^0.10.3",
15 | "vsts-task-lib": "^2.1.0"
16 | },
17 | "devDependencies": {
18 | "@types/node": "^8.5.1",
19 | "@types/q": "^1.0.6"
20 | }
21 | }
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.AzurePipelines/tasks/ResignAndroid/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "resignandroid",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "author": "",
10 | "license": "ISC",
11 | "dependencies": {
12 | "fs": "0.0.1-security",
13 | "samchon-framework": "^2.0.30",
14 | "util": "^0.10.3",
15 | "vsts-task-lib": "^2.1.0"
16 | },
17 | "devDependencies": {
18 | "@types/node": "^8.5.1",
19 | "@types/q": "^1.0.6"
20 | }
21 | }
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.AzurePipelines/tasks/SwapAppAssets/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "swapappassets",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "author": "",
10 | "license": "ISC",
11 | "dependencies": {
12 | "fs": "0.0.1-security",
13 | "samchon-framework": "^2.0.30",
14 | "util": "^0.10.3",
15 | "vsts-task-lib": "^2.1.0"
16 | },
17 | "devDependencies": {
18 | "@types/node": "^8.5.1",
19 | "@types/q": "^1.0.6"
20 | }
21 | }
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Configuration/ReadMe.md:
--------------------------------------------------------------------------------
1 | # Mobile.BuildTools.Configuration
2 |
3 | This package provides support for AppConfiguration that uses the classic app.config format to allow compile time or runtime configuration of your application. When using the app.config format this allows you to update your configuration at runtime without needing to recompile your application empowering scenarios where you may want to swap between Production and Stage environments in a live application. This is particularly useful in testing live applications where you may want to validate backend changes will not adversly affect your users.
4 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.AppSettings/Extensions/AccessibilityExtensions.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.CodeAnalysis;
2 | using ConfigAccessibility = Mobile.BuildTools.Models.Settings.Accessibility;
3 |
4 | namespace Mobile.BuildTools.AppSettings.Extensions
5 | {
6 | internal static class AccessibilityExtensions
7 | {
8 | public static Accessibility ToRoslynAccessibility(this ConfigAccessibility accessibility) =>
9 | accessibility switch
10 | {
11 | ConfigAccessibility.Public => Accessibility.Public,
12 | _ => Accessibility.Internal
13 | };
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/docs/release-notes.md:
--------------------------------------------------------------------------------
1 | # Release Notes
2 |
3 | Generating Release notes can be painful. The Mobile.BuildTools will help solve this problem in v2.X with the Release Notes Task. For this we will generate a ReleaseNotes.txt automatically for you. The configuration options are shown here with their default values.
4 |
5 | ```json
6 | {
7 | "$schema": "https://mobilebuildtools.com/schemas/v2/buildtools.schema.json",
8 | "releaseNotes": {
9 | "maxDays": 7,
10 | "maxCommit": 10,
11 | "characterLimit": 250,
12 | "filename": "ReleaseNotes.txt",
13 | "createInRoot": true,
14 | "disable": false
15 | }
16 | }
17 | ```
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.iOS/Main.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 |
5 | using Foundation;
6 | using UIKit;
7 |
8 | namespace AppConfigSample.iOS
9 | {
10 | public class Application
11 | {
12 | // This is the main entry point of the application.
13 | public static void Main(string[] args)
14 | {
15 | // if you want to use a different Application Delegate class from "AppDelegate"
16 | // you can specify it here.
17 | UIApplication.Main(args, null, "AppDelegate");
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.Android/Resources/layout/Tabbar.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Configuration/build/Mobile.BuildTools.Configuration.props:
--------------------------------------------------------------------------------
1 |
2 |
3 | <_MobileBuildToolsConfigurationTaskDll>$(MSBuildThisFileDirectory)Mobile.BuildTools.Configuration.MSBuild.dll
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/samples/BuildToolsSample/src/platform/BuildToolsSample.Android/Resources/layout/Tabbar.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
--------------------------------------------------------------------------------
/samples/BuildToolsSample/images/android/icon.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://mobilebuildtools.com/schemas/v2/resourceDefinition.schema.json",
3 | "name": "icon",
4 | "android": {
5 | "resourceType": "Mipmap",
6 | "name": "icon",
7 | "scale": 0.1875,
8 | "additionalOutputs": [
9 | {
10 | "name": "launcher_foreground",
11 | "resourceType": "Mipmap",
12 | "scale": 0.28125,
13 | "padFactor": 0.5
14 | // "padColor": "Blue"
15 | },
16 | {
17 | "name": "notifications",
18 | "resourceType": "Drawable",
19 | "scale": 0.1875
20 | }
21 | ]
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools/NetStandard.targets:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
10 |
11 |
12 |
13 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Fixtures/Drawing/ImageBaseFixture.cs:
--------------------------------------------------------------------------------
1 | using System.IO;
2 | using Mobile.BuildTools.Drawing;
3 | using Xunit;
4 | using Xunit.Abstractions;
5 |
6 | namespace Mobile.BuildTools.Tests.Fixtures.Drawing
7 | {
8 | public class ImageBaseFixture : FixtureBase
9 | {
10 | public ImageBaseFixture(ITestOutputHelper testOutputHelper)
11 | : base(testOutputHelper)
12 | {
13 | }
14 |
15 | [Fact]
16 | public void LoadShouldThrowIfFileDoesNotExist() =>
17 | Assert.Throws(() => ImageBase.Load($"{Path.GetRandomFileName()}.svg"));
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/tools/Mobile.BuildTools.SchemaGenerator/Mobile.BuildTools.SchemaGenerator.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Exe
5 | net6.0
6 | false
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Configuration/ConfigurationManagerExtensions.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace Mobile.BuildTools.Configuration
4 | {
5 | internal static class ConfigurationManagerExtensions
6 | {
7 | public static ConnectionStringCollection ToConnectionStringCollection(this IEnumerable settings) =>
8 | new ConnectionStringCollection(settings);
9 |
10 | public static NameValueCollection ToNameValueCollection(this IList> keyPairs)
11 | {
12 | return new NameValueCollection(keyPairs);
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Reference/Models/EnvironmentSettings.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Text.Json.Serialization;
3 |
4 | namespace Mobile.BuildTools.Models
5 | {
6 | public class EnvironmentSettings
7 | {
8 | [JsonPropertyName("enableFuzzyMatching")]
9 | public bool EnableFuzzyMatching { get; set; }
10 |
11 | [JsonPropertyName("defaults")]
12 | public Dictionary Defaults { get; set; } = [];
13 |
14 | [JsonPropertyName("configuration")]
15 | public Dictionary> Configuration { get; set; } = [];
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/E2E/NuGet.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp/Views/SecretsPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using E2EApp.Helpers;
2 | using Xamarin.Forms;
3 |
4 | namespace E2EApp.Views
5 | {
6 | public partial class SecretsPage
7 | {
8 | public SecretsPage()
9 | {
10 | InitializeComponent();
11 | sampleString.Text = Secrets.SampleString;
12 | sampleBool.Text = $"{Secrets.SampleBool}";
13 | sampleDouble.Text = $"{Secrets.SampleDouble}";
14 | sampleInt.Text = $"{Secrets.SampleInt}";
15 | sampleUri.Text = $"{Secrets.SampleUri}";
16 | sampleUriType.Text = Secrets.SampleUri.GetType().FullName;
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/samples/BuildToolsSample/src/core/BuildToolsSample/App.xaml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp/App.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.IO;
2 | using System.Text.RegularExpressions;
3 | using E2EApp.Views;
4 | using Xamarin.Forms;
5 | using Xamarin.Forms.Xaml;
6 |
7 | [assembly: XamlCompilation(XamlCompilationOptions.Compile)]
8 | namespace E2EApp
9 | {
10 | public partial class App : Application
11 | {
12 | public App()
13 | {
14 | InitializeComponent();
15 | var tabbedPage = new TabbedPage();
16 | tabbedPage.Children.Add(new SecretsPage());
17 | tabbedPage.Children.Add(new AppConfig());
18 | tabbedPage.Children.Add(new ImagesPage());
19 | MainPage = tabbedPage;
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools/Extensions/FileInfoExtensions.cs:
--------------------------------------------------------------------------------
1 | using System.IO;
2 | using System.Text.Json;
3 |
4 | namespace Mobile.BuildTools.Extensions
5 | {
6 | internal static class FileInfoExtensions
7 | {
8 | public static string ReadAllText(this FileInfo fi)
9 | {
10 | if (!fi.Exists)
11 | return null;
12 |
13 | using var stream = fi.OpenRead();
14 | using var reader = new StreamReader(stream);
15 | return reader.ReadToEnd();
16 | }
17 |
18 | public static T ReadJsonFile(this FileInfo fi) =>
19 | JsonSerializer.Deserialize(fi.ReadAllText());
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools/UAP.targets:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
8 |
9 |
13 |
14 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Reference/Models/Settings/PropertyTypeExtensions.cs:
--------------------------------------------------------------------------------
1 | using System.Linq;
2 | using System.Reflection;
3 |
4 | namespace Mobile.BuildTools.Models.Settings
5 | {
6 | public static class PropertyTypeExtensions
7 | {
8 | public static PropertyTypeMappingAttribute GetPropertyTypeMapping(this PropertyType propertyType)
9 | {
10 | var type = typeof(PropertyType);
11 | var memberInfoArray = type.GetMember(propertyType.ToString());
12 | var member = memberInfoArray.FirstOrDefault(x => x.DeclaringType == typeof(PropertyType));
13 | return member.GetCustomAttribute();
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.AppSettings.Tests/Sources/GeneratesRequiredPlatform/buildtools.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://mobilebuildtools.com/schemas/v2/buildtools.schema.json",
3 | "appSettings": {
4 | "TestProject": [
5 | {
6 | "properties": [
7 | {
8 | "name": "AProperty",
9 | "type": "String"
10 | }
11 | ]
12 | },
13 | {
14 | "className": "AndroidAppSettings",
15 | "requiredPlatforms": "Android",
16 | "properties": [
17 | {
18 | "name": "DataScheme",
19 | "type": "String"
20 | }
21 | ]
22 | }
23 | ]
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.AppSettings.Tests/Sources/GeneratesWithRequiredPrefix/buildtools.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://mobilebuildtools.com/schemas/v2/buildtools.schema.json",
3 | "appSettings": {
4 | "TestProject": [
5 | {
6 | "properties": [
7 | {
8 | "name": "AProperty",
9 | "type": "String"
10 | }
11 | ]
12 | },
13 | {
14 | "className": "AndroidAppSettings",
15 | "requiredPlatforms": "Android",
16 | "properties": [
17 | {
18 | "name": "DataScheme",
19 | "type": "String"
20 | }
21 | ]
22 | }
23 | ]
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/theme/partials/footer.html:
--------------------------------------------------------------------------------
1 | {% import "partials/language.html" as lang with context %}
2 |
3 |
4 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Reference/Models/ImageResize.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Text.Json.Serialization;
3 |
4 | namespace Mobile.BuildTools.Models
5 | {
6 | public class ImageResize : ToolItem
7 | {
8 | public ImageResize()
9 | {
10 | Directories = new List();
11 | ConditionalDirectories = new Dictionary>();
12 | }
13 |
14 | [JsonPropertyName("directories")]
15 | public List Directories { get; set; }
16 |
17 | [JsonPropertyName("conditionalDirectories")]
18 | public Dictionary> ConditionalDirectories { get; set; }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.Android/Assets/AboutAssets.txt:
--------------------------------------------------------------------------------
1 | Any raw assets you want to be deployed with your application can be placed in
2 | this directory (and child directories) and given a Build Action of "AndroidAsset".
3 |
4 | These files will be deployed with you package and will be accessible using Android's
5 | AssetManager, like this:
6 |
7 | public class ReadAsset : Activity
8 | {
9 | protected override void OnCreate (Bundle bundle)
10 | {
11 | base.OnCreate (bundle);
12 |
13 | InputStream input = Assets.Open ("my_asset.txt");
14 | }
15 | }
16 |
17 | Additionally, some Android functions will automatically load asset files:
18 |
19 | Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf");
20 |
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.UWP/MainPage.xaml:
--------------------------------------------------------------------------------
1 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/samples/BuildToolsSample/src/platform/BuildToolsSample.UWP/MainPage.xaml:
--------------------------------------------------------------------------------
1 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Reference/Logging/ConsoleLogger.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Mobile.BuildTools.Logging
4 | {
5 | internal class ConsoleLogger : ILog
6 | {
7 | public void LogError(string message) =>
8 | Console.WriteLine(message);
9 |
10 | public void LogErrorFromException(Exception ex) =>
11 | Console.WriteLine(ex);
12 |
13 | public void LogMessage(string message) =>
14 | Console.WriteLine(message);
15 |
16 | public void LogWarning(string message) =>
17 | Console.WriteLine(message);
18 |
19 | public void LogWarning(string formattedString, params object[] args) =>
20 | Console.WriteLine(formattedString, args);
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.AppManifests/ReadMe.md:
--------------------------------------------------------------------------------
1 | # Mobile.BuildTools.AppManifests
2 |
3 | The Mobile.BuildTools.AppManifests package provides support for managing your application manifests in your mobile applications. This package is designed to work with any mobile application project type including .NET MAUI, .NET Mobile, Uno Platform and Avalonia applications. This package assists you in transforming your application manifests at build time to ensure that you have better support in development and CI/CD with the ability to transform your application manifests based on your build configuration and environment. This is particularly useful in situations where you might need to include Client Ids that need to be changed between Development, Staging and Production environments.
4 |
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.Android/Assets/AboutAssets.txt:
--------------------------------------------------------------------------------
1 | Any raw assets you want to be deployed with your application can be placed in
2 | this directory (and child directories) and given a Build Action of "AndroidAsset".
3 |
4 | These files will be deployed with your package and will be accessible using Android's
5 | AssetManager, like this:
6 |
7 | public class ReadAsset : Activity
8 | {
9 | protected override void OnCreate (Bundle bundle)
10 | {
11 | base.OnCreate (bundle);
12 |
13 | InputStream input = Assets.Open ("my_asset.txt");
14 | }
15 | }
16 |
17 | Additionally, some Android functions will automatically load asset files:
18 |
19 | Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf");
20 |
--------------------------------------------------------------------------------
/Clean-Outputs.ps1:
--------------------------------------------------------------------------------
1 | Get-ChildItem .\ -Include bin,obj -Recurse | ForEach-Object ($_) { Remove-Item $_.FullName -Force -Recurse }
2 | Get-ChildItem .\ -Include .mfractor -Attributes Hidden -Recurse | ForEach-Object ($_) { Remove-Item $_.FullName -Force -Recurse }
3 | Get-ChildItem .\ -Include .vs -Attributes Hidden -Recurse | ForEach-Object ($_) { Remove-Item $_.FullName -Force -Recurse }
4 | Get-ChildItem .\ -Include *.csproj.user -Recurse | ForEach-Object ($_) { Remove-Item $_.FullName -Force -Recurse }
5 | Get-ChildItem .\ -Include Artifacts -Recurse | ForEach-Object ($_) { Remove-Item $_.FullName -Force -Recurse }
6 |
7 | Get-ChildItem $HOME\.nuget\packages -Include mobile.buildtools,mobile.buildtools.configuration -Recurse | ForEach-Object ($_) { Remove-Item $_.FullName -Force -Recurse }
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.UWP/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("AppConfigSample.UWP")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("AppConfigSample.UWP")]
13 | [assembly: AssemblyCopyright("Copyright © Dan Siegel 2020")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | [assembly: ComVisible(false)]
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Fixtures/Extensions/PlatformExtensionsFixture.cs:
--------------------------------------------------------------------------------
1 | using Mobile.BuildTools.Utils;
2 | using Xunit;
3 |
4 | namespace Mobile.BuildTools.Tests.Fixtures.Extensions;
5 | public class PlatformExtensionsFixture
6 | {
7 | [Theory]
8 | [InlineData("net8.0", Platform.Unsupported)]
9 | [InlineData("net8.0-ios", Platform.iOS)]
10 | [InlineData("net8.0-ios14.0", Platform.iOS)]
11 | [InlineData("net8.0-android", Platform.Android)]
12 | [InlineData("net8.0-android34", Platform.Android)]
13 | [InlineData("net8.0-android34.0", Platform.Android)]
14 | public void GetTargetPlatform(string framework, Platform expected)
15 | {
16 | var result = framework.GetTargetPlatform();
17 | Assert.Equal(expected, result);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/E2E/E2EApp/.editorconfig:
--------------------------------------------------------------------------------
1 | # Suppress: EC112
2 | # top-most EditorConfig file
3 | root = true
4 |
5 | # Don't use tabs for indentation.
6 | [*]
7 | indent_style = space
8 | # (Please don't specify an indent_size here; that has too many unintended consequences.)
9 |
10 | # Code files
11 | [*.{cs,csx,vb,vbx}]
12 | indent_size = 4
13 |
14 | # Code files
15 | [*.sln]
16 | indent_size = 4
17 |
18 | # Xml project files
19 | [*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj}]
20 | indent_size = 2
21 |
22 | # Xml config files
23 | [*.{props,targets,ruleset,config,nuspec,resx,vsixmanifest,vsct}]
24 | indent_size = 2
25 |
26 | # JSON files
27 | [*.json]
28 | indent_size = 2
29 |
30 | # XML files
31 | [*.xml]
32 | indent_size = 2
33 |
34 | # XAML files
35 | [*.xaml]
36 | indent_size = 2
--------------------------------------------------------------------------------
/samples/BuildToolsSample/src/platform/BuildToolsSample.UWP/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("BuildToolsSample.UWP")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("BuildToolsSample.UWP")]
13 | [assembly: AssemblyCopyright("Copyright © Dan Siegel 2020")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | [assembly: ComVisible(false)]
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Images/Drawing/SKBitmapExtensions.cs:
--------------------------------------------------------------------------------
1 | using SkiaSharp;
2 |
3 | namespace Mobile.BuildTools.Drawing
4 | {
5 | public static class SKBitmapExtensions
6 | {
7 | public static bool HasTransparentBackground(this SKBitmap bitmap)
8 | {
9 | var imageWidth = bitmap.Info.Width;
10 | var imageHeight = bitmap.Info.Height;
11 |
12 | for (var x = 0; x < imageWidth; x++)
13 | {
14 | for (var y = 0; y < imageHeight; y++)
15 | {
16 | if (bitmap.GetPixel(x, y).Alpha == 0)
17 | {
18 | return true;
19 | }
20 | }
21 | }
22 |
23 | return false;
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Reference/Handlers/DefaultValueHandler.cs:
--------------------------------------------------------------------------------
1 | using System.Linq;
2 |
3 | namespace Mobile.BuildTools.Handlers
4 | {
5 | internal class DefaultValueHandler : IValueHandler
6 | {
7 | public DefaultValueHandler()
8 | : this(null)
9 | {
10 | }
11 |
12 | public DefaultValueHandler(string format)
13 | {
14 | _format = string.IsNullOrWhiteSpace(format) ? "{0}" : format;
15 | }
16 |
17 | private string _format { get; }
18 |
19 | public string Format(string args, bool safeOutput)
20 | {
21 | if (safeOutput)
22 | args = string.Join(string.Empty, args.Select(c => "*"));
23 |
24 | return string.Format(_format, args);
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Images/Apple.targets:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
11 |
12 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/docs/images/built-in-templates.md:
--------------------------------------------------------------------------------
1 | When using the built in drawing API in the Mobile.BuildTools, we will draw one a custom banner and text in one of 6 layouts.
2 |
3 | | | | |
4 | |:-:|:-:|:-:|
5 | | 
Top Left | 
Top | 
Top Right |
6 | | 
Bottom Left | 
Bottom | 
Bottom Right |
7 |
8 | What can you edit?
9 |
10 | - Use your specified text
11 | - Use any system installed font
12 | - Use a custom font from a specified font file
13 | - Specify the Text Color
14 | - Specify One or More Colors for the Banner to get your preferred style (solid or gradient)
--------------------------------------------------------------------------------
/src/Mobile.BuildTools/Mobile.BuildTools.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | $(MSBuildThisFileDirectory)Mobile.BuildTools.targets
6 | <_MobileBuildToolsParentBuildTasksDll>$([System.IO.Path]::Combine('$(MSBuildThisFileDirectory)', 'Mobile.BuildTools.dll'))
7 | $([System.IO.Path]::Combine('$(SolutionDir)', 'Artifacts'))
8 | $([System.IO.Path]::Combine('$(BUILD_ARTIFACTSTAGINGDIRECTORY)', 'App'))
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.UWP/MainPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.IO;
4 | using System.Linq;
5 | using System.Runtime.InteropServices.WindowsRuntime;
6 | using Windows.Foundation;
7 | using Windows.Foundation.Collections;
8 | using Windows.UI.Xaml;
9 | using Windows.UI.Xaml.Controls;
10 | using Windows.UI.Xaml.Controls.Primitives;
11 | using Windows.UI.Xaml.Data;
12 | using Windows.UI.Xaml.Input;
13 | using Windows.UI.Xaml.Media;
14 | using Windows.UI.Xaml.Navigation;
15 |
16 | namespace AppConfigSample.UWP
17 | {
18 | public sealed partial class MainPage
19 | {
20 | public MainPage()
21 | {
22 | this.InitializeComponent();
23 |
24 | LoadApplication(new AppConfigSample.App());
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/docs/appendix/upgrade.md:
--------------------------------------------------------------------------------
1 | # Upgrading from 1.X
2 |
3 | The Mobile.BuildTools 1.X is extremely reliable for generating app secrets! But 2.0 is much better at it. There were a number of factors that went into determining what we should and should not be doing.
4 |
5 | ## Secrets
6 |
7 | There is a lot about the Secrets class generation that has been completely refactored. The result is that you have far more options when generating secrets than you did in 1.X. The big thing to consider is that you will need to add a configuration for the Project in the solution you want to add secrets for. Secrets have undergone a rename for a variety of reasons. Be sure to configure the `appSettings` section of the `buildtools.json`. For more information on how to configure this be sure to see the [Configuration](../config/appsettings/index.md) documentation.
8 |
--------------------------------------------------------------------------------
/samples/BuildToolsSample/src/platform/BuildToolsSample.UWP/MainPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.IO;
4 | using System.Linq;
5 | using System.Runtime.InteropServices.WindowsRuntime;
6 | using Windows.Foundation;
7 | using Windows.Foundation.Collections;
8 | using Windows.UI.Xaml;
9 | using Windows.UI.Xaml.Controls;
10 | using Windows.UI.Xaml.Controls.Primitives;
11 | using Windows.UI.Xaml.Data;
12 | using Windows.UI.Xaml.Input;
13 | using Windows.UI.Xaml.Media;
14 | using Windows.UI.Xaml.Navigation;
15 |
16 | namespace BuildToolsSample.UWP
17 | {
18 | public sealed partial class MainPage
19 | {
20 | public MainPage()
21 | {
22 | this.InitializeComponent();
23 |
24 | LoadApplication(new BuildToolsSample.App());
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/docs/maui.md:
--------------------------------------------------------------------------------
1 | .NET Maui is the evolution of Xamarin. There is a lot to be excited about with .NET Maui. While this is still early days with .NET Maui and I have not yet had time to evaluate the Mobile.BuildTools with .NET Maui, there is also no reason why the Mobile.BuildTools would not work with .NET Maui. Many of the features included with the Mobile.BuildTools such as the Secrets API, is completely cross platform and can be used with literally any C# project including AspNetCore, Unit Tests, etc.
2 |
3 | For Platform Specific functionality such as the Image or Manifest processing, these rely on the iOS/Android SDK's which are shared by traditional Xamarin applications and .NET Maui apps. As such these should continue to work. If you encounter any issue with the Mobile.BuildTools and a .NET Maui application please be sure to file and issue on GitHub.
4 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.AppSettings.Tests/Sources/GeneratesRequiredPlatform/buildtools.env:
--------------------------------------------------------------------------------
1 | {
2 | "ProjectName": "TestProject",
3 | "RootNamespace": "TestProject",
4 | "BuildConfiguration": "Debug",
5 | "TargetPlatform": "Android",
6 | "GeneratedClasses": [
7 | {
8 | "className": "AndroidAppSettings",
9 | "requiredPlatforms": "Android",
10 | "properties": [
11 | {
12 | "name": "DataScheme",
13 | "type": "String"
14 | }
15 | ]
16 | },
17 | {
18 | "properties": [
19 | {
20 | "name": "AProperty",
21 | "type": "String"
22 | }
23 | ]
24 | }
25 | ],
26 | "Environment": {
27 | "AProperty": "Hello World",
28 | "DataScheme": "MSAB44C935C-979C-4FD2-9A63-13B395C7AFE3"
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/E2E/E2EApp/E2EApp.Android/SplashActivity.cs:
--------------------------------------------------------------------------------
1 | using Android.App;
2 | using Android.OS;
3 | using Android.Support.V7.App;
4 | using Android.Content;
5 | using Android.Util;
6 |
7 | namespace E2EApp.Droid
8 | {
9 | [Activity(Theme = "@style/MainTheme.Splash",
10 | MainLauncher = true,
11 | NoHistory = true)]
12 | public class SplashActivity : AppCompatActivity
13 | {
14 | public override void OnCreate(Bundle savedInstanceState, PersistableBundle persistentState)
15 | {
16 | base.OnCreate(savedInstanceState, persistentState);
17 | }
18 |
19 | // Launches the startup task
20 | protected override void OnResume()
21 | {
22 | base.OnResume();
23 | StartActivity(new Intent(Application.Context, typeof(MainActivity)));
24 | }
25 | }
26 | }
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.Android/SplashActivity.cs:
--------------------------------------------------------------------------------
1 | using Android.App;
2 | using Android.Content;
3 | using Android.OS;
4 | using AndroidX.AppCompat.App;
5 |
6 | namespace AppConfigSample.Droid
7 | {
8 | [Activity(Theme = "@style/MainTheme.Splash",
9 | MainLauncher = true,
10 | NoHistory = true)]
11 | public class SplashActivity : AppCompatActivity
12 | {
13 | public override void OnCreate(Bundle savedInstanceState, PersistableBundle persistentState)
14 | {
15 | base.OnCreate(savedInstanceState, persistentState);
16 | }
17 |
18 | // Launches the startup task
19 | protected override void OnResume()
20 | {
21 | base.OnResume();
22 | StartActivity(new Intent(Application.Context, typeof(MainActivity)));
23 | }
24 | }
25 | }
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Reference/Models/AppConfig.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel;
2 | using System.Text.Json.Serialization;
3 |
4 | namespace Mobile.BuildTools.Models
5 | {
6 | public class AppConfig : ToolItem
7 | {
8 | [Description("Configures the bundling strategy for advanced scenarios. By default it will only transform the app.config with the app.{BuildConfiguration}.config. You may optionally bundle all app.*.config or those that do not include Debug, Release, Store.")]
9 | [DefaultValue(AppConfigStrategy.TransformOnly)]
10 | [JsonPropertyName("strategy")]
11 | public AppConfigStrategy Strategy { get; set; }
12 | }
13 |
14 | [JsonConverter(typeof(JsonStringEnumConverter))]
15 | public enum AppConfigStrategy
16 | {
17 | TransformOnly,
18 | BundleAll,
19 | BundleNonStandard
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/samples/BuildToolsSample/src/platform/BuildToolsSample.Android/MainActivity.cs:
--------------------------------------------------------------------------------
1 | using System.IO;
2 | using Android.App;
3 | using Android.Content.PM;
4 | using Android.OS;
5 |
6 | namespace BuildToolsSample.Droid
7 | {
8 | [Activity(Theme = "@style/MainTheme",
9 | ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
10 | public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
11 | {
12 | protected override void OnCreate(Bundle savedInstanceState)
13 | {
14 | TabLayoutResource = Resource.Layout.Tabbar;
15 | ToolbarResource = Resource.Layout.Toolbar;
16 |
17 | base.OnCreate(savedInstanceState);
18 |
19 | global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
20 | LoadApplication(new App());
21 | }
22 | }
23 | }
--------------------------------------------------------------------------------
/src/Mobile.BuildTools/readme.md:
--------------------------------------------------------------------------------
1 | # Mobile.BuildTools
2 |
3 | Thanks for installing the Mobile.BuildTools library!
4 |
5 | The Mobile.BuildTools are here to help you follow best practices when developing your mobile applications. If you've been around Mobile.BuildTools for a while A LOT has changed since version 1.0. Please be sure to check out the new docs site at https://mobilebuildtools.com
6 |
7 | If the Mobile.BuildTools is helping you deliver your app please consider becoming a GitHub Sponsor.
8 | https://github.com/sponsors/dansiegel
9 |
10 | Be sure to subscribe to my YouTube channel for tips and tricks
11 | https://youtube.com/dansiegel
12 |
13 | ## App Wide Config
14 |
15 | Be sure to add a `buildtools.json` to your solution root directory.
16 |
17 | ```json
18 | {
19 | "$schema": "https://mobilebuildtools.com/schemas/v2/buildtools.schema.json",
20 | }
21 | ```
22 |
--------------------------------------------------------------------------------
/samples/BuildToolsSample/src/platform/BuildToolsSample.Android/SplashActivity.cs:
--------------------------------------------------------------------------------
1 | using Android.App;
2 | using Android.Content;
3 | using Android.OS;
4 | using AndroidX.AppCompat.App;
5 |
6 | namespace BuildToolsSample.Droid
7 | {
8 | [Activity(Theme = "@style/MainTheme.Splash",
9 | MainLauncher = true,
10 | NoHistory = true)]
11 | public class SplashActivity : AppCompatActivity
12 | {
13 | public override void OnCreate(Bundle savedInstanceState, PersistableBundle persistentState)
14 | {
15 | base.OnCreate(savedInstanceState, persistentState);
16 | }
17 |
18 | // Launches the startup task
19 | protected override void OnResume()
20 | {
21 | base.OnResume();
22 | StartActivity(new Intent(Application.Context, typeof(MainActivity)));
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | version: 2
2 | updates:
3 | - package-ecosystem: nuget
4 | directory: "/"
5 | schedule:
6 | interval: daily
7 | time: "13:00"
8 | open-pull-requests-limit: 3
9 | ignore:
10 | - dependency-name: Microsoft.Build
11 | versions:
12 | - "> 16.0.461"
13 | - dependency-name: Microsoft.Build.Tasks.Core
14 | versions:
15 | - "> 16.0.461"
16 | - dependency-name: Microsoft.Web.Xdt
17 | versions:
18 | - "> 3.0.0"
19 | - dependency-name: NuGet.Build.Packaging
20 | versions:
21 | - "> 0.2.5-dev.10"
22 | - dependency-name: Xamarin.TestCloud.Agent
23 | versions:
24 | - "> 0.22.1"
25 | - dependency-name: Xamarin.UITest
26 | versions:
27 | - "> 3.0.14"
28 | - dependency-name: Microsoft.Build.NoTargets
29 | versions:
30 | - 2.0.17
31 | - dependency-name: Xamarin.UITest
32 | versions:
33 | - 3.0.13
34 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Reference/Handlers/NumericValueHandler.cs:
--------------------------------------------------------------------------------
1 | using System.Linq;
2 |
3 | namespace Mobile.BuildTools.Handlers
4 | {
5 | internal abstract class NumericValueHandler : IValueHandler
6 | {
7 | private char _requiredSuffix { get; }
8 |
9 | protected NumericValueHandler(char requiredSuffix)
10 | {
11 | _requiredSuffix = requiredSuffix;
12 | }
13 |
14 | public string Format(string rawValue, bool safeOutput)
15 | {
16 | if (safeOutput)
17 | return string.Join(string.Empty, rawValue.Select(x => "*"));
18 |
19 | var c = rawValue.Last();
20 | if (char.IsLetter(c) && char.ToLowerInvariant(c).Equals(char.ToLowerInvariant(_requiredSuffix)))
21 | return rawValue;
22 |
23 | return rawValue + char.ToUpperInvariant(_requiredSuffix);
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.AppSettings.Tests/Sources/GeneratesWithRequiredPrefix/buildtools.env:
--------------------------------------------------------------------------------
1 | {
2 | "ProjectName": "TestProject",
3 | "RootNamespace": "TestProject",
4 | "BuildConfiguration": "Debug",
5 | "TargetPlatform": "Android",
6 | "GeneratedClasses": [
7 | {
8 | "className": "AndroidAppSettings",
9 | "prefix": "MSAL_",
10 | "requiredPlatforms": [
11 | "Android"
12 | ],
13 | "properties": [
14 | {
15 | "name": "DataScheme",
16 | "type": "String"
17 | }
18 | ]
19 | },
20 | {
21 | "properties": [
22 | {
23 | "name": "DataScheme",
24 | "type": "String"
25 | }
26 | ]
27 | }
28 | ],
29 | "Environment": {
30 | "MSAL_DataScheme": "MSAB44C935C-979C-4FD2-9A63-13B395C7AFE3",
31 | "DataScheme": "AnotherDataScheme"
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools/Tasks/GenerateGitReleaseNotesTask.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Build.Framework;
2 | using Mobile.BuildTools.Build;
3 | using Mobile.BuildTools.Generators;
4 | using Mobile.BuildTools.Utils;
5 |
6 | namespace Mobile.BuildTools.Tasks
7 | {
8 | public class GenerateGitReleaseNotesTask : BuildToolsTaskBase
9 | {
10 | [Required]
11 | public string OutputPath { get; set; }
12 |
13 | internal override void ExecuteInternal(IBuildConfiguration config)
14 | {
15 | if (!EnvironmentAnalyzer.IsInGitRepo(config.ProjectDirectory))
16 | {
17 | Log.LogMessage($"The project {config.ProjectName} is not inside of an initialized git repository");
18 | return;
19 | }
20 |
21 | IGenerator generator = new ReleaseNotesGenerator(config, OutputPath);
22 | generator.Execute();
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Reference/Constants.cs:
--------------------------------------------------------------------------------
1 | namespace Mobile.BuildTools
2 | {
3 | public static class Constants
4 | {
5 | public const string AppSettingsJsonFileName = "appsettings.json";
6 |
7 | public const string AppSettingsJsonConfigurationFileFormat = "appsettings.{0}.json";
8 |
9 | public const string BuildToolsEnvironmentSettings = "buildtools.env";
10 |
11 | public const string SecretsJsonFileName = "secrets.json";
12 |
13 | public const string SecretsJsonConfigurationFileFormat = "secrets.{0}.json";
14 |
15 | public const string BuildToolsConfigFileName = "buildtools.json";
16 |
17 | public const string ManifestJsonFileName = "manifest.json";
18 |
19 | public const string DefaultBackgroundColor = "#FFFFFF";
20 |
21 | public const double DefaultOpacity = 0.95;
22 |
23 | public const string AppPackageName = "MBTPackageName";
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Reference/Generators/GeneratorBase.cs:
--------------------------------------------------------------------------------
1 | using Mobile.BuildTools.Build;
2 | using Mobile.BuildTools.Logging;
3 |
4 | namespace Mobile.BuildTools.Generators
5 | {
6 | public abstract class GeneratorBase : IGenerator
7 | {
8 | public GeneratorBase(IBuildConfiguration buildConfiguration)
9 | {
10 | Build = buildConfiguration;
11 | }
12 |
13 | public IBuildConfiguration Build { get; }
14 | public ILog Log => Build.Logger;
15 |
16 | protected abstract void ExecuteInternal();
17 |
18 | public void Execute() => ExecuteInternal();
19 | }
20 |
21 | public abstract class GeneratorBase : GeneratorBase, IGenerator
22 | {
23 | public GeneratorBase(IBuildConfiguration buildConfiguration)
24 | : base(buildConfiguration)
25 | {
26 | }
27 |
28 | public T Outputs { get; protected set; }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 |
5 | ---
6 |
7 | # Description
8 |
9 | A clear and concise description of what the bug is.
10 |
11 | ## Reproduction Steps
12 |
13 | Steps to reproduce the behavior:
14 | 1. Go to '...'
15 | 2. Click on '....'
16 | 3. Scroll down to '....'
17 | 4. See error
18 |
19 | ## Expected Behavior
20 |
21 | A clear and concise description of what you expected to happen.
22 |
23 | ## Actual Behavior
24 |
25 | What actually happened.
26 |
27 | ## Environment
28 |
29 | - OS: [Windows 10|OSX]
30 | - IDE: [VS2017|VSMac|CLI]
31 | - BuildTools Version: [1.x.x]
32 | - IDE Version: [1.x.x]
33 | - Build Target Framework: [netstandard2.0|Xamarin.iOS|Xamarin.Android]
34 |
35 | ## Reproduction App
36 |
37 | Please include a sample app that reproduces the issue and/or a binlog. Failure to reproduce either of these may lead to the issue being closed or ignored.
38 |
--------------------------------------------------------------------------------
/tests/Mobile.BuildTools.Tests/Fixtures/Drawing/VectorImageFixture.cs:
--------------------------------------------------------------------------------
1 | using System.IO;
2 | using Mobile.BuildTools.Drawing;
3 | using Xunit;
4 | using Xunit.Abstractions;
5 |
6 | namespace Mobile.BuildTools.Tests.Fixtures.Drawing
7 | {
8 | public class VectorImageFixture : FixtureBase
9 | {
10 | public VectorImageFixture(ITestOutputHelper testOutputHelper)
11 | : base(testOutputHelper)
12 | {
13 | }
14 |
15 | [Theory]
16 | [InlineData("dotnetbot.svg", true)]
17 | [InlineData("logo.svg", true)]
18 | [InlineData("square.svg", false)]
19 | public void DetectsTransparency(string inputFile, bool hasTransparentBackground)
20 | {
21 | using var vectorImage = new VectorImage(Path.Combine(TestConstants.ImageDirectory, inputFile));
22 |
23 | Assert.Equal(hasTransparentBackground, vectorImage.HasTransparentBackground);
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/Mobile.BuildTools.Configuration/Xdt/Microsoft.Web.XmlTransform.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | netstandard2.0;netstandard2.1
7 | AnyCPU
8 | true
9 | false
10 |
11 |
12 |
13 |
14 | True
15 | True
16 | Resources.resx
17 |
18 |
19 |
20 |
21 |
22 | ResXFileCodeGenerator
23 | Resources.Designer.cs
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/.vsconfig:
--------------------------------------------------------------------------------
1 | {
2 | "version": "1.0",
3 | "components": [
4 | "Microsoft.VisualStudio.Component.CoreEditor",
5 | "Microsoft.VisualStudio.Workload.CoreEditor",
6 | "Microsoft.NetCore.Component.SDK",
7 | "Microsoft.VisualStudio.Component.NuGet",
8 | "Microsoft.VisualStudio.Component.Roslyn.Compiler",
9 | "Microsoft.VisualStudio.Component.Roslyn.LanguageServices",
10 | "Microsoft.Net.Component.4.7.2.TargetingPack",
11 | "Microsoft.Net.ComponentGroup.DevelopmentPrerequisites",
12 | "Microsoft.Component.MSBuild",
13 | "Microsoft.VisualStudio.Component.Debugger.JustInTime",
14 | "Microsoft.VisualStudio.Component.IntelliCode",
15 | "Component.OpenJDK",
16 | "Microsoft.VisualStudio.Component.MonoDebugger",
17 | "Microsoft.VisualStudio.Component.Merq",
18 | "Component.Xamarin.RemotedSimulator",
19 | "Microsoft.VisualStudio.Component.NuGet.BuildTools",
20 | "Microsoft.Component.CodeAnalysis.SDK"
21 | ]
22 | }
23 |
--------------------------------------------------------------------------------
/samples/AppConfigSample/src/AppConfigSample.Android/MainActivity.cs:
--------------------------------------------------------------------------------
1 | using System.IO;
2 | using Android.App;
3 | using Android.Content.PM;
4 | using Android.OS;
5 | using Mobile.BuildTools.Configuration;
6 |
7 | namespace AppConfigSample.Droid
8 | {
9 | [Activity(Theme = "@style/MainTheme",
10 | ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
11 | public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
12 | {
13 | protected override void OnCreate(Bundle savedInstanceState)
14 | {
15 | TabLayoutResource = Resource.Layout.Tabbar;
16 | ToolbarResource = Resource.Layout.Toolbar;
17 |
18 | base.OnCreate(savedInstanceState);
19 |
20 | ConfigurationManager.Init(true, this);
21 | global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
22 | LoadApplication(new App());
23 | }
24 | }
25 | }
--------------------------------------------------------------------------------
/docs/continuous-integration/setup.md:
--------------------------------------------------------------------------------
1 | # Continuous Integration Setup
2 |
3 | Obviously if we checked in a json file with our secrets it would negate the entire point of trying to secure our code base. The Build Tools include a Build Host Secrets task that executes prior to the Secrets Generation. This task will execute when the secrets json file does not exist in an attempt to generate the missing json file. This is designed to handle secrets across multiple projects. By default we assume you have a single shared project such as a .NET Standard library, and one or more platform projects like iOS, Android, UWP, macOS, & Tizen. To override the secrets prefix for any project you simply need to provide a value for `BuildHostSecretPrefix`
4 |
5 | | Platform | Secrets Prefix |
6 | | -------- | -------------- |
7 | | Android | DroidSecret_ |
8 | | iOS | iOSSecret_ |
9 | | UWP | UWPSecret_ |
10 | | macOS | MacSecret_ |
11 | | Tizen | TizenSecret_ |
12 | | Default | BuildTools_ |
13 |
--------------------------------------------------------------------------------