11import tempfile
22import typing
33from rsconnect .actions import deploy_python_fastapi
4+ import shutil
5+ import os
46
57from .write_fastapi import write_app
68
79
810def deploy_rsconnect (
911 connect_server ,
1012 board ,
11- pin_name ,
12- version = None ,
13+ pin_name : str ,
14+ version : str = None ,
1315 extra_files : typing .List [str ] = None ,
1416 new : bool = False ,
1517 app_id : int = None ,
@@ -20,11 +22,54 @@ def deploy_rsconnect(
2022 log_callback : typing .Callable = None ,
2123 image : str = None ,
2224):
25+ """Deploy to RSConnect
26+
27+ Parameters
28+ ----------
29+ connect_server:
30+ RSConnect Server
31+ board:
32+ Pins board
33+ pin_name: str
34+ Name of pin
35+ version: str
36+ Version of pin
37+ extra_files: typing.List[str]
38+ Any extra files to include in
39+ new:
40+ Force as a new deploy
41+ app_id:
42+ ID of an existing application to deploy new files for.
43+ title: str
44+ Optional title for the deploy.
45+ python: str
46+ Optional name of a Python executable
47+ conda_mode: bool
48+ Use conda to build an environment.yml
49+ force_generate: bool
50+ Force generating "requirements.txt" or "environment.yml"
51+ log_callback: typing.Callable
52+ Callback to use to write the log to
53+ image: str
54+ Docker image to be specified for off-host execution
55+ """
56+ if board .fs .protocol == "rsc" :
57+ raise NotImplementedError ()
58+
2359 if not title :
2460 title = pin_name + "_vetiver"
2561
2662 with tempfile .TemporaryDirectory () as temp :
63+ if extra_files is not None :
64+ new_files = []
65+ for file in extra_files :
66+ filename = os .path .basename (file )
67+ shutil .copyfile (file , os .path .join (temp , filename ))
68+ new_files = new_files + [os .path .join (temp , filename )]
69+ extra_files = new_files
70+
2771 tmp_app = temp + "/app.py"
72+
2873 write_app (
2974 board = board ,
3075 pin_name = pin_name ,
0 commit comments