github_secrets package

Python API and CLI for managing Github secrets

Submodules

github_secrets.app module

class github_secrets.app.GithubSecretsApp(config_path=None)[source]

Bases: object

__init__(config_path=None)[source]
add_exclude_repository(name)[source]
add_repository(name)[source]
add_secret(name, value, repository=None)[source]
Return type

bool

bootstrap_repositories()[source]
check()[source]
create_profile(name, path=None)[source]
Return type

bool

delete_profile(name)[source]
Return type

bool

record_sync_for_all_repos_and_secrets()[source]
remove_exclude_repository(name)[source]
remove_repository(name)[source]
remove_secret(name, repository=None)[source]
reset_sync_for_all_repos_and_secrets()[source]
save()[source]
set_profile(name)[source]
Return type

bool

set_token(value)[source]
sync_secret(name, repository=None, verbose=False)[source]
sync_secrets(repository=None, verbose=False)[source]

github_secrets.cli module

github_secrets.cli.app: github_secrets.app.GithubSecretsApp

github_secrets.config module

class github_secrets.config.GlobalSecrets(**data)[source]

Bases: pydantic.main.BaseModel

add_secret(secret)[source]
get_secret(name)[source]
Return type

Secret

has_secret(name)[source]
remove_secret(name)[source]
secrets: List[github_secrets.config.Secret]
property sync_configs: Set[github_secrets.config.SyncConfig]
Return type

Set[SyncConfig]

update_secret(secret)[source]
class github_secrets.config.Profile(**data)[source]

Bases: pydantic.main.BaseModel

config_path: pathlib.Path
name: str
class github_secrets.config.RepositorySecrets(**data)[source]

Bases: pydantic.main.BaseModel

add_secret(secret, repository)[source]
Return type

bool

get_secret(name, repository)[source]
remove_secret(name, repository)[source]
repository_has_secret(name, repository)[source]
secrets: Dict[str, List[github_secrets.config.Secret]]
property sync_configs: Set[github_secrets.config.SyncConfig]
Return type

Set[SyncConfig]

update_secret(secret, repository)[source]
class github_secrets.config.Secret(**data)[source]

Bases: pydantic.main.BaseModel

created: datetime.datetime
name: str
update(value)[source]
updated: datetime.datetime
value: str
class github_secrets.config.SecretsAppConfig(_env_file='<object object>', _env_file_encoding=None, _secrets_dir=None, **values)[source]

Bases: pyappconf.model.BaseConfig

add_profile(name, path=None)[source]
current_profile: github_secrets.config.Profile
delete_profile(name)[source]
get_profile(name)[source]
Return type

Profile

profile_exists(name)[source]
profiles: List[github_secrets.config.Profile]
set_profile(name)[source]
class github_secrets.config.SecretsConfig(_env_file='<object object>', _env_file_encoding=None, _secrets_dir=None, **values)[source]

Bases: pyappconf.model.BaseConfig

class Config[source]

Bases: object

env_prefix = 'GH_SECRETS_'
add_exclude_repository(name)[source]
add_repository(name)[source]
bootstrap_repositories()[source]
Return type

Set[str]

exclude_repositories: Optional[List[str]]
github_token: str
global_secrets: github_secrets.config.GlobalSecrets
include_repositories: Optional[List[str]]
property new_repositories: List[str]
Return type

List[str]

record_sync_for_all_repos_and_secrets()[source]
record_sync_for_repo(secret, repository)[source]
Return type

bool

remove_exclude_repository(name)[source]
remove_repository(name)[source]
property repositories: List[str]
Return type

List[str]

repository_secrets: github_secrets.config.RepositorySecrets
repository_secrets_last_synced: Dict[str, List[github_secrets.config.SyncRecord]]
secret_last_synced(name, repository)[source]
Return type

datetime

property sync_configs: Set[github_secrets.config.SyncConfig]
Return type

Set[SyncConfig]

property unsynced_secrets: List[github_secrets.config.SyncConfig]
Return type

List[SyncConfig]

class github_secrets.config.SyncConfig(**data)[source]

Bases: pydantic.main.BaseModel

