From 2c9b9c0274ec4d58b2fd93aebca2e396a60e55b3 Mon Sep 17 00:00:00 2001
From: Lucas Nussbaum <lucas.nussbaum@loria.fr>
Date: Sat, 17 Nov 2018 00:34:51 +0100
Subject: [PATCH] [dev] simplify requires

---
 lib/refrepo.rb                                 | 18 ++++++++++++++++++
 lib/refrepo/gen/oar-properties.rb              | 13 -------------
 lib/refrepo/gen/puppet/bindg5k.rb              |  6 ------
 lib/refrepo/gen/puppet/conmang5k.rb            |  5 -----
 lib/refrepo/gen/puppet/dhcpg5k.rb              |  6 ------
 lib/refrepo/gen/puppet/kadeployg5k.rb          |  5 -----
 lib/refrepo/gen/puppet/kavlang5k.rb            |  8 --------
 lib/refrepo/gen/puppet/lanpowerg5k.rb          |  5 -----
 lib/refrepo/gen/reference-api.rb               | 11 -----------
 lib/refrepo/gen/wiki/generators/hardware.rb    |  3 +--
 .../gen/wiki/generators/oar_properties.rb      |  3 +--
 .../gen/wiki/generators/site_hardware.rb       |  1 -
 .../gen/wiki/generators/site_network.rb        |  5 +----
 lib/refrepo/gen/wiki/mw_utils.rb               |  5 -----
 lib/refrepo/gen/wiki/wiki_generator.rb         |  7 -------
 lib/refrepo/input_loader.rb                    |  4 +---
 lib/refrepo/valid/homogeneity.rb               | 10 ----------
 lib/refrepo/valid/input/duplicates.rb          |  5 -----
 .../valid/input/lib/schema_validator.rb        |  1 -
 lib/refrepo/valid/input/schema.rb              |  7 -------
 lib/refrepo/valid/network.rb                   |  4 ----
 lib/refrepo/valid/oar-properties.rb            | 14 +-------------
 22 files changed, 23 insertions(+), 123 deletions(-)

diff --git a/lib/refrepo.rb b/lib/refrepo.rb
index dbd81482168..26dcc360c76 100644
--- a/lib/refrepo.rb
+++ b/lib/refrepo.rb
@@ -1,3 +1,19 @@
+# load gems used by most of refrepo scripts
+require 'erb'
+require 'fileutils'
+require 'json'
+require 'net/http'
+require 'net/https'
+require 'open-uri'
+require 'optparse'
+require 'pathname'
+require 'pp'
+require 'set'
+require 'time'
+require 'uri'
+require 'yaml'
+
+
 # pre-declare those modules here
 module RefRepo
 end
@@ -5,4 +21,6 @@ module RefRepo::Gen
 end
 module RefRepo::Valid
 end
+# load sub-parts that are used by many scripts anyway
 require 'refrepo/utils'
+require 'refrepo/input_loader'
diff --git a/lib/refrepo/gen/oar-properties.rb b/lib/refrepo/gen/oar-properties.rb
index a3f153d0cd2..18e8329e2d1 100755
--- a/lib/refrepo/gen/oar-properties.rb
+++ b/lib/refrepo/gen/oar-properties.rb
@@ -1,19 +1,6 @@
-#!/usr/bin/ruby
 # coding: utf-8
 
-require 'pp'
-require 'erb'
-require 'fileutils'
-require 'pathname'
-require 'json'
-require 'time'
-require 'yaml'
 require 'hashdiff'
-require 'set'
-require 'uri'
-require 'net/https'
-
-require 'refrepo/input_loader'
 
 class MissingProperty < StandardError; end
 
diff --git a/lib/refrepo/gen/puppet/bindg5k.rb b/lib/refrepo/gen/puppet/bindg5k.rb
index 1b0c50b269f..6682605423d 100644
--- a/lib/refrepo/gen/puppet/bindg5k.rb
+++ b/lib/refrepo/gen/puppet/bindg5k.rb
@@ -1,12 +1,6 @@
 # See also: https://www.grid5000.fr/mediawiki/index.php/DNS_server
 
-require 'pp'
-require 'erb'
-require 'pathname'
-require 'fileutils'
-require 'optparse'
 require 'dns/zone'
-require 'refrepo/input_loader'
 
 #Prettier aligned dump of records
 class DNS::Zone::RR::A
