Skip to content

Commit cec10e8

Browse files
feat: add contributing doc
1 parent 2e2d4e0 commit cec10e8

File tree

1 file changed

+116
-0
lines changed

1 file changed

+116
-0
lines changed

CONTRIBUTING.md

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
## Local setup
2+
3+
Clone the reposistory to your machine and install the required dependencies.
4+
5+
### Create a virtual environment
6+
7+
```fish
8+
python3 -m venv.venv
9+
```
10+
11+
### Install dependencies
12+
13+
```fish
14+
pip install -r requirements.txt
15+
```
16+
17+
### Demo script
18+
19+
This demo python script will create, read, update and delete secrets via the SDK. Just update the host, app, env and token constants at the top.
20+
21+
```python
22+
from src.phase import Phase, CreateSecretsOptions, GetAllSecretsOptions, UpdateSecretOptions, DeleteSecretOptions
23+
24+
CONSOLE_HOST = 'https://console.phase.dev'
25+
APP_NAME = '<app-name>'
26+
ENV_NAME = "<env-name>"
27+
TOKEN = '<service-token>'
28+
29+
# Initialize the Phase object with host and service token
30+
phase = Phase(init=False,
31+
pss=TOKEN,
32+
host=CONSOLE_HOST)
33+
34+
# Create secrets with references
35+
create_options = CreateSecretsOptions(
36+
env_name=ENV_NAME,
37+
app_name=APP_NAME,
38+
key_value_pairs=[
39+
{"BASE_URL": "https://api.example.com"},
40+
{"API_ENDPOINT": "${BASE_URL}/v1/data"},
41+
{"NESTED_REF": "Nested ${API_ENDPOINT}"}
42+
]
43+
)
44+
create_result = phase.create_secrets(create_options)
45+
print(f"Create secrets result: {create_result}")
46+
47+
# Read and resolve references
48+
get_options = GetAllSecretsOptions(
49+
env_name=ENV_NAME,
50+
app_name=APP_NAME
51+
)
52+
secrets = phase.get_all_secrets(get_options)
53+
54+
resolved_secrets = phase.resolve_references(secrets, ENV_NAME, APP_NAME)
55+
56+
print("\nResolved Secrets:")
57+
print("----------------")
58+
for secret in resolved_secrets:
59+
print(f"{secret.key}: {secret.value}")
60+
61+
# Update secrets
62+
update_options = UpdateSecretOptions(
63+
env_name=ENV_NAME,
64+
app_name=APP_NAME,
65+
key="BASE_URL",
66+
value="https://api.acme.com",
67+
secret_path="/",
68+
destination_path="/", # Optional: move secret to a new path
69+
override=False, # Optional: create a personal override
70+
toggle_override=False # Optional: toggle personal override
71+
)
72+
update_result = phase.update_secret(update_options)
73+
74+
print(f"\nUpdate secrets result: {update_result}")
75+
print("----------------")
76+
77+
78+
## Refetch secrets
79+
secrets = phase.get_all_secrets(get_options)
80+
81+
resolved_secrets = phase.resolve_references(secrets, ENV_NAME, APP_NAME)
82+
83+
print("\nResolved Secrets:")
84+
print("----------------")
85+
for secret in resolved_secrets:
86+
print(f"{secret.key}: {secret.value}")
87+
88+
89+
# Delete secrets
90+
delete_options = DeleteSecretOptions(
91+
env_name=ENV_NAME,
92+
app_name=APP_NAME,
93+
key_to_delete="BASE_URL",
94+
secret_path="/"
95+
)
96+
result = phase.delete_secret(delete_options)
97+
print(f"Delete result: {result}")
98+
99+
## Refetch secrets
100+
secrets = phase.get_all_secrets(get_options)
101+
102+
resolved_secrets = phase.resolve_references(secrets, ENV_NAME, APP_NAME)
103+
104+
print("\nResolved Secrets:")
105+
print("----------------")
106+
for secret in resolved_secrets:
107+
print(f"{secret.key}: {secret.value}")
108+
```
109+
110+
## Running Tests
111+
112+
Run the test suite with:
113+
114+
```fish
115+
python -m pytest -v tests/
116+
```

0 commit comments

Comments
 (0)