Skip to content

Commit

Permalink
Corrections du download
Browse files Browse the repository at this point in the history
  • Loading branch information
Bouhmarc committed May 1, 2021
1 parent 29d9d78 commit 7b9a783
Show file tree
Hide file tree
Showing 6 changed files with 148 additions and 28 deletions.
35 changes: 35 additions & 0 deletions DownloadDocument_StandAlone.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
const fs = require('fs')
const { resolve } = require('bluebird');

// récupère le nom du fichier de configuration
sFichierConfig = process.argv[2]


// Récupère la configuration du connecteur
// stUnElement = JSON.parse(fs.readFileSync(sFichierConfig))

stUnElement = JSON.parse('{"source": "/Users/marcpolycarpe/Documents/Sources/Cozy/konnectors/plugins/aprr/src/index.js","folder_to_save": "/Users/marcpolycarpe/Documents/Documents/APRR/","login": "250091389862","password": "mp0682969580"}')

stOptions = {}

// Construit la structure avec les options
stOptions.COZY_URL = "https://localhost"
stOptions.fields = {}
stOptions.fields.login = stUnElement.login
stOptions.fields.password = stUnElement.password
stOptions.folder_to_save = stUnElement.folder_to_save
stOptions.fields.folderPath = stUnElement.folder_to_save
if (stUnElement.others)
{
stUnElement.others.forEach(stAddon => {
stOptions.fields[stAddon.name] = stAddon.value
});
}

process.env.COZY_FIELDS = JSON.stringify(stOptions)

// Importe le connecteur
require(stUnElement.source)

// Supprime le fichier
// fs.unlinkSync(sFichierConfig)
41 changes: 16 additions & 25 deletions DownloadDocuments.js
Original file line number Diff line number Diff line change
@@ -1,40 +1,31 @@
const path = require('path')
const fs = require('fs')
const child_process = require('child_process')
var uuid = require('uuid');

async function DownloadDocuments()
function DownloadDocuments(sNomPlugin)
{
// Liste les connecteurs
ConnectorsList = JSON.parse(fs.readFileSync(__dirname + '/connectors_list.json'))

// Chaque connecteur a son fichier JSON "konnector-dev-config.json" dans son répertoire
// Ajoute les données de ce fichier a la variable d'environnement

ConnectorsList.forEach(stUnElement => {
stOptions = {}
// Construit la structure avec les options
stOptions.COZY_URL = "https://localhost"
stOptions.fields = {}
stOptions.fields.login = stUnElement.login
stOptions.fields.password = stUnElement.password
stOptions.folder_to_save = stUnElement.folder_to_save
stOptions.fields.folderPath = stUnElement.folder_to_save
if (stUnElement.others)
{
stUnElement.others.forEach(stAddon => {
stOptions.fields[stAddon.name] = stAddon.value
});
}

process.env.COZY_FIELDS = JSON.stringify(stOptions)
if (sNomPlugin != '' && stUnElement.name != sNomPlugin)
return

// Sauvegarde un fichier de config

// Charge l'élément et débute la récupération
element = require(stUnElement.source)
// Construit le nom du fichier
sNomFichier = uuid.v4() + '.json'

// On décharge l'élément pour pouvoir utiliser plusieurs fois le même connecteur
var name = require.resolve(stUnElement.source);
delete require.cache[name];
fs.writeFileSync(sNomFichier, JSON.stringify(stUnElement))

// Lancement d'un autre process

child_process.execSync(
'node ' + __dirname + '/DownloadDocument_StandAlone.js "'+sNomFichier + '"',
{stdio: 'inherit'})
})
}

}
module.exports = DownloadDocuments
88 changes: 87 additions & 1 deletion InstallConnector.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,9 @@ async function installConnector(sURLGit) {
// Install les modules nodes dans le répertoire parent
await StartProcess('npm install ./' + sRepertoire)

// Installe toutes les dépendances
await InstallDependances(sRepertoire)

// Il reste l'installation dans le .json
// Récupération du répertoire, login, user
await DeclareConnecteur(path.join(sRepertoirePlugin, sRepertoire))
Expand All @@ -61,6 +64,10 @@ async function DeclareConnecteur(sRepertoireConnecteur)

sIndex = path.join(sRepertoireConnecteur, '/src/','index.js')

console.log('Saisissez le nom du plugin : ')
let sNomPlugin = await readlineSync();


console.log('Saisissez le répertoire de téléchargement : ')
let sRepertoireTelechargement = await readlineSync();

Expand All @@ -70,6 +77,15 @@ async function DeclareConnecteur(sRepertoireConnecteur)
console.log('Saisissez le mot de passe de connexion au service : ')
let sMotDePasse = await readlineSync();


// Lit le manifest du connecteur pour savoir si il reste des paramètres
//sContenuManifest = fs.readFileSync(path.join(sRepertoireConnecteur,'manifest.konnector'), 'utf8')
// Parse le fichier JSON
//let oManifest = JSON.parse(sContenuManifest)

//oManifest.fields


// Lit le JSON de configuration
sFichierPackage = path.join(__dirname , '/connectors_list.json')
sContenuFichierListe = fs.readFileSync(sFichierPackage, 'utf8')
Expand All @@ -80,6 +96,7 @@ async function DeclareConnecteur(sRepertoireConnecteur)
}