property global_: bool
Return type

bool

repository: Optional[str]
secret_name: str
class github_secrets.config.SyncRecord(**data)[source]

Bases: pydantic.main.BaseModel

last_updated: datetime.datetime
secret_name: str

github_secrets.console_styles module

github_secrets.console_styles.create_style(string)[source]
Return type

str

github_secrets.console_styles.created()[source]
Return type

str

github_secrets.console_styles.delete_style(string)[source]
Return type

str

github_secrets.console_styles.deleted()[source]
Return type

str

github_secrets.console_styles.excluded()[source]
Return type

str

github_secrets.console_styles.global_()[source]
Return type

str

github_secrets.console_styles.included()[source]
Return type

str

github_secrets.console_styles.local()[source]
Return type

str

github_secrets.console_styles.name_style(string)[source]
Return type

str

github_secrets.console_styles.saved()[source]
Return type

str

github_secrets.console_styles.scope_style(string)[source]
Return type

str

github_secrets.console_styles.set_()[source]
Return type

str

github_secrets.console_styles.sync_style(string)[source]
Return type

str

github_secrets.console_styles.synced()[source]
Return type

str

github_secrets.console_styles.syncing()[source]
Return type

str

github_secrets.console_styles.updated()[source]
Return type

str

github_secrets.exc module

exception github_secrets.exc.GithubSecretsException[source]

Bases: Exception

exception github_secrets.exc.GlobalSecretDoesNotExistException[source]

Bases: github_secrets.exc.SecretDoesNotExistException

exception github_secrets.exc.ProfileDoesNotExistException[source]

Bases: github_secrets.exc.ProfileException

exception github_secrets.exc.ProfileException[source]

Bases: github_secrets.exc.GithubSecretsException

exception github_secrets.exc.RepositoryAlreadyExistsException[source]

Bases: github_secrets.exc.GithubSecretsException

exception github_secrets.exc.RepositoryDoesNotExistException[source]

Bases: github_secrets.exc.GithubSecretsException

exception github_secrets.exc.RepositoryException[source]

Bases: github_secrets.exc.GithubSecretsException

exception github_secrets.exc.RepositoryIsExcludedException[source]

Bases: github_secrets.exc.GithubSecretsException

exception github_secrets.exc.RepositoryIsIncludedException[source]

Bases: github_secrets.exc.GithubSecretsException

exception github_secrets.exc.RepositoryNotInSecretsException[source]

Bases: github_secrets.exc.GithubSecretsException

exception github_secrets.exc.RepositorySecretDoesNotExistException[source]

Bases: github_secrets.exc.SecretDoesNotExistException

exception github_secrets.exc.SecretDoesNotExistException[source]

Bases: github_secrets.exc.GithubSecretsException

exception github_secrets.exc.SecretHasNotBeenSyncedException[source]

Bases: github_secrets.exc.GithubSecretsException

github_secrets.git module

github_secrets.git.get_repository(name, access_token)[source]
Return type

Repository

github_secrets.git.get_repository_names(access_token)[source]
Return type

List[str]

github_secrets.git.update_secret(secret, repo_name, access_token)[source]
Return type

bool

Returns

Whether secret was newly created (False when just updated)

github_secrets.manager module

class github_secrets.manager.HasStr(*args, **kwargs)[source]

Bases: typing_extensions.

class github_secrets.manager.SecretsManager(config_path=None)[source]

Bases: object

__init__(config_path=None)[source]
add_exclude_repository(name)[source]
Return type

bool

add_repository(name)[source]
Return type

bool

add_secret(name, value, repository=None)[source]
Return type

bool

bootstrap_repositories()[source]
check()[source]
Return type

bool

record_sync_for_all_repos_and_secrets()[source]
remove_exclude_repository(name)[source]
Return type

bool

remove_repository(name)[source]
Return type

bool

remove_secret(name, repository=None)[source]
reset_sync_for_all_repos_and_secrets()[source]
save()[source]
set_token(token)[source]
sync_secret(name, repository=None, verbose=False)[source]
sync_secrets(repository=None, verbose=False)[source]