64
64
from readthedocs .builds .models import Version
65
65
from readthedocs .core .utils .extend import SettingsOverrideObject
66
66
from readthedocs .core .utils import safe_makedirs , safe_unlink
67
+ from readthedocs .doc_builder .environments import LocalEnvironment
67
68
from readthedocs .projects import constants
68
69
from readthedocs .projects .models import Domain
69
- from readthedocs .projects .utils import run
70
70
71
71
log = logging .getLogger (__name__ )
72
72
@@ -83,6 +83,7 @@ def __init__(self, project):
83
83
self .subproject_root = os .path .join (
84
84
self .project_root , 'projects'
85
85
)
86
+ self .environment = LocalEnvironment (project )
86
87
self .sanity_check ()
87
88
88
89
def sanity_check (self ):
@@ -152,11 +153,13 @@ def symlink_cnames(self, domain=None):
152
153
153
154
# CNAME to doc root
154
155
symlink = os .path .join (self .CNAME_ROOT , dom .domain )
155
- run ([ 'ln' , '-nsf' , self .project_root , symlink ] )
156
+ self . environment . run ('ln' , '-nsf' , self .project_root , symlink )
156
157
157
158
# Project symlink
158
159
project_cname_symlink = os .path .join (self .PROJECT_CNAME_ROOT , dom .domain )
159
- run (['ln' , '-nsf' , self .project .doc_path , project_cname_symlink ])
160
+ self .environment .run (
161
+ 'ln' , '-nsf' , self .project .doc_path , project_cname_symlink
162
+ )
160
163
161
164
def remove_symlink_cname (self , domain ):
162
165
"""Remove CNAME symlink."""
@@ -201,10 +204,12 @@ def symlink_subprojects(self):
201
204
# TODO this should use os.symlink, not a call to shell. For now,
202
205
# this passes command as a list to be explicit about escaping
203
206
# characters like spaces.
204
- status , _ , stderr = run (['ln' , '-nsf' , docs_dir , symlink ])
205
- if status > 0 :
206
- log .error ('Could not symlink path: status=%d error=%s' ,
207
- status , stderr )
207
+ result = self .environment .run ('ln' , '-nsf' , docs_dir , symlink )
208
+ if result .exit_code > 0 :
209
+ log .error (
210
+ 'Could not symlink path: status=%d error=%s' ,
211
+ result .exit_code , result .error
212
+ )
208
213
209
214
# Remove old symlinks
210
215
if os .path .exists (self .subproject_root ):
@@ -238,7 +243,7 @@ def symlink_translations(self):
238
243
version = '' , msg = log_msg ))
239
244
symlink = os .path .join (self .project_root , language )
240
245
docs_dir = os .path .join (self .WEB_ROOT , slug , language )
241
- run ([ 'ln' , '-nsf' , docs_dir , symlink ] )
246
+ self . environment . run ('ln' , '-nsf' , docs_dir , symlink )
242
247
243
248
# Remove old symlinks
244
249
for lang in os .listdir (self .project_root ):
@@ -270,7 +275,7 @@ def symlink_single_version(self):
270
275
if version is not None :
271
276
docs_dir = os .path .join (settings .DOCROOT , self .project .slug ,
272
277
'rtd-builds' , version .slug )
273
- run ([ 'ln' , '-nsf' , docs_dir , symlink ] )
278
+ self . environment . run ('ln' , '-nsf' , docs_dir , symlink )
274
279
275
280
def symlink_versions (self ):
276
281
"""
@@ -293,7 +298,7 @@ def symlink_versions(self):
293
298
version = '' , msg = log_msg ))
294
299
symlink = os .path .join (version_dir , version .slug )
295
300
docs_dir = os .path .join (settings .DOCROOT , self .project .slug , 'rtd-builds' , version .slug )
296
- run ([ 'ln' , '-nsf' , docs_dir , symlink ] )
301
+ self . environment . run ('ln' , '-nsf' , docs_dir , symlink )
297
302
versions .add (version .slug )
298
303
299
304
# Remove old symlinks
0 commit comments