chipfoundry-cli 2.2.2__py3-none-any.whl → 2.3.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- chipfoundry_cli/main.py +53 -29
- {chipfoundry_cli-2.2.2.dist-info → chipfoundry_cli-2.3.0.dist-info}/METADATA +1 -1
- chipfoundry_cli-2.3.0.dist-info/RECORD +8 -0
- chipfoundry_cli-2.2.2.dist-info/RECORD +0 -8
- {chipfoundry_cli-2.2.2.dist-info → chipfoundry_cli-2.3.0.dist-info}/LICENSE +0 -0
- {chipfoundry_cli-2.2.2.dist-info → chipfoundry_cli-2.3.0.dist-info}/WHEEL +0 -0
- {chipfoundry_cli-2.2.2.dist-info → chipfoundry_cli-2.3.0.dist-info}/entry_points.txt +0 -0
chipfoundry_cli/main.py
CHANGED
|
@@ -323,7 +323,16 @@ def init(project_root, shuttle, description):
|
|
|
323
323
|
config = load_user_config()
|
|
324
324
|
username = config.get("sftp_username")
|
|
325
325
|
if not username:
|
|
326
|
-
|
|
326
|
+
try:
|
|
327
|
+
me = _api_get("/auth/cli/whoami")
|
|
328
|
+
username = me.get("sftp_username")
|
|
329
|
+
if username:
|
|
330
|
+
config["sftp_username"] = username
|
|
331
|
+
save_user_config(config)
|
|
332
|
+
except SystemExit:
|
|
333
|
+
pass
|
|
334
|
+
if not username:
|
|
335
|
+
console.print("[bold red]No SFTP account linked to your platform account. Please run 'cf login' first.[/bold red]")
|
|
327
336
|
raise click.Abort()
|
|
328
337
|
|
|
329
338
|
gds_dir = Path(project_root) / 'gds'
|
|
@@ -1313,10 +1322,14 @@ def push(project_root, sftp_host, sftp_username, sftp_key, project_id, project_n
|
|
|
1313
1322
|
console.print("Run [bold]cf login[/bold] to authenticate before pushing.")
|
|
1314
1323
|
raise click.Abort()
|
|
1315
1324
|
if not sftp_username:
|
|
1316
|
-
|
|
1325
|
+
me = _api_get("/auth/cli/whoami")
|
|
1326
|
+
sftp_username = me.get("sftp_username")
|
|
1317
1327
|
if not sftp_username:
|
|
1318
|
-
console.print("[bold red]No SFTP
|
|
1328
|
+
console.print("[bold red]No SFTP account linked to your platform account.[/bold red]")
|
|
1329
|
+
console.print("Contact support or provide --sftp-username.")
|
|
1319
1330
|
raise click.Abort()
|
|
1331
|
+
config["sftp_username"] = sftp_username
|
|
1332
|
+
save_user_config(config)
|
|
1320
1333
|
if not sftp_key:
|
|
1321
1334
|
sftp_key = config.get("sftp_key")
|
|
1322
1335
|
|
|
@@ -1495,10 +1508,14 @@ def pull(project_name, output_dir, sftp_host, sftp_username, sftp_key):
|
|
|
1495
1508
|
console.print("Run [bold]cf login[/bold] to authenticate before pulling.")
|
|
1496
1509
|
raise click.Abort()
|
|
1497
1510
|
if not sftp_username:
|
|
1498
|
-
|
|
1511
|
+
me = _api_get("/auth/cli/whoami")
|
|
1512
|
+
sftp_username = me.get("sftp_username")
|
|
1499
1513
|
if not sftp_username:
|
|
1500
|
-
console.print("[bold red]No SFTP
|
|
1514
|
+
console.print("[bold red]No SFTP account linked to your platform account.[/bold red]")
|
|
1515
|
+
console.print("Contact support or provide --sftp-username.")
|
|
1501
1516
|
raise click.Abort()
|
|
1517
|
+
config["sftp_username"] = sftp_username
|
|
1518
|
+
save_user_config(config)
|
|
1502
1519
|
if not sftp_key:
|
|
1503
1520
|
sftp_key = config.get("sftp_key")
|
|
1504
1521
|
|
|
@@ -1751,10 +1768,14 @@ def status(sftp_host, sftp_username, sftp_key, json_output, show_all):
|
|
|
1751
1768
|
if not platform_id:
|
|
1752
1769
|
console.print("[dim]Tip: Run [bold]cf link[/bold] to connect this project to the platform.[/dim]\n")
|
|
1753
1770
|
if not sftp_username:
|
|
1754
|
-
|
|
1771
|
+
me = _api_get("/auth/cli/whoami")
|
|
1772
|
+
sftp_username = me.get("sftp_username")
|
|
1755
1773
|
if not sftp_username:
|
|
1756
|
-
console.print("[red]No SFTP
|
|
1774
|
+
console.print("[red]No SFTP account linked to your platform account.[/red]")
|
|
1775
|
+
console.print("Contact support or provide --sftp-username.")
|
|
1757
1776
|
raise click.Abort()
|
|
1777
|
+
config["sftp_username"] = sftp_username
|
|
1778
|
+
save_user_config(config)
|
|
1758
1779
|
if not sftp_key:
|
|
1759
1780
|
sftp_key = config.get("sftp_key")
|
|
1760
1781
|
|
|
@@ -1885,10 +1906,14 @@ def tapeouts(sftp_host, sftp_username, sftp_key, limit, days):
|
|
|
1885
1906
|
"""Show all tapeout runs (archived projects) with their timestamps."""
|
|
1886
1907
|
config = load_user_config()
|
|
1887
1908
|
if not sftp_username:
|
|
1888
|
-
|
|
1909
|
+
me = _api_get("/auth/cli/whoami")
|
|
1910
|
+
sftp_username = me.get("sftp_username")
|
|
1889
1911
|
if not sftp_username:
|
|
1890
|
-
console.print("[red]No SFTP
|
|
1912
|
+
console.print("[red]No SFTP account linked to your platform account.[/red]")
|
|
1913
|
+
console.print("Contact support or provide --sftp-username.")
|
|
1891
1914
|
raise click.Abort()
|
|
1915
|
+
config["sftp_username"] = sftp_username
|
|
1916
|
+
save_user_config(config)
|
|
1892
1917
|
if not sftp_key:
|
|
1893
1918
|
sftp_key = config.get("sftp_key")
|
|
1894
1919
|
|
|
@@ -2071,10 +2096,14 @@ def confirm(project_root, sftp_host, sftp_username, sftp_key, project_name):
|
|
|
2071
2096
|
# Load user config for defaults
|
|
2072
2097
|
config = load_user_config()
|
|
2073
2098
|
if not sftp_username:
|
|
2074
|
-
|
|
2099
|
+
me = _api_get("/auth/cli/whoami")
|
|
2100
|
+
sftp_username = me.get("sftp_username")
|
|
2075
2101
|
if not sftp_username:
|
|
2076
|
-
console.print("[bold red]No SFTP
|
|
2102
|
+
console.print("[bold red]No SFTP account linked to your platform account.[/bold red]")
|
|
2103
|
+
console.print("Contact support or provide --sftp-username.")
|
|
2077
2104
|
raise click.Abort()
|
|
2105
|
+
config["sftp_username"] = sftp_username
|
|
2106
|
+
save_user_config(config)
|
|
2078
2107
|
if not sftp_key:
|
|
2079
2108
|
sftp_key = config.get("sftp_key")
|
|
2080
2109
|
|
|
@@ -3275,10 +3304,10 @@ def precheck(project_root, skip_checks, magic_drc, checks, dry_run):
|
|
|
3275
3304
|
if checks:
|
|
3276
3305
|
precheck_args.extend(list(checks))
|
|
3277
3306
|
|
|
3278
|
-
inner_cmd = 'pip3 install --upgrade -q --root-user-action=ignore cf-precheck 2>/dev/null && cf-precheck ' + ' '.join(precheck_args)
|
|
3307
|
+
inner_cmd = 'pip3 install --upgrade -q --root-user-action=ignore cf-precheck 2>/dev/null && exec cf-precheck ' + ' '.join(precheck_args)
|
|
3279
3308
|
|
|
3280
3309
|
docker_cmd = [
|
|
3281
|
-
'docker', 'run', '--rm',
|
|
3310
|
+
'docker', 'run', '--rm', '--init',
|
|
3282
3311
|
'-v', f'{project_root_path}:{project_root_path}',
|
|
3283
3312
|
'-v', f'{pdk_root}:{pdk_root}',
|
|
3284
3313
|
'-e', f'PDK_ROOT={pdk_root}',
|
|
@@ -3328,11 +3357,7 @@ def precheck(project_root, skip_checks, magic_drc, checks, dry_run):
|
|
|
3328
3357
|
console.print("[cyan]Running cf-precheck...[/cyan]\n")
|
|
3329
3358
|
|
|
3330
3359
|
try:
|
|
3331
|
-
process = subprocess.Popen(
|
|
3332
|
-
docker_cmd,
|
|
3333
|
-
preexec_fn=os.setsid if os.name != 'nt' else None
|
|
3334
|
-
)
|
|
3335
|
-
|
|
3360
|
+
process = subprocess.Popen(docker_cmd)
|
|
3336
3361
|
returncode = process.wait()
|
|
3337
3362
|
|
|
3338
3363
|
console.print("")
|
|
@@ -3348,17 +3373,11 @@ def precheck(project_root, skip_checks, magic_drc, checks, dry_run):
|
|
|
3348
3373
|
except KeyboardInterrupt:
|
|
3349
3374
|
console.print("\n[yellow]⚠[/yellow] Precheck interrupted by user")
|
|
3350
3375
|
try:
|
|
3351
|
-
|
|
3352
|
-
|
|
3353
|
-
|
|
3354
|
-
|
|
3355
|
-
|
|
3356
|
-
process.wait(timeout=5)
|
|
3357
|
-
except Exception:
|
|
3358
|
-
if os.name != 'nt':
|
|
3359
|
-
os.killpg(os.getpgid(process.pid), signal.SIGKILL)
|
|
3360
|
-
else:
|
|
3361
|
-
process.kill()
|
|
3376
|
+
process.terminate()
|
|
3377
|
+
process.wait(timeout=10)
|
|
3378
|
+
except (subprocess.TimeoutExpired, Exception):
|
|
3379
|
+
process.kill()
|
|
3380
|
+
sys.exit(130)
|
|
3362
3381
|
except Exception as e:
|
|
3363
3382
|
console.print(f"\n[red]✗[/red] Error running precheck: {e}")
|
|
3364
3383
|
|
|
@@ -3896,9 +3915,14 @@ def login_cmd():
|
|
|
3896
3915
|
config['api_key'] = api_key
|
|
3897
3916
|
if user_email:
|
|
3898
3917
|
config['user_email'] = user_email
|
|
3918
|
+
sftp_username = poll_data.get('sftp_username')
|
|
3919
|
+
if sftp_username:
|
|
3920
|
+
config['sftp_username'] = sftp_username
|
|
3899
3921
|
save_user_config(config)
|
|
3900
3922
|
|
|
3901
3923
|
console.print(f"\n[green]✓ Logged in as {user_email or 'authenticated user'}[/green]")
|
|
3924
|
+
if sftp_username:
|
|
3925
|
+
console.print(f" SFTP account: {sftp_username}")
|
|
3902
3926
|
console.print(f" API key saved to {get_config_path()}")
|
|
3903
3927
|
return
|
|
3904
3928
|
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
chipfoundry_cli/__init__.py,sha256=cYd16oPuk5XKAm2A4g07dAHBwj5DN2wO-PrKXSh6Gpo,90
|
|
2
|
+
chipfoundry_cli/main.py,sha256=3rW87q1bhULKWmWM1aWE4NWxV4IId12FZR15xQIULsQ,171577
|
|
3
|
+
chipfoundry_cli/utils.py,sha256=KV-6ySTxP3IJs1WcxVS5PIomNsWBbuh7XkXTSiqrG0w,28958
|
|
4
|
+
chipfoundry_cli-2.3.0.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
5
|
+
chipfoundry_cli-2.3.0.dist-info/METADATA,sha256=nxlI47arZmxreoyH4z9GCIOXnbMxeNQkZtJXYi5v0gA,29951
|
|
6
|
+
chipfoundry_cli-2.3.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
|
7
|
+
chipfoundry_cli-2.3.0.dist-info/entry_points.txt,sha256=Kz6Q2a6HSqWHsBUH3CbAOTI5esD9KGul2THYPYUZDwI,86
|
|
8
|
+
chipfoundry_cli-2.3.0.dist-info/RECORD,,
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
chipfoundry_cli/__init__.py,sha256=cYd16oPuk5XKAm2A4g07dAHBwj5DN2wO-PrKXSh6Gpo,90
|
|
2
|
-
chipfoundry_cli/main.py,sha256=we4FI52R0Rzj9IzSnW_MC6CHF3TSxvl-WYipeMImpi4,170673
|
|
3
|
-
chipfoundry_cli/utils.py,sha256=KV-6ySTxP3IJs1WcxVS5PIomNsWBbuh7XkXTSiqrG0w,28958
|
|
4
|
-
chipfoundry_cli-2.2.2.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
5
|
-
chipfoundry_cli-2.2.2.dist-info/METADATA,sha256=uIZQrwMhofd9aTUtlUVDYwnno9pUKSr2oWG8F77msw8,29951
|
|
6
|
-
chipfoundry_cli-2.2.2.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
|
7
|
-
chipfoundry_cli-2.2.2.dist-info/entry_points.txt,sha256=Kz6Q2a6HSqWHsBUH3CbAOTI5esD9KGul2THYPYUZDwI,86
|
|
8
|
-
chipfoundry_cli-2.2.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|