Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Controls: Added metadata to the Controls project to enable publishing to NuGet #16611

Open
wants to merge 55 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
b7a8d02
Add package metadata
Lamparter Dec 16, 2024
cb6053d
Add package README
Lamparter Dec 16, 2024
1921122
New package description
Lamparter Dec 16, 2024
1147580
Change package description in README
Lamparter Dec 16, 2024
0d1ec49
Change authors to just "files-community"
Lamparter Dec 17, 2024
61cf513
Initial addition of CI
Lamparter Dec 17, 2024
478bd01
Add PR run for CI to test
Lamparter Dec 17, 2024
bb6e519
Update cd-controls.yml
Lamparter Dec 17, 2024
38a9f22
Update cd-controls.yml
Lamparter Dec 17, 2024
8ee0277
Fix version script
Lamparter Dec 17, 2024
d05ba58
Fix appxpackage reference
Lamparter Dec 17, 2024
7ae948f
Fix reference to UI controls project
Lamparter Dec 17, 2024
e22252b
Update cd-controls.yml
Lamparter Dec 17, 2024
b3b7156
Update cd-controls.yml
Lamparter Dec 21, 2024
5bd99e4
Move comma
Lamparter Dec 24, 2024
09f35bf
Move comma in `README.md`
Lamparter Dec 24, 2024
00a172f
Add more tags
Lamparter Dec 24, 2024
5e8b12c
Replace secret direct link with placeholder
Lamparter Feb 2, 2025
a7e5cf8
Update license header
Lamparter Feb 2, 2025
f5185cb
Rename potential deployment space to "NuGet"
Lamparter Feb 2, 2025
c4f0111
Remove accidental space
Lamparter Feb 2, 2025
423f845
Replace tab formatting with spaces
Lamparter Feb 2, 2025
fd7fca2
Include README via `Include=` rather than `Update=`
Lamparter Feb 3, 2025
bc720b2
Add versioning file
Lamparter Feb 8, 2025
6669533
Remove 'extract version' step
Lamparter Feb 9, 2025
20ae5e6
Reference version in project
Lamparter Feb 9, 2025
e48460e
New workflow
Lamparter Feb 9, 2025
a051b80
Add PR creation step
Lamparter Feb 9, 2025
7aa16f4
Remove ``
Lamparter Feb 9, 2025
e84912e
Remove `--body`
Lamparter Feb 9, 2025
8aca882
`""` > `''`
Lamparter Feb 9, 2025
47faecc
`GH_TOKEN`
Lamparter Feb 9, 2025
f36c2b2
Example
Lamparter Feb 9, 2025
59c5215
Sample bot
Lamparter Feb 9, 2025
7e644e8
Fix custom actor
Lamparter Feb 9, 2025
b573021
Improve message
Lamparter Feb 9, 2025
41bab8f
Change PR prefix
Lamparter Feb 9, 2025
e59efd6
Remove CLI newline switch
Lamparter Feb 9, 2025
72b3bc2
Update copyright year
Lamparter Mar 17, 2025
d73567c
Reword warning
Lamparter Mar 17, 2025
0abc96f
Update to SLNX
Lamparter Mar 18, 2025
7feddf3
Merge steps
Lamparter Mar 18, 2025
9abdac0
Update .github/workflows/bump-controls.yml
Lamparter Mar 18, 2025
d4be57a
Set environment to NuGet
Lamparter Mar 25, 2025
88b4d7a
Only run the CD workflow when CurrentVersion.props gets edited
Lamparter Mar 25, 2025
2bace91
Only run the Bump Controls action on manual trigger
Lamparter Mar 25, 2025
a2f669e
Change repo owner check to `files-community`
Lamparter Mar 25, 2025
c1b6a61
Update .github/workflows/bump-controls.yml
Lamparter Mar 25, 2025
3305c7a
Actual secret
Lamparter Mar 25, 2025
8bc14a5
Rename environment
Lamparter Mar 25, 2025
cfc13db
Rename action
Lamparter Mar 25, 2025
b47602d
Space
Lamparter Mar 25, 2025
fac3e75
Update .github/workflows/bump-controls.yml
yaira2 Mar 26, 2025
c50bb01
Remove unnecessary comments
Lamparter Mar 26, 2025
7c9e6d1
Rename `PROPS_PATH` to `VERSION_PROPS_PATH`
Lamparter Mar 26, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 85 additions & 0 deletions .github/workflows/bump-controls.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
# Copyright (c) Files Community
# Licensed under the MIT License.

# Abstract:
# Bumps the version of the Files UI Controls library
#
# Workflow:
# 1. Find the version of the Files UI Controls library
# 2. Bump the version of the Files UI Controls library
# 3. Commit the changes to a new branch in the repo
# 4. Push the changes to the repo
# 5. Create a pull request and request a review

