All files / src config.ts

100% Statements 3/3
90% Branches 9/10
100% Functions 1/1
100% Lines 3/3

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39                                                  3x 3x   3x                    
import type { PublishContext, GlobalConfig, VerifyConditionsContext } from 'semantic-release';
import { Forgejo } from './services/forgejo';
import { defined } from './utils/guards';
 
export type PluginConfig = Pick<GlobalConfig, 'branches' | 'repositoryUrl' | 'tagFormat' | 'dryRun'> & {
  forgejoUrl?: string;
  forgejoToken?: string;
  assets?: (string | Forgejo.ReleaseAsset)[];
  draftRelease?: boolean;
};
 
export type Config = {
  forgejoUrl: string;
  forgejoToken: string;
  assets: (string | Forgejo.ReleaseAsset)[];
  slug?: string;
  owner?: string;
  repositoryName?: string;
  draftRelease: boolean;
};
 
export default function resolveConfig(
  { forgejoUrl, forgejoToken, assets, draftRelease }: PluginConfig,
  { env }: PublishContext | VerifyConditionsContext
): Config {
  const slug = env.FORGEJO_REPOSITORY;
  const [owner, repositoryName] = slug?.split('/') ?? [];
 
  return {
    forgejoUrl: forgejoUrl ?? env.FORGEJO_URL,
    forgejoToken: forgejoToken ?? env.FORGEJO_TOKEN,
    assets: assets ?? [],
    slug,
    owner,
    repositoryName,
    draftRelease: defined(draftRelease) ? draftRelease : false,
  };
}