maticzav / label-sync Goto Github PK
View Code? Open in Web Editor NEW๐ท A delightful companion to manage Github Labels across multiple repositories.
Home Page: https://label-sync.com
License: BSD 3-Clause "New" or "Revised" License
๐ท A delightful companion to manage Github Labels across multiple repositories.
Home Page: https://label-sync.com
License: BSD 3-Clause "New" or "Revised" License
Creating workflows with labels has never been easier.
Currently label-sync
by default removes all the unknown labels from a repository. That is fine most of the times, but sometimes you want to have a more free form label set that allows you to just create things additionally that are not touched by label-sync
.
It would be nice if we could configure this on a repository level.
Seems we have lost the comments on PRs and commits of what Labelsync will do, or did: https://github.com/prisma/prisma-labelsync https://github.com/prisma/prisma-labelsync/pull/272
Unfortunately did not find anything here in repo or FAQ etc.
I think this should work by simply listening for pr.check_passed
event and making sure that a specific label is present in there.
It would be neat if there was a way to output the current configuration, that would make it obsolete to look at the code.
Variants:
gh-pages
branch and made available via GitHub pages. You just open the URL to get the currently active configuration.Current workaround: Rename the labels manually, then execute label-sync
. Then the existing labels do not get deleted and recreated and as such can keep their issues.
C:\Users\Jan\Documents\throwaway\prisma-labelsync>npm install
npm ERR! path C:\Users\Jan\Documents\throwaway\prisma-labelsync\node_modules\label-sync\dist\bin.js
npm ERR! code ENOENT
npm ERR! errno -4058
npm ERR! syscall chmod
npm ERR! enoent ENOENT: no such file or directory, chmod 'C:\Users\Jan\Documents\throwaway\prisma-labelsync\node_modules\label-sync\dist\bin.js'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\Jan\AppData\Roaming\npm-cache\_logs\2020-08-05T18_07_25_098Z-debug.log
This is the package.json
:
{
"name": "prisma-labelsync",
"private": true,
"main": "index.js",
"scripts": {
"make": "ts-node src/main.ts"
},
"dependencies": {
"husky": "4.2.5",
"label-sync": "3.5.0"
},
"devDependencies": {
"prettier": "*",
"ts-node": "*",
"typescript": "*"
},
"husky": {
"hooks": {
"pre-commit": "yarn -s make && git add labelsync.yml"
}
},
"license": "MIT"
}
Running yarn
works.
There is an error with this repository's Renovate configuration that needs to be fixed. As a precaution, Renovate will stop PRs until it is resolved.
Error type: undefined. Note: this is a nested preset so please contact the preset author if you are unable to fix it yourself.
Currently the error message you get when something goes wrong when talking to Github doesn't have any context what exactly the script was trying to do - it just tells you an error happened.
2 examples:
It would be nice if the error message would not just output the error message, but also what it was doing when things went wrong: What URL was it requesting? What action was it trying to execute? What changes did it want to make to the repo? What repo was it working on when the error happened?
Try anything I can think of that could possibly have gone wrong.
If a repo is renamed, would be great if it doesn't break label-sync
Similar to #88, but not on a repository level but for a specific label prefix (which means we have more control):
It would be nice if we could define a label (e.g. topic/*
or epic/*
) that label-sync
would skip and not touch when syncing. That would enable us to use it ad hoc in the repository to have more freestyle grouping, e.g. topic/foo
after we encountered 5 issues about foo
.
Hi. We at The Guild were looking for the ability to do label syncing across multiple repos we have in Github and thats when we found labelsync. Now, the question I have is that, our convention differs from other Github orgs and accounts where we dont host the OSS projects under a single org or a single account but is rather split across multiple accounts like this with the repos hosted against multiple maintainers like so:
https://github.com/dotansimha/graphql-code-generator for GraphQL Codegen
https://github.com/ardatan/graphql-tools for GraphQL Tools
https://github.com/Urigo/graphql-mesh for GraphQL Mesh
https://github.com/the-guild-org/the-guild-website for Guild Website
and so on..
Now, my question is, would a single paid label sync subscription support this across multiple accounts/orgs ? Where should the Github app be installed in such case? I understand that you support unlimited repos in the paid subscription, but is it across unlimited orgs and accounts or a single org/account?
Thanks.
CC: @maticzav
The link in the README is a 404 and I couldn't find it via search https://github.com/marketplace?utf8=%E2%9C%93&query=label+sync?
Current goal of this tool:
Label Sync helps you sync Github labels across multiple repositories.
I suggest to add "... and milestones" to that.
Prisma uses label-sync
, and our software lives in many repositories. We recently switched from using labels (release/preview-5
) to using milestones to plan the work we want to achieve in a sprint.
So previously it was enough to add the preview to the label sync configuration, and it would be created across all repositories. Then we could use label:release/preview-5
in the search to see all the relevant issues.
As GitHub doesn't support cross repository milestones (as it doesn't support cross repository labels), we have to do the same now for milestones and use milestone:"Preview 5"
for search.
But the creation of these milestones is a similar amount of work as creation of labels: They need a name, a description and a due date, if any of that changes we have to go through our growing number of repositories to update it.
(see also https://github.com/prisma/prisma-label-sync/issues/42 where this is mainly copy/pasted from)
It would be neat if label-sync
could handle milestones in a similar way that it handles labels: Define them in code, run the script, everything gets set up or updated for you.
a) Do it manually
b) Use existing tools or services
https://github.com/vanilla/github-sync
https://github.com/matomo-org/github-sync
https://help.codetree.com/en/articles/2605231-working-with-multiple-repositories#codetree-automatically-adds-labels-and-milestones-to-all-repos-in-a-project
c) Create a new tool
We could also create a new thing that does this.
As we are currently using Codetree for other reasons, it might actually be a good solution for us to use it to create and sync the milestones as well. I wanted to create this issue here anyway, as it could really be useful for other users as well - but no real need for us there (until I find something that is broken in Codetree).
I keep having this error popping up the configuration looks good!!!
Steps to reproduce the behavior, please provide code snippets or a repository:
# Colors
# I used this website to get the HEX colors names: http://chir.ag/projects/name-that-color/#E9E0E0
colors:
sunset-orange: &sunset-orange "#ff5050"
peach-orange: &peach-orange "#ffd4a0"
onahau: &onahau "#c0e6ff"
mystic: &mystic "#dfe9e9"
turquoise: &turquoise "#41d6c3"
medium-purple: &medium-purple "#9855d4"
conifer: &conifer "#b4e051"
cerise: &cerise "#db2780"
ebb: &ebb "#e9e0e0"
gold: &gold "#fad401"
# Labels
labels: &default-lables
"blocker":
color: &sunset-orange
"bug":
color: &sunset-orange
description: Something isn't working.
"hotfix":
color: &sunset-orange
"cleanup":
color: &peach-orange
"refactor":
color: &peach-orange
"technical debt":
color: &peach-orange
"documentation":
color: &onahau
description: Improvements or additions to documentation.
"duplicate":
color: &mystic
description: This issue or pull request already exists.
"invalid":
color: &mystic
description: This doesn't seem right.
"on hold":
color: &mystic
"wontfix":
color: &mystic
description: This will not be worked on.
"enhancement":
color: &turquoise
description: New feature or request.
"optimization":
color: &turquoise
"epic":
color: &medium-purple
"feature":
color: &conifer
"help-wanted":
color: &cerise
description: Extra attention is needed.
"prototype":
color: &cerise
"question":
color: &cerise
description: Further information is requested.
"ready-for-review":
color: &cerise
"local":
color: &ebb
description: Local environment.
"production":
color: &ebb
description: Production environment.
"staging":
color: &ebb
description: Staging environment.
"under-consideration":
color: &gold
# Repositories
repos:
api:
config:
removeUnconfiguredLabels: false
labels:
<<: *default-lables
front-end:
config:
removeUnconfiguredLabels: false
labels:
<<: *default-lables
portfoy:
config:
removeUnconfiguredLabels: false
labels:
<<: *default-lables
admin:
config:
removeUnconfiguredLabels: false
labels:
<<: *default-lables
mail:
config:
removeUnconfiguredLabels: false
labels:
<<: *default-lables
our configuration seems a bit strange. Here's what I am having problems with:
Invalid value null supplied to : { repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) } }/repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) }/api: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } })/1: { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }/labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) }/blocker: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>)/0: { color: string }/color: string
Invalid value null supplied to : { repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) } }/repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) }/api: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } })/1: { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }/labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) }/bug: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>)/0: { color: string }/color: string
Invalid value null supplied to : { repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) } }/repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) }/api: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } })/1: { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }/labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) }/hotfix: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>)/0: { color: string }/color: string
Invalid value null supplied to : { repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) } }/repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) }/api: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } })/1: { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }/labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) }/cleanup: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>)/0: { color: string }/color: string
Invalid value null supplied to : { repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) } }/repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) }/api: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } })/1: { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }/labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) }/refactor: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>)/0: { color: string }/color: string
Invalid value null supplied to : { repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) } }/repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) }/api: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } })/1: { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }/labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) }/technical debt: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>)/0: { color: string }/color: string
Invalid value null supplied to : { repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) } }/repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) }/api: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } })/1: { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }/labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) }/documentation: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>)/0: { color: string }/color: string
Invalid value null supplied to : { repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) } }/repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) }/api: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } })/1: { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }/labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) }/duplicate: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>)/0: { color: string }/color: string
Invalid value null supplied to : { repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) } }/repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) }/api: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } })/1: { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }/labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) }/invalid: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>)/0: { color: string }/color: string
Invalid value null supplied to : { repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) } }/repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) }/api: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } })/1: { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }/labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) }/on hold: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>)/0: { color: string }/color: string
Invalid value null supplied to : { repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) } }/repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) }/api: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } })/1: { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }/labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) }/wontfix: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>)/0: { color: string }/color: string
Invalid value null supplied to : { repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) } }/repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) }/api: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } })/1: { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }/labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) }/enhancement: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>)/0: { color: string }/color: string
Invalid value null supplied to : { repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) } }/repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) }/api: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } })/1: { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }/labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) }/optimization: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>)/0: { color: string }/color: string
Invalid value null supplied to : { repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) } }/repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) }/api: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } })/1: { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }/labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) }/epic: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>)/0: { color: string }/color: string
Invalid value null supplied to : { repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) } }/repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) }/api: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } })/1: { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }/labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) }/feature: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>)/0: { color: string }/color: string
Invalid value null supplied to : { repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) } }/repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) }/api: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } })/1: { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }/labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) }/help-wanted: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>)/0: { color: string }/color: string
Invalid value null supplied to : { repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) } }/repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) }/api: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } })/1: { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }/labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) }/prototype: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>)/0: { color: string }/color: string
Invalid value null supplied to : { repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) } }/repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) }/api: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } })/1: { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }/labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) }/question: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>)/0: { color: string }/color: string
Invalid value null supplied to : { repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) } }/repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) }/api: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } })/1: { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }/labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) }/ready-for-review: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>)/0: { color: string }/color: string
Invalid value null supplied to : { repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) } }/repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) }/api: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } })/1: { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }/labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) }/local: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>)/0: { color: string }/color: string
Invalid value null supplied to : { repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) } }/repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) }/api: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } })/1: { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }/labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) }/production: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>)/0: { color: string }/color: string
Invalid value null supplied to : { repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array, alias: Array }>) } }) } }/repos: { [K in string]: (Partial<{ config: Partial<{ removeUnconfiguredLabels: boolean }> }> & { labels: { [K in string]: ({ color: string } & Partial<{ description: string, siblings: Array
Let's try to reproduce.
Did it change the description? Color? Something else?
A diff
style view of the old vs. new config for that label could be a simple way to output this in the log that could explain what is going on. More structured output ala "Color was change from #000 to #fff" would work as well of course.
Having a label with an alias equal to itself seems to hang the dry-run process.
I have a simple yml based on the setup one from yarn. While editing for my use, I ended up creating this entry:
"bug":
color: &bug
description: A bug
alias: ["bug"]
I assume an alias being the same as the name is causing some unexpected behavior.
Either an error if this isn't allowed, or the job finishing within normal time frames. A cancel button to stop the action once it starts misbehaving would also be nice.
20+ Minutes running, closing the PR or deleting the branch don't seem to cancel it.
Over at https://github.com/prisma/prisma-label-sync we use siblings
for bug qualification: bug/0-need-info
, bug/1-has-repo
and bug/2-confirmed
are configured to have kind/bug
as siblings:
Now we introduced kind/regression
which is a kind/bug
with some additional meaning.
How can I configure that so that the tool is happy for the bug/*
labels with either kind/bug
or kind/regression
? Currently it re-adds kind/bug
to all the kind/regression
only issues.
This would enable e.g. users to benefit from vscode extensions that render colors inline. Original use-case raised here. Example:
Happy to make a PR for this :)
It would be neat for observability if all actions taken by the tool would be posted to a Slack channel additionally to the output in the CI logs.
Ideally changing a label definition on master results in an automatic label update in all configured repositories via a script that's run on CircleCI for every commit on master.
...
Describe your question in as much detail as possible.
If possible include context, source of the problem, and the end goal you are trying to achieve.
I encourage you to try and make an issue with one of the other templates before submitting the general form.
I have a .yml file and when I make a commit the bot runs and says the format is unknown to it. I am using vscode and it looks like a yaml file so I don't know where to check to ensure its the right file and format for the bot to process
Blocked by Financial-Times/github-label-sync#19
Example prisma-labs/prisma-labs-labelsync#1
starting template
link has a typo and navigates to a 404This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.
These updates are currently rate limited. Click on a checkbox below to force their creation now.
@types/jest
, jest
, ts-jest
)node
, @types/node
)These updates are pending. To force PRs open, click the checkbox below.
These updates have all been created already. Click a checkbox below to force a retry/rebase of any.
@prisma/cli
, @prisma/client
)js-yaml
, @types/js-yaml
)stripe
, @types/stripe
)react
, react-dom
)app/package.json
@graywolfai/react-heroicons 1.3.0
next 9.5.5
react 16.14.0
react-dom 16.14.0
react-transition-group 4.4.2
@tailwindcss/ui 0.7.2
@types/react 16.14.28
@types/react-dom 16.9.16
@types/react-transition-group 4.4.5
autoprefixer 9.8.8
tailwindcss 1.9.6
typescript 3.9.10
package.json
@types/jest 26.0.24
chalk 4.1.2
codecov 3.8.2
execa 4.1.0
husky 4.3.8
jest 26.6.3
jest-serializer-ansi 1.0.3
lerna 3.22.1
prettier 2.7.1
pretty-quick 3.1.3
ts-jest 26.5.6
ts-node 9.1.1
typescript 4.0.5
packages/create-label-sync/package.json
chalk ^4.1.0
creato ^1.0.5
handlebars ^4.7.6
inquirer ^7.3.3
meow ^9.0.0
multilines ^1.0.3
ora ^5.2.0
prettier ^2.2.1
@types/inquirer 7.3.3
@types/meow 5.0.0
@types/node 14.18.21
@types/prettier 2.6.3
packages/label-sync/package.json
js-yaml ^3.14.0
@types/js-yaml 3.12.7
@types/node 14.18.21
server/package.json
@octokit/rest 18.12.0
@prisma/client 2.12.1
body-parser 1.20.0
cors 2.8.5
express 4.18.1
fp-ts 2.12.1
handlebars 4.7.7
io-ts 2.2.16
js-yaml 3.14.1
jsonwebtoken 8.5.1
lodash 4.17.21
moment 2.29.3
multilines 1.0.3
prettier 2.7.1
probot 9.15.1
query-string 6.14.1
stripe 8.125.0
winston 3.8.0
@prisma/cli 2.12.1
@types/cors 2.8.12
@types/express 4.17.13
@types/jest 26.0.24
@types/js-yaml 3.12.7
@types/jsonwebtoken 8.5.8
@types/nock 11.1.0
@types/node 14.18.21
@types/prettier 2.6.3
@types/request-promise-native 1.0.18
@types/stripe 7.13.25
codecov 3.8.2
execa 4.1.0
js-yaml 3.14.1
lerna 3.22.1
nock 13.2.7
request 2.88.2
request-promise-native 1.0.9
ts-node 9.1.1
typescript 4.0.5
templates/typescript/package.json
husky latest
label-sync latest
prettier *
ts-node *
typescript *
web/package.json
@stripe/stripe-js 1.32.0
lodash 4.17.21
multilines 1.0.3
next 9.5.5
prop-types 15.8.1
react 17.0.2
react-dom 17.0.2
react-transition-group 4.4.2
react-typist 2.0.5
swr 0.5.7
@tailwindcss/ui 0.7.2
@types/lodash 4.14.182
@types/node 14.18.21
@types/react 16.14.28
@types/react-dom 16.9.16
@types/react-transition-group 4.4.5
@types/react-typist 2.0.3
autoprefixer 9.8.8
tailwindcss 1.9.6
typescript 4.0.5
.nvmrc
node 13.14.0
It seems like the organization's repository-create endpoint doesn't work for personal accounts and there's no other endpoint available.
If you know how this could be fixed, please let me know in the comments, or make a PR.
Thanks! ๐ ๐
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.