name: Bump Files.App.Controls

on:
workflow_dispatch:

jobs:
bump:
runs-on: windows-latest
environment: Pull Requests
strategy:
fail-fast: false
env:
WORKING_DIR: '${{ github.workspace }}' # D:\a\Files\Files\
VERSION_PROPS_PATH: '${{ github.workspace }}\src\Files.App.Controls\CurrentVersion.props'

steps:
- name: Checkout the repository
uses: actions/checkout@v4

- name: Generate GitHub Apps token
if: github.repository_owner == 'files-community'
id: generate
uses: actions/create-github-app-token@v1
with:
app-id: ${{ secrets.BOT_APP_ID }}
private-key: ${{ secrets.BOT_PRIVATE_KEY }}

- name: Bump Version
id: bump_version
shell: pwsh
run: |
$xml = [xml](Get-Content $env:PROPS_PATH)
$version = [int]$xml.Project.PropertyGroup.MicroVersion
$newVersion = $version + 1
$xml.Project.PropertyGroup.MicroVersion = $newVersion
$xml.Save($env:PROPS_PATH)
Write-Output "Bumped version to $newVersion"
echo "::set-output name=new_version::$newVersion"

- name: Get version for PR message
id: get_version
shell: pwsh
run: |
$xml = [xml](Get-Content $env:PROPS_PATH)
$microVersion = [int]$xml.Project.PropertyGroup.MicroVersion
$minorVersion = [int]$xml.Project.PropertyGroup.MinorVersion
$majorVersion = [int]$xml.Project.PropertyGroup.MajorVersion
$fullVersion = "$majorVersion.$minorVersion.$microVersion"
Write-Output "Found publish version, $fullVersion"
echo "::set-output name=full_version::$fullVersion"

- name: Add and commit changes
uses: EndBug/add-and-commit@v9
with:
add: '${{ env.VERSION_PROPS_PATH }}'

author_name: files-community-bot[bot]
author_email: 152337890+files-community-bot[bot]@users.noreply.github.com
default_author: github_actor

message: 'Bump Files UI controls version to ${{ steps.get_version.outputs.full_version }}'
new_branch: 'files/ui-controls/${{ steps.get_version.outputs.full_version }}'

pathspec_error_handling: ignore
push: true

- name: Create Pull Request
shell: pwsh
env:
GH_TOKEN: ${{ steps.generate.outputs.token }}
run: |
gh pr create --title "Controls: Bumped Controls version to ${{ steps.get_version.outputs.full_version }}" --body "This is an automated PR that bumps the version of the Files UI controls project." --base main --head bot/ui-controls/${{ steps.get_version.outputs.full_version }}
70 changes: 70 additions & 0 deletions .github/workflows/cd-controls.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# Copyright (c) Files Community
# Licensed under the MIT License.

# Abstract:
# Deploys the Files UI Controls library to NuGet
#
# Workflow:
# 1. Restore and build Files UI Controls
# 2. Generate a NuGet package and symbols
# 3. Publish the artifacts to NuGet

name: Files CD (UI Controls)

on:
push:
branches:
- main
paths:
- src/Files.App.Controls/CurrentVersion.props
workflow_dispatch:

jobs:
build:
runs-on: windows-latest
environment: Deployments
strategy:
fail-fast: false
env:
SOLUTION_NAME: 'Files.slnx'
CONFIGURATION: 'Release' # It's not necessary to use a matrix as the package method will always be Release
PLATFORM: 'x64'
WORKING_DIR: '${{ github.workspace }}' # D:\a\Files\Files\
PROJECT_DIR: '${{ github.workspace }}\src\Files.App.Controls'
PACKAGE_PROJECT_PATH: '${{ github.workspace }}\src\Files.App.Controls\Files.App.Controls.csproj'

steps:
- name: Checkout the repository
uses: actions/checkout@v4
- name: Setup MSBuild
uses: microsoft/setup-msbuild@v2
- name: Setup NuGet
uses: NuGet/setup-nuget@v2
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
global-json-file: global.json

- name: Use Windows SDK Preview
shell: cmd
run: |
for /f %%a in ('dir /b /a:d %localappdata%\Microsoft\VisualStudio\17*') do echo UsePreviews=True>%localappdata%\Microsoft\VisualStudio\%%a\sdk.txt

