profile
viewpoint
If you are wondering where the data of this site comes from, please visit https://api.github.com/users/BalestraPatrick/events. GitMemory does not store any data, but only uses NGINX to cache data for a period of time. The idea behind GitMemory is simply to give users a better reading experience.
Patrick Balestra BalestraPatrick Spotify Stockholm, Sweden http://www.patrickbalestra.com Infra Engineer at @spotify. Previously at @n26, @Scandit, BCG DV and FIFA TMS.

AvdLee/appstoreconnect-swift-sdk 764

The Swift SDK to work with the App Store Connect API from Apple.

BalestraPatrick/CleanClosureXcode 187

An Xcode Source Editor extension to clean the closure syntax.

BalestraPatrick/AppleWatchCalculator 139

A calculator for your Apple Watch but only if you have fingers small enough to press the buttons.

BalestraPatrick/ClangFormatter 85

Xcode Source Editor Extension for clang-format

BalestraPatrick/BadgesGenerator 35

A Swift playground to automatically generate personalized conference badges.

BalestraPatrick/appbuilders18app 30

The App Builders 2018 iOS and Android app built as an experiment in React Native.

BalestraPatrick/EmergencyAPI 15

An API written in Swift for the world emergency phone numbers.

BalestraPatrick/AppleWatchProductHunt 14

An Apple watchapp that displays the top posts from Product Hunt.

a2/Oberholz 9

[WIP] A semi-modal "split view" controller similar to the one used in iOS 10 Maps.

BalestraPatrick/Animoke 9

Animoji Karaoke for your iPhone X.

startedorta/specs-repo-git-scanner

started time in an hour

fork keith/homebrew-core

🍻 Default formulae for the missing package manager for macOS

https://brew.sh

fork in 2 hours

fork keith/shellcheck-py

python3/pip3 wrapper for installing shellcheck

fork in 2 hours

startedMarcStan/jwt

started time in 2 hours

CommitCommentEvent

pull request commentbazelbuild/rules_apple

Add Swift runtime linker options when creating an `apple_binary`.

We found a Contributor License Agreement for you (the sender of this pull request), but were unable to find agreements for all the commit author(s) or Co-authors. If you authored these, maybe you used a different email address in the git commits than was used to sign the CLA (login here to double check)? If these were authored by someone else, then they will need to sign a CLA as well, and confirm that they're okay with these being contributed to Google. In order to pass this check, please resolve this problem and then comment @googlebot I fixed it.. If the bot doesn't comment, it means it doesn't think anything has changed.

ℹ️ Googlers: Go here for more info.

<!-- need_author_cla -->

keith

comment created time in 2 hours

PR opened bazelbuild/rules_apple

Add Swift runtime linker options when creating an `apple_binary`.

PiperOrigin-RevId: 368476099 (cherry picked from commit 45bcf73e983afef23bfac4e58d4db28f83f3dadf)

+21 -1

0 comment

3 changed files

pr created time in 2 hours

CommitCommentEvent

push eventbazelbuild/rules_apple

Tony Allevato

commit sha bbc422cdb5bab8c0cba46b4aca782799fd65be83

API changes to `create_swift_interop_info`. - Require all dependencies' `SwiftInfo`s to be passed instead of implicitly (and unconditionally) traversing `deps`. - Add `requested_features` and `unsupported_features` parameters so rule implementations can provide these values (to be automatically added to the values on the target) as if they were supplying the feature configuration themselves. - Correctly derive a module name if it is not provided. PiperOrigin-RevId: 368653094 (cherry picked from commit 44bf955ce986ca3ab4d73cc58ab4acd732eac48e)

view details

push time in 2 hours

pull request commentbazelbuild/rules_apple

Update `apple_{static,dynamic}_framework_import` to use `create_swift_interop_info`.

requires a rules_swift release prob

keith

comment created time in 2 hours

CommitCommentEvent

PR opened bazelbuild/rules_apple

Update `apple_{static,dynamic}_framework_import` to use `create_swift_interop_info`.

The Swift build rules will use this information instead of the Objc provider to determine which module map/module name to use.