diff --git a/lib/refrepo/gen/puppet/conmang5k.rb b/lib/refrepo/gen/puppet/conmang5k.rb
index b3f85e54c22..060322d0712 100644
--- a/lib/refrepo/gen/puppet/conmang5k.rb
+++ b/lib/refrepo/gen/puppet/conmang5k.rb
@@ -1,10 +1,5 @@
 # This script generates conmang5k/files/<site_uid>/conman.conf from input/, conf/console.yaml and conf/console-password.yaml
 
-require 'pp'
-require 'erb'
-require 'pathname'
-require 'optparse'
-require 'refrepo/input_loader'
 require 'refrepo/hash/hash'
 
 # Apply ERB template and save result to file
diff --git a/lib/refrepo/gen/puppet/dhcpg5k.rb b/lib/refrepo/gen/puppet/dhcpg5k.rb
index f86fedd95b0..41db39d4b96 100644
--- a/lib/refrepo/gen/puppet/dhcpg5k.rb
+++ b/lib/refrepo/gen/puppet/dhcpg5k.rb
@@ -1,9 +1,3 @@
-require 'pp'
-require 'erb'
-require 'pathname'
-require 'optparse'
-require 'refrepo/input_loader'
-
 # Get the mac and ip of a node. Throw exception if error.
 def get_network_info(node_hash, network_interface)
   # Get node_hash["network_adapters"][network_interface]["ip"] and node_hash["network_adapters"][network_interface]["mac"]
diff --git a/lib/refrepo/gen/puppet/kadeployg5k.rb b/lib/refrepo/gen/puppet/kadeployg5k.rb
index 8b6e73eeba9..786754e4fd6 100644
--- a/lib/refrepo/gen/puppet/kadeployg5k.rb
+++ b/lib/refrepo/gen/puppet/kadeployg5k.rb
@@ -1,8 +1,3 @@
-require 'pp'
-require 'erb'
-require 'pathname'
-require 'optparse'
-require 'refrepo/input_loader'
 require 'refrepo/hash/hash'
 
 # Compute cluster prefix
diff --git a/lib/refrepo/gen/puppet/kavlang5k.rb b/lib/refrepo/gen/puppet/kavlang5k.rb
index f79bfc9f7d0..b7c79b47b55 100755
--- a/lib/refrepo/gen/puppet/kavlang5k.rb
+++ b/lib/refrepo/gen/puppet/kavlang5k.rb
@@ -1,13 +1,5 @@
 # !!! Require to "gem install ruby-ip", do not install "ip" gem !!!
 
-require 'json'
-require 'fileutils'
-
-require 'pp'
-require 'yaml'
-require 'pathname'
-require 'optparse'
-require 'refrepo/input_loader'
 require 'refrepo/hash/hash'
 
 def generate_puppet_kavlang5k(options)
diff --git a/lib/refrepo/gen/puppet/lanpowerg5k.rb b/lib/refrepo/gen/puppet/lanpowerg5k.rb
index c4d20194807..98f72968216 100644
--- a/lib/refrepo/gen/puppet/lanpowerg5k.rb
+++ b/lib/refrepo/gen/puppet/lanpowerg5k.rb
@@ -1,10 +1,5 @@
 # This script generates lanpowerg5k/files/<site_uid>/lanpower.conf from conf/console.yaml and conf/console-password.conf
 
-require 'pp'
-require 'yaml'
-require 'pathname'
-require 'optparse'
-require 'refrepo/input_loader'
 require 'refrepo/hash/hash'
 
 def generate_puppet_lanpowerg5k(options)
diff --git a/lib/refrepo/gen/reference-api.rb b/lib/refrepo/gen/reference-api.rb
index 1cbcca0a2f5..6ce0f3f97f7 100644
--- a/lib/refrepo/gen/reference-api.rb
+++ b/lib/refrepo/gen/reference-api.rb
@@ -1,14 +1,3 @@
-#!/usr/bin/ruby
-
-require 'pp'
-require 'optparse'
-require 'erb'
-require 'fileutils'
-require 'pathname'
-require 'json'
-require 'time'
-
-require 'refrepo/input_loader'
 require 'refrepo/valid/input/schema'
 require 'refrepo/valid/homogeneity'
 require 'refrepo/valid/input/monitoring'