- name: Restore NuGet
shell: pwsh
run: |
msbuild $env:PACKAGE_PROJECT_PATH `
-t:Restore `
-p:Platform=$env:PLATFORM `
-p:Configuration=$env:CONFIGURATION

- name: Build Files UI Controls
run: |
msbuild "$env:PACKAGE_PROJECT_PATH" `
-t:Build `
-p:Platform=$env:PLATFORM `
-p:Configuration=$env:CONFIGURATION `
-p:PackageOutputPath="$env:WORKING_DIR\output"

- name: Publish package to NuGet
run: dotnet nuget push ./output/*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json
15 changes: 15 additions & 0 deletions src/Files.App.Controls/CurrentVersion.props
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<!-- Copyright (c) Files Community. Licensed under the MIT License. -->
<!-- READ ME BEFORE MODIFYING THIS FILE:
This file is used to track the version of the Files UI Controls package online.
The version is automatically bumped by the 'Bump Files UI Controls' action online.
You can bump the version here in a PR and when it is merged the controls project
will be automatically published to NuGet online. -->
Comment on lines +2 to +6
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
<!-- READ ME BEFORE MODIFYING THIS FILE:
This file is used to track the version of the Files UI Controls package online.
The version is automatically bumped by the 'Bump Files UI Controls' action online.
You can bump the version here in a PR and when it is merged the controls project
will be automatically published to NuGet online. -->
<!--
DO NOT MODIFY unless you are knowledgeable about this file:
This file is used to track the version of the Files.App.Controls NuGet package online.
The version is automatically bumped by a GitHub Action online.
-->

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this change is necessary.

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<MajorVersion>1</MajorVersion>
<MinorVersion>0</MinorVersion>
<!-- This version is bumped automatically by CI. -->
<MicroVersion>0</MicroVersion>
<Version>$(MajorVersion).$(MinorVersion).$(MicroVersion)</Version>
</PropertyGroup>
</Project>
37 changes: 35 additions & 2 deletions src/Files.App.Controls/Files.App.Controls.csproj
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<!-- Copyright (c) Files Community. Licensed under the MIT License. -->
<!-- Copyright (c) Files Community. Licensed under the MIT License. -->
<Project Sdk="Microsoft.NET.Sdk">

<Import Project="CurrentVersion.props" />
<PropertyGroup>
<TargetFramework>$(WindowsTargetFramework)</TargetFramework>
<TargetPlatformMinVersion>$(MinimalWindowsVersion)</TargetPlatformMinVersion>
@@ -12,6 +12,32 @@
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>

<PropertyGroup>
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
<Title>Files UI Controls</Title>
<Authors>files-community</Authors>
<Company>Files Community</Company>
<Copyright>Copyright (c) Files Community</Copyright>
<PackageReadmeFile>README.md</PackageReadmeFile>
<RepositoryUrl>https://github.com/files-community/Files</RepositoryUrl>
<RepositoryType>git</RepositoryType>
<PackageTags>files, files-community, winui, winappsdk</PackageTags>
<Description>Elevate your WinUI applications with our collection of custom-built controls, crafted specifically to address our needs in Files. These controls are provided "as is", with no guaranteed support, but we hope they prove useful to the developer community.</Description>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<PackageRequireLicenseAcceptance>True</PackageRequireLicenseAcceptance>
<IncludeSymbols>True</IncludeSymbols>
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
<PackageProjectUrl>https://files.community</PackageProjectUrl>
<PackageIcon>StoreLogo.scale-400.png</PackageIcon>
</PropertyGroup>

<ItemGroup>
<None Include="..\Files.App (Package)\Assets\AppTiles\Release\StoreLogo.scale-400.png">
<Pack>True</Pack>
<PackagePath>\</PackagePath>
</None>
</ItemGroup>

<ItemGroup>
<PackageReference Include="CommunityToolkit.WinUI.Extensions" />
<PackageReference Include="CommunityToolkit.Labs.WinUI.DependencyPropertyGenerator" />
@@ -25,4 +51,11 @@
<ProjectReference Include="..\Files.Core.SourceGenerator\Files.Core.SourceGenerator.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
</ItemGroup>

<ItemGroup>
<None Include="README.md">
<Pack>True</Pack>
<PackagePath>\</PackagePath>
</None>
</ItemGroup>

</Project>
12 changes: 12 additions & 0 deletions src/Files.App.Controls/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
> These controls are provided "as is", with no guaranteed support, but we hope they prove useful to the developer community.
# 📁 Files UI Controls

##### Elevate your WinUI applications with our collection of custom-built controls, crafted specifically to address our needs in Files.

---

This package contains various controls for the [Files app](https://files.community), including `ThemedIcon`, `Toolbar` and various storage controls.
It is available [on NuGet](https://www.nuget.org/packages/Files.App.Controls), however is unlisted and can only be installed by manually typing the package name and version number into the MSBuild project file.

Please do not open issues on the Files repository about this package, as it is not officially supported by the Files team and is provided as is.
If you have questions about the design or implementation of these controls, please ask [on Discord](https://discord.gg/files).
Loading
Oops, something went wrong.