PiperOrigin-RevId: 367438964 (cherry picked from commit 8f5fa94fee0d20a60a44419ee0f7ede2474288c8)

+41 -2

0 comment

1 changed file

pr created time in 2 hours

CommitCommentEvent

PR opened bazelbuild/rules_apple

Use arm64e when compiling arm64 macos_kernel_extensions.

RELNOTES: Apple Silicon kernel extensions must be compiled as arm64e even if other userspace code is compiled for arm64. PiperOrigin-RevId: 367280391 (cherry picked from commit 162721c2ba8cb7f9ee4019f194b79e3444d435c8)

+145 -32

0 comment

5 changed files

pr created time in 2 hours

issue commentbazelbuild/rules_apple

Coverage runner: cannot locate file

You can read a bit more about this problem here https://github.com/bazelbuild/rules_apple/pull/691

For our use case we don't really care about this merging as much so we pass --test_env=LCOV_MERGER=/usr/bin/true to ignore this error

sgammon

comment created time in 3 hours

issue commentbazelbuild/rules_apple

Upload to App Store Connect

Bazel does not provide any integrations for uploading your builds. You can continue to use fastlane or altool to upload bazel built apps

shreyasthiagaraj

comment created time in 3 hours

issue closedbazelbuild/rules_apple

Upload to App Store Connect

Is it possible to automate this using Bazel? I want to enable the equivalent of this: https://docs.fastlane.tools/getting-started/ios/appstore-deployment/

closed time in 3 hours

shreyasthiagaraj

issue commentbackstage/backstage

[Create Form]User doesn't know what has occurred when submitting with errors

Hi @freben I want to suggest if we can add noHtml5Validate as a parameter, we can remove or add that behavior when is needed. so in this case the '@rjsf/core' library doesn't have the ability to focus the first error in the form when noHtml5Validate is true. what do you think about that solution?? Thanks! Regards!

MiguelRamBalt

comment created time in 3 hours

push eventbackstage/backstage

dependabot[bot]

commit sha 909eb5ecc66bedbddd948bf15684c887dd254b96

