PowerToys icon indicating copy to clipboard operation
PowerToys copied to clipboard

[build]Add version to binaries and add check in CI

Open jaimecbernardo opened this issue 3 years ago • 1 comments

Summary of the Pull Request

Add a check in CI to fail when there are binaries without version number set. Also adds version to the binaries that are missing it.

PR Checklist

  • [x] Closes: #19762
  • [ ] Communication: I've discussed this with core contributors already. If work hasn't been agreed, this work might be rejected
  • [ ] Tests: Added/updated and all pass
  • [ ] Localization: All end user facing strings can be localized
  • [ ] Dev docs: Added/updated
  • [ ] New binaries: Added on the required places
  • [ ] Documentation updated: If checked, please file a pull request on our docs repo and link it here: #xxx

Detailed Description of the Pull Request / Additional comments

Also verifies if binaries don't have a null version.

Adds version number to :

  • modules\AlwaysOnTop\PowerToys.AlwaysOnTop.exe
  • modules\AlwaysOnTop\PowerToys.AlwaysOnTopModuleInterface.dll
  • modules\Awake\PowerToys.AwakeModuleInterface.dll
  • modules\FancyZones\PowerToys.FancyZonesModuleInterface.dll
  • modules\PowerRename\PowerToys.PowerRename.exe
  • modules\VideoConference\PowerToys.VideoConferenceModule.dll
  • Tools\PowerToys.BugReportTool.exe
  • Tools\PowerToys.StylesReportTool.exe
  • Tools\PowerToys.WebcamReportTool.exe
  • PowerToysSetupCustomActions.dll

Validation Steps Performed

Verified build CI is building correctly. On my first build it didn't because I hadn't added PowerToysSetupCustomActions.dll so it failed with an error. Now passes after having added PowerToysSetupCustomActions.dll.

jaimecbernardo avatar Aug 05 '22 18:08 jaimecbernardo

@check-spelling-bot Report

:red_circle: Please review

See the :open_file_folder: files view or the :scroll:action log for details.

Unrecognized words (1)

codicon

Previously acknowledged words that are now absent ABradley azchohfi dependabot naveensrinivasan
To accept :heavy_check_mark: these unrecognized words as correct (and remove the previously acknowledged and now absent words), run the following commands

... in a clone of the [email protected]:microsoft/PowerToys.git repository on the dev/jaime/ci-check-binaries-for-no-version branch (:information_source: how do I use this?):

update_files() {
perl -e '
my @expect_files=qw('".github/actions/spell-check/expect.txt"');
@ARGV=@expect_files;
my @stale=qw('"$patch_remove"');
my $re=join "|", @stale;
my $suffix=".".time();
my $previous="";
sub maybe_unlink { unlink($_[0]) if $_[0]; }
while (<>) {
if ($ARGV ne $old_argv) { maybe_unlink($previous); $previous="$ARGV$suffix"; rename($ARGV, $previous); open(ARGV_OUT, ">$ARGV"); select(ARGV_OUT); $old_argv = $ARGV; }
next if /^(?:$re)(?:(?:\r|\n)*$| .*)/; print;
}; maybe_unlink($previous);'
perl -e '
my $new_expect_file=".github/actions/spell-check/expect.txt";
use File::Path qw(make_path);
use File::Basename qw(dirname);
make_path (dirname($new_expect_file));
open FILE, q{<}, $new_expect_file; chomp(my @words = <FILE>); close FILE;
my @add=qw('"$patch_add"');
my %items; @items{@words} = @words x (1); @items{@add} = @add x (1);
@words = sort {lc($a)."-".$a cmp lc($b)."-".$b} keys %items;
open FILE, q{>}, $new_expect_file; for my $word (@words) { print FILE "$word\n" if $word =~ /\w/; };
close FILE;
system("git", "add", $new_expect_file);
'
}

comment_json=$(mktemp)
curl -L -s -S \
-H "Content-Type: application/json" \
"https://api.github.com/repos/microsoft/PowerToys/issues/comments/1206747139" > "$comment_json"
comment_body=$(mktemp)
jq -r ".body // empty" "$comment_json" | tr -d "\\r" > $comment_body
rm $comment_json

patch_remove=$(perl -ne 'next unless s{^</summary>(.*)</details>$}{$1}; print' < "$comment_body")

patch_add=$(perl -e '$/=undef; $_=<>; if (m{Unrecognized words[^<]*</summary>\n*```\n*([^<]*)```\n*</details>$}m) { print "$1" } elsif (m{Unrecognized words[^<]*\n\n((?:\w.*\n)+)\n}m) { print "$1" };' < "$comment_body")

update_files
rm $comment_body
git add -u

If the flagged items are false positives

If items relate to a ...

  • binary file (or some other file you wouldn't want to check at all).

    Please add a file path to the excludes.txt file matching the containing file.

    File paths are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your files.

    ^ refers to the file's path from the root of the repository, so ^README\.md$ would exclude README.md (on whichever branch you're using).

  • well-formed pattern.

    If you can write a pattern that would match it, try adding it to the patterns.txt file.

    Patterns are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your lines.

    Note that patterns can't match multiline strings.

github-actions[bot] avatar Aug 05 '22 18:08 github-actions[bot]