diff --git a/lib/refrepo/gen/wiki/generators/hardware.rb b/lib/refrepo/gen/wiki/generators/hardware.rb
index 47c015d7fae..b79d74cf0fc 100644
--- a/lib/refrepo/gen/wiki/generators/hardware.rb
+++ b/lib/refrepo/gen/wiki/generators/hardware.rb
@@ -1,7 +1,6 @@
 # coding: utf-8
-$LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__), 'lib')))
 require 'refrepo/gen/wiki/wiki_generator'
-require_relative './site_hardware.rb'
+require 'refrepo/gen/wiki/generators/site_hardware'
 
 class G5KHardwareGenerator < WikiGenerator
 
diff --git a/lib/refrepo/gen/wiki/generators/oar_properties.rb b/lib/refrepo/gen/wiki/generators/oar_properties.rb
index fd95a35c1af..0e04e594d66 100644
--- a/lib/refrepo/gen/wiki/generators/oar_properties.rb
+++ b/lib/refrepo/gen/wiki/generators/oar_properties.rb
@@ -1,8 +1,7 @@
 # coding: utf-8
 require 'refrepo/gen/wiki/wiki_generator'
 
-$LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__), '../../../../../generators/oar-properties/lib')))
-require 'lib-oar-properties'
+require 'refrepo/gen/oar-properties'
 
 class OarPropertiesGenerator < WikiGenerator
 
diff --git a/lib/refrepo/gen/wiki/generators/site_hardware.rb b/lib/refrepo/gen/wiki/generators/site_hardware.rb
index c38b04d9229..f92da53335e 100644
--- a/lib/refrepo/gen/wiki/generators/site_hardware.rb
+++ b/lib/refrepo/gen/wiki/generators/site_hardware.rb
@@ -1,5 +1,4 @@
 # coding: utf-8
-$LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__), 'lib')))
 require 'refrepo/gen/wiki/wiki_generator'
 
 class SiteHardwareGenerator < WikiGenerator
diff --git a/lib/refrepo/gen/wiki/generators/site_network.rb b/lib/refrepo/gen/wiki/generators/site_network.rb
index 4f0c222fcda..72952e33539 100644
--- a/lib/refrepo/gen/wiki/generators/site_network.rb
+++ b/lib/refrepo/gen/wiki/generators/site_network.rb
@@ -1,9 +1,6 @@
 # coding: utf-8
-$LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__), 'lib')))
 require 'refrepo/gen/wiki/wiki_generator'
-
-$LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__), '../../../../../generators')))
-require 'input-validators/check-network-description'
+require 'refrepo/valid/network'
 
 # This class generates the network description of each site, in .dot
 # and .png format
diff --git a/lib/refrepo/gen/wiki/mw_utils.rb b/lib/refrepo/gen/wiki/mw_utils.rb
index 0f158e084d4..04a7415d9d6 100644
--- a/lib/refrepo/gen/wiki/mw_utils.rb
+++ b/lib/refrepo/gen/wiki/mw_utils.rb
@@ -1,8 +1,3 @@
-require 'pp'
-require 'open-uri'
-require 'uri'
-require 'net/http'
-require 'net/https'
 require 'mediawiki_api'
 
 #Adding method to mediawiki_api client
diff --git a/lib/refrepo/gen/wiki/wiki_generator.rb b/lib/refrepo/gen/wiki/wiki_generator.rb
index de6a61e1d7c..963c1237202 100644
--- a/lib/refrepo/gen/wiki/wiki_generator.rb
+++ b/lib/refrepo/gen/wiki/wiki_generator.rb
@@ -1,12 +1,5 @@
-# also add generators/lib to load path
-$LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__), '../../lib')))
-
-require 'refrepo/input_loader'
-require "optparse"
 require "mediawiki_api"
 require "diffy"
-require 'date'
-require 'pp'
 
 class WikiGenerator
 
diff --git a/lib/refrepo/input_loader.rb b/lib/refrepo/input_loader.rb
index af68108e24a..6a3d8130cfd 100755
--- a/lib/refrepo/input_loader.rb
+++ b/lib/refrepo/input_loader.rb
@@ -1,8 +1,6 @@
 # Load a hierarchy of YAML file into a Ruby hash
 
-require 'yaml'
-require 'erb'
-require 'refrepo/hash/hash.rb'
+require 'refrepo/hash/hash'
 
 def load_yaml_file_hierarchy(directory = File.expand_path("../../input/grid5000/", File.dirname(__FILE__)))
 
