Copie de ressource client vers serveur

En développement C/S il m’arrive souvent de modifier un fichier de ressource directement sur mon poste client. Si je veux conserver cette modification, je dois synchroniser “à l’envers” (du client vers le serveur), c’est ce à quoi sert le code qui suit. La première méthode “emballe” le fichier coté client, la seconde (avec l’attribut “exécuter sur serveur”) le “déballe” coté serveur.
<code 4D>
//Res_update (cheminFichierResourcesLocal_t) -> txt
//copie un fichier du dossier Resources local vers celui du serveur
//$0 non vide si erreur
//$1 chemin du fichier à transférer, exprimé dans la plateforme courante
C_TEXT($0)
C_TEXT($1)

C_TEXT($error_t)
C_TEXT($fichier_t)
C_TEXT($cheminResources_t)
//_
$nmc_t:=Current method name
$error_t:=""
If (Count parameters>0)
$path_t:=$1
Else
$error_t:=$nmc_t+" missing parameter $1"
End if
If ($error_t="")
If (Test path name($path_t)#Is a document)
$error_t:=$nmc_t+" $1 is not a document"
End if
End if
If ($error_t="")
If (Position("/";$path_t;)>0)
$error_t:=$nmc_t+" $1 must not contain /"
End if
End if
If ($error_t="")
$posix_t:=Convert path system to POSIX($path_t)
ARRAY LONGINT($pos_al;0x0000)
ARRAY LONGINT($len_al;0x0000)
If (Match regex("^.
/Resources/(.*)";$posix_t;1;$pos_al;$len_al))
//on ne garde que le chemin à partir de ‘Resources’ exprimé en posix
$resourcePath_t:=Substring($posix_t;$pos_al{1};$len_al{1})
DOCUMENT TO BLOB($path_t;$fichier_x)
If (BLOB size($fichier_x)>=255) //seuil pour compresser
COMPRESS BLOB($fichier_x;Fast compression mode)
End if
$error_t:=RES_update_srv ($fichier_x;$resourcePath_t) //exec sur serveur
Else
$error_t:="…/Resources/… not found in $1 path"
End if
End if

$0:=$error_t
//_
</code 4D>
<code 4D>
//Res_update_srv (document_x;cheminRessources_t) -> txt
//#EoS
//copie le blob/document $1 à l’emplacement $2
// du dossier Resources courant
//$0 non vide si erreur

C_TEXT($0)
C_BLOB($1)
C_TEXT($2)

C_TEXT($error_t)
C_BLOB($fichier_x)
C_TEXT($resPath_t)
//_
If (Count parameters<2)
$error_t:=Current method name+" 2 params expected"
Else
$fichier_x:=$1
$resPath_t:=$2
$POSIX_t:=Convert path system to POSIX(Get 4D folder(Current resources folder))+$resPath_t
$filePath_t:=Convert path POSIX to system($POSIX_t)
$folder_t:=FS_pathGetParent ($filePath_t)

error_l:=0
If (Test path name($folder_t)#Is a folder)
	$methodErr_t:=Method called on error
	If (False)
		ERR_catchPlus   //appel masqué
	End if 
	ON ERR CALL("ERR_catchPlus")  //EEE
	CREATE FOLDER($folder_t;*)  //* créer si inexistant, récursif si besoin
	If (error_l#0)
		$error_t:=Err_Description 
	End if 
	ON ERR CALL($methodErr_t)  //EEE
End if 

If ($error_t="")
	C_LONGINT($compression_l)
	BLOB PROPERTIES($fichier_x;$compression_l)
	  //0 = pas de compression, 1 = interne compact, 2 = interne rapide, -1 = GZIP compact, -2 = GZIP rapide
	If ($compression_l#Is not compressed)
		EXPAND BLOB($fichier_x)
	End if 
	$methodErr_t:=Method called on error
	ON ERR CALL("ERR_catchPlus")  //EEE
	BLOB TO DOCUMENT($filePath_t;$fichier_x)
	If (error_l#0)
		$error_t:=Err_Description 
	End if 
	ON ERR CALL($methodErr_t)  //EEE
End if 

End if
$0:=$error_t
//_
</code 4D>