MonPackage = {}
MonPackage["name"] = sNomPlugin
MonPackage["source"] = sIndex
MonPackage["folder_to_save"] = sRepertoireTelechargement
MonPackage["login"] = sLogin
Expand Down Expand Up @@ -153,4 +170,73 @@ function RemplaceLibs(sRepertoire) {
fs.writeFileSync(sFichierPackage, JSON.stringify(MonPackage), 'utf8')

}
module.exports = installConnector

function InstallDependances(sRepertoire)
{

return true

}

async function UpdateConnector(sNomPlugin) {

let sRepertoirePlugin = path.join(process.cwd(),'/plugins/')


// Récupère le nom du connecteur (le nom du répertoire dans lequel sera cloné le repo)

// On se positionne dans le répertoire du plugin
sRepertoirePluginUpdate = path.join(sRepertoirePlugin, sNomPlugin)

// Si le répertoire n'existe pas, on sort en erreur
// if (fs.existsSync(sRepertoirePluginUpdate) == false)
// return false



// On change le répertoire pour faire la maj
process.chdir(sRepertoirePluginUpdate)

console.log('Récupération du repository')

// Clone le repo
await StartProcess('git pull')

console.log('Remplacement de référence aux libs de cozy')

// Remplace tous les cozy-lib par cozy-without-cozy
await RemplaceLibs(sRepertoirePluginUpdate)

console.log('Installation de dépendances')

process.chdir(sRepertoirePlugin)

// Install les modules nodes dans le répertoire parent
await StartProcess('npm install ./' + sRepertoire)

// Installe toutes les dépendances
await InstallDependances(sRepertoire)

console.log("Le connecteur est correctement mis à jour")

}

/*
function ListeDependances(sFichierOrigine)
{
var requiredFiles = [];
var contents = fs.readFileSync(sFichierOrigine, 'utf8').split('\n');
contents.forEach(function(line){
var re = /(?:require\('?"?)(.*?)(?:'?"?\))/;
var matches = re.exec(line);
if(matches){
requiredFiles.push(matches[1]);
}
});
return requiredFiles;
}*/
module.exports = {installConnector, UpdateConnector}
1 change: 1 addition & 0 deletions connectors_list.default.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
[
{
"name":"Nom du plugin"
"Source":"Chemin du fichier JS source du connecteur (généralement index.js)",
"login":"login de connexion au site",
"password":"mot de passe de connexion au site",
Expand Down
Empty file added connectors_list_save
Empty file.
11 changes: 9 additions & 2 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
const downloadDocuments = require('./DownloadDocuments')
const InstallConnector = require('./InstallConnector')
const InstallConnector = require('./InstallConnector').installConnector
const UpdateConnector = require('./InstallConnector').UpdateConnector


// récupère l'opération (install (i) ou download (dld))
Expand All @@ -13,11 +14,17 @@ switch (sOperation.toUpperCase())
InstallConnector(process.argv[3])
break;
}
case 'UPDATE':
case 'U':
{
UpdateConnector(process.argv[3])
break;
}
case 'DOWNLOAD':
case 'DLD':
{
// On débute le téléchargement
downloadDocuments()
downloadDocuments(process.argv[3])
break
}
default:
Expand Down

0 comments on commit 7b9a783

Please sign in to comment.