feat: more work on form decorators

Signed-off-by: blam <ben@blam.sh>
This commit is contained in:
blam
2024-10-28 16:22:34 +01:00
parent 8d732a8d75
commit 7e3ca8be71
13 changed files with 109 additions and 68 deletions
+12
View File
@@ -26,6 +26,9 @@ import {
discoveryApiRef,
} from '@backstage/core-plugin-api';
import { AuthProxyDiscoveryApi } from './AuthProxyDiscoveryApi';
import { formDecoratorsApiRef } from '@backstage/plugin-scaffolder/alpha';
import { DefaultScaffolderFormDecoratorsApi } from '@backstage/plugin-scaffolder/alpha';
import { mockDecorator } from './components/scaffolder/decorators';
export const apis: AnyApiFactory[] = [
createApiFactory({
@@ -39,5 +42,14 @@ export const apis: AnyApiFactory[] = [
factory: ({ configApi }) => ScmIntegrationsApi.fromConfig(configApi),
}),
createApiFactory({
api: formDecoratorsApiRef,
deps: {},
factory: () =>
DefaultScaffolderFormDecoratorsApi.create({
decorators: [mockDecorator],
}),
}),
ScmAuth.createDefaultApiFactory(),
];
@@ -0,0 +1,33 @@
/*
* Copyright 2024 The Backstage Authors
*
* 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 { githubAuthApiRef } from '@backstage/core-plugin-api';
import { createScaffolderFormDecorator } from '@backstage/plugin-scaffolder-react/alpha';
export const mockDecorator = createScaffolderFormDecorator({
id: 'githubOauth',
schema: {
input: {
test: z => z.string(),
},
},
deps: {
githubApi: githubAuthApiRef,
},
fn: async ({ setSecrets }, { githubApi }) => {
const token = await githubApi.getAccessToken();
setSecrets(state => ({ ...state, GITHUB_TOKEN: token }));
},
});