chore(deps): bump ssri from 6.0.1 to 6.0.2 Bumps [ssri](https://github.com/npm/ssri) from 6.0.1 to 6.0.2. - [Release notes](https://github.com/npm/ssri/releases) - [Changelog](https://github.com/npm/ssri/blob/v6.0.2/CHANGELOG.md) - [Commits](https://github.com/npm/ssri/compare/v6.0.1...v6.0.2) Signed-off-by: dependabot[bot] <support@github.com>

view details

Fredrik Adelöw

commit sha 3b2d4d421ace5511a8be94e235ec97c708bfc564

Merge pull request #5380 from backstage/dependabot/npm_and_yarn/ssri-6.0.2 chore(deps): bump ssri from 6.0.1 to 6.0.2

view details

github-actions[bot]

commit sha 1a532a21a915e1c093962749c19a8689ac7353d4

Version Packages

view details

push time in 4 hours

push eventbackstage/backstage

dependabot[bot]

commit sha 909eb5ecc66bedbddd948bf15684c887dd254b96

chore(deps): bump ssri from 6.0.1 to 6.0.2 Bumps [ssri](https://github.com/npm/ssri) from 6.0.1 to 6.0.2. - [Release notes](https://github.com/npm/ssri/releases) - [Changelog](https://github.com/npm/ssri/blob/v6.0.2/CHANGELOG.md) - [Commits](https://github.com/npm/ssri/compare/v6.0.1...v6.0.2) Signed-off-by: dependabot[bot] <support@github.com>

view details

Fredrik Adelöw

commit sha 3b2d4d421ace5511a8be94e235ec97c708bfc564

Merge pull request #5380 from backstage/dependabot/npm_and_yarn/ssri-6.0.2 chore(deps): bump ssri from 6.0.1 to 6.0.2

view details

push time in 4 hours

delete branch backstage/backstage

delete branch : dependabot/npm_and_yarn/ssri-6.0.2

delete time in 4 hours

PR merged backstage/backstage

chore(deps): bump ssri from 6.0.1 to 6.0.2 dependencies

Bumps ssri from 6.0.1 to 6.0.2. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/npm/ssri/blob/v6.0.2/CHANGELOG.md">ssri's changelog</a>.</em></p> <blockquote> <h2><a href="https://github.com/zkat/ssri/compare/v6.0.1...v6.0.2">6.0.2</a> (2021-04-07)</h2> <h3>Bug Fixes</h3> <ul> <li>backport regex change from 8.0.1 (<a href="https://github.com/zkat/ssri/commit/b30dfdb">b30dfdb</a>), closes <a href="https://github-redirect.dependabot.com/zkat/ssri/issues/19">#19</a></li> </ul> <p><!-- raw HTML omitted --><!-- raw HTML omitted --></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/npm/ssri/commit/b7c8c7c61db89aeb9fbf7596c0ef17071bc216ef"><code>b7c8c7c</code></a> chore(release): 6.0.2</li> <li><a href="https://github.com/npm/ssri/commit/b30dfdb00bb94ddc49a25a85a18fb27afafdfbb1"><code>b30dfdb</code></a> fix: backport regex change from 8.0.1</li> <li>See full diff in <a href="https://github.com/npm/ssri/compare/v6.0.1...v6.0.2">compare view</a></li> </ul> </details> <details> <summary>Maintainer changes</summary> <p>This version was pushed to npm by <a href="https://www.npmjs.com/~nlf">nlf</a>, a new releaser for ssri since your current version.</p> </details> <br />

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


<details> <summary>Dependabot commands and options</summary> <br />

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the Security Alerts page.

</details>

+8 -22

1 comment

1 changed file

dependabot[bot]

pr closed time in 4 hours

startedBalestraPatrick/WhatsNew

started time in 4 hours

push eventtuist/tuist

fortmarek

commit sha 39ffe12e6688a8b96980044fa900a5c0d3bbdbce

Add task options

view details

push time in 4 hours

Pull request review commentbackstage/backstage

Create code-coverage plugin

+/*+ * Copyright 2020 Spotify AB+ *+ * Licensed under the Apache License, Version 2.0 (the "License");+ * you may not use this file except in compliance with the License.+ * You may obtain a copy of the License at+ *+ *     http://www.apache.org/licenses/LICENSE-2.0+ *+ * Unless required by applicable law or agreed to in writing, software+ * distributed under the License is distributed on an "AS IS" BASIS,+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.+ * See the License for the specific language governing permissions and+ * limitations under the License.+ */++import { useApi } from '@backstage/core-api';+import { useEntity } from '@backstage/plugin-catalog-react';+import { Progress, Table, TableColumn } from '@backstage/core';+import {+  Box,+  Card,+  CardContent,+  Modal,+  Tooltip,+  Typography,+} from '@material-ui/core';+import React, { Fragment, useEffect, useState } from 'react';+import { useAsync } from 'react-use';+import { codeCoverageApiRef } from '../../api';+import { Alert } from '@material-ui/lab';+import DescriptionIcon from '@material-ui/icons/Description';+import { FileContent } from './FileContent';++export type FileCoverage = {+  filename: string;+  branchHits: { [branch: number]: number };+  lineHits: { [line: number]: number };+};++type FileStructureObject = Record<string, any>;++type CoverageTableRow = {+  filename?: string;+  files: CoverageTableRow[];+  coverage: number;+  missing: number;+  tracked: number;+  path: string;+  tableData?: { id: number };+};++const buildFileStructure = (row: CoverageTableRow) => {+  const dataGroupedByPath: FileStructureObject = row.files.reduce(+    (acc: FileStructureObject, cur: CoverageTableRow) => {+      let path = cur.filename;+      if (row.path) {+        path = path?.split(`${row.path}/`)[1];

not sure if that'd work... @nissayeva wdyt?

alde

comment created time in 5 hours

issue openedbackstage/backstage

Allow customizations to the User Profile page

<!--- Provide a general summary of the feature request in the Title above -->

Feature Suggestion

Hi there! I'm currently working on a feature which will allow users to update their user profile with more details that they can fill out in the User Settings page. I wanted to see if this is something I could integrate and contribute to the Backstage codebase/what sorts of things I could make configurable so that this is helpful to everyone. An example flow would look like:

  1. I update my profile on my user settings page: heatheralee. I add information like: my preferred modes of communication, my time zone, a short blurb about me.
  2. Someone else searches for the UserEntity heatheralee and finds my UserProfileCard as well as the other information I've added in step 1.

<!--- If you're looking for help, please see https://backstage.io/ ---> <!--- Tell us how we could improve your experience -->

Possible Implementation

<!--- Not obligatory, but ideas as to the implementation of the addition or change -->

  1. Allow users to decide which fields users can author about themselves by adding field name and field type to app-config.yaml file. These fields will come from a predefined set (tbd).
  2. Update plugins/user-settings/src/components/SettingsPage.tsx to iterate through app configuration in step 1 and render form fields.
  3. Once user fills out these fields, update the UserEntity profile to contain added information.
  4. Update plugins/org/src/plugin.ts to include new cards which render custom fields, and allow users to add this in packages/app/src/components/catalog/EntityPage.jsx.

Context

<!--- What are you trying to accomplish? --> With this change, we are enhancing the user profiles with more information. One example of why this is helpful so that when users find owners of services, and they click on the owner username, they can get more information about the owner.

<!--- Providing context (e.g. links to configuration settings, stack trace or log data) --> <!--- helps us come up with a solution that is most useful in the real world -->

created time in 5 hours

Pull request review commentbackstage/backstage

Create code-coverage plugin

+/*+ * Copyright 2021 Spotify AB+ *+ * Licensed under the Apache License, Version 2.0 (the "License");+ * you may not use this file except in compliance with the License.+ * You may obtain a copy of the License at+ *+ *     http://www.apache.org/licenses/LICENSE-2.0+ *+ * Unless required by applicable law or agreed to in writing, software+ * distributed under the License is distributed on an "AS IS" BASIS,+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.+ * See the License for the specific language governing permissions and+ * limitations under the License.+ */+import { Request } from 'express';+import { UrlReader } from '@backstage/backend-common';+import { InputError, NotFoundError } from '@backstage/errors';+import { Entity } from '@backstage/catalog-model';+import { ScmIntegration, ScmIntegrations } from '@backstage/integration';+import {+  AggregateCoverage,+  FileEntry,+  JsonCodeCoverage,+} from './jsoncoverage-types';++export const calculatePercentage = (+  available: number,+  covered: number,+): number => {+  if (available === 0) {+    return 0;+  }+  return parseFloat(((covered / available) * 100).toFixed(2));+};++export const aggregateCoverage = (c: JsonCodeCoverage): AggregateCoverage => {+  let availableLine = 0;+  let coveredLine = 0;+  let availableBranch = 0;+  let coveredBranch = 0;+  c.files.forEach(f => {+    availableLine += Object.keys(f.lineHits).length;+    coveredLine += Object.values(f.lineHits).filter(l => l > 0).length;++    availableBranch += Object.keys(f.branchHits)+      .map(b => parseInt(b, 10))+      .map((b: number) => f.branchHits[b].available)+      .filter(Boolean)+      .reduce((acc, curr) => acc + curr, 0);+    coveredBranch += Object.keys(f.branchHits)+      .map(b => parseInt(b, 10))+      .map((b: number) => f.branchHits[b].covered)+      .filter(Boolean)+      .reduce((acc, curr) => acc + curr, 0);+  });++  return {+    timestamp: c.metadata.generationTime,+    branch: {+      available: availableBranch,+      covered: coveredBranch,+      missed: availableBranch - coveredBranch,+      percentage: calculatePercentage(availableBranch, coveredBranch),+    },+    line: {+      available: availableLine,+      covered: coveredLine,+      missed: availableLine - coveredLine,+      percentage: calculatePercentage(availableLine, coveredLine),+    },+  };+};++export class CoverageUtils {+  constructor(+    readonly scm: Partial<ScmIntegrations>,+    readonly urlReader: Partial<UrlReader>,

yes

alde

comment created time in 5 hours