diff --git a/lib/refrepo/valid/homogeneity.rb b/lib/refrepo/valid/homogeneity.rb
index 2ed80a7d0de..dd7787d7dfe 100644
--- a/lib/refrepo/valid/homogeneity.rb
+++ b/lib/refrepo/valid/homogeneity.rb
@@ -1,16 +1,6 @@
-#!/usr/bin/ruby
-
 # This script checks the cluster homogeneity
 
-require 'pp'
-require 'fileutils'
-require 'pathname'
 require 'hashdiff'
-require 'json'
-require 'uri'
-require 'net/https'
-
-require 'refrepo/input_loader'
 
 def global_ignore_keys
 
diff --git a/lib/refrepo/valid/input/duplicates.rb b/lib/refrepo/valid/input/duplicates.rb
index dc56a01443a..a281b59e2a9 100644
--- a/lib/refrepo/valid/input/duplicates.rb
+++ b/lib/refrepo/valid/input/duplicates.rb
@@ -1,8 +1,3 @@
-#!/usr/bin/ruby
-
-require 'pp'
-require 'refrepo/input_loader'
-
 # replace default deep_merge before calling load_yaml_file_hierarchy
 class ::Hash
   def deep_merge(other_hash)
diff --git a/lib/refrepo/valid/input/lib/schema_validator.rb b/lib/refrepo/valid/input/lib/schema_validator.rb
index 6ed44f30b9a..c5c357f8d54 100644
--- a/lib/refrepo/valid/input/lib/schema_validator.rb
+++ b/lib/refrepo/valid/input/lib/schema_validator.rb
@@ -8,7 +8,6 @@
 
 dir = Pathname(__FILE__).parent
 
-require 'json'
 require 'hash_validator' # https://github.com/jamesbrooks/hash_validator
 require "#{dir}/multihash_validator" # custom validator for <multi>-keys Hash support
 require "#{dir}/array_validator" # custom validator for <array> support
diff --git a/lib/refrepo/valid/input/schema.rb b/lib/refrepo/valid/input/schema.rb
index ac866d3e1fd..0dfd8c430e6 100644
--- a/lib/refrepo/valid/input/schema.rb
+++ b/lib/refrepo/valid/input/schema.rb
@@ -1,10 +1,3 @@
-#!/usr/bin/ruby
-
-require 'fileutils'
-require 'pathname'
-
-require 'refrepo/input_loader'
-
 require_relative "./lib/schema_validator"
 
 def run_validator(uid, data, schema)
diff --git a/lib/refrepo/valid/network.rb b/lib/refrepo/valid/network.rb
index 59493cc5fa0..ee5bc8c0982 100644
--- a/lib/refrepo/valid/network.rb
+++ b/lib/refrepo/valid/network.rb
@@ -1,13 +1,9 @@
-#!/usr/bin/ruby
 # coding: utf-8
 
 # This script checks the network description for inconsistencies
 # This script needs 'nodeset' and 'dot' programs, which are available
 # in clustershell and graphviz debian packages
 
-require 'json'
-require 'pp'
-
 # FIXME infiniband equipment is not completely described in the ref-api yet. See Bug 8586
 HPC_SWITCHES = ['ib-grenoble', 'voltaire-1', 'voltaire-2', 'voltaire-3', 'sgraoullyib', 'sgrapheneib', 'sw-myrinet', 'sgrele-opf']
 
diff --git a/lib/refrepo/valid/oar-properties.rb b/lib/refrepo/valid/oar-properties.rb
index bfa219641b2..4d63936ea8e 100755
--- a/lib/refrepo/valid/oar-properties.rb
+++ b/lib/refrepo/valid/oar-properties.rb
@@ -1,19 +1,7 @@
-#!/usr/bin/ruby
 # coding: utf-8
 
-require 'pp'
-require 'erb'
-require 'fileutils'
-require 'pathname'
-require 'json'
-require 'time'
-require 'yaml'
-require 'set'
-require 'hashdiff'
-require 'optparse'
 require 'net/ssh'
-require 'open-uri'
-require 'refrepo/utils'
+require 'hashdiff'
 
 # propriétés ignorées
 IGNORED_PROPERTIES=%w{chassis chunks thread}
-- 
GitLab