rsconnect-python
rsconnect-python copied to clipboard
deploy manifest errs when give a directory containing a manifest
The help for deploy manifest reads:
Usage: rsconnect deploy manifest [OPTIONS] FILE
Deploy content to Posit Connect, Posit Cloud, or shinyapps.io using an
existing manifest.json file. The specified file must either be named
"manifest.json" or refer to a directory that contains a file named
"manifest.json".
However, when providing a directory that contains a manifest.json, an error results.
Traceback (most recent call last):
File "BASE_DIR/env/lib/python3.11/site-packages/rsconnect/main.py", line 108, in wrapper
result = func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "BASE_DIR/env/lib/python3.11/site-packages/click/decorators.py", line 33, in new_func
return f(get_current_context(), *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "BASE_DIR/env/lib/python3.11/site-packages/rsconnect/main.py", line 1119, in deploy_manifest
kwargs["title"] = title or default_title_from_manifest(file)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "BASE_DIR/env/lib/python3.11/site-packages/rsconnect/bundle.py", line 744, in default_title_from_manifest
source_manifest, _ = read_manifest_file(file)
^^^^^^^^^^^^^^^^^^^^^^^^
File "BASE_DIR/env/lib/python3.11/site-packages/rsconnect/bundle.py", line 757, in read_manifest_file
with open(manifest_path, "rb") as f:
^^^^^^^^^^^^^^^^^^^^^^^^^
IsADirectoryError: [Errno 21] Is a directory: 'model'
Internal error: [Errno 21] Is a directory: 'model'
Providing the path to the manifest.json works.
# error
rsconnect deploy manifest model
# no error
rsconnect deploy manifest model/manifest.json
Using rsconnect-python 1.23.0.
The manifest is correctly identified:
rsconnect.bundle.validate_manifest_file("model")
#> 'model/manifest.json'
However, in deploy_manifest(), we rewrite the incoming file to file_name but do not consistently use that variable.
https://github.com/rstudio/rsconnect-python/blob/74b7f6899206ff754e29ad282c3dc725ab4e186b/rsconnect/main.py#L1146-L1179