terrimporter 0.4.0 → 0.5.4
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/Gemfile.lock +6 -9
- data/Rakefile +69 -0
- data/bin/terrimporter +5 -1
- data/config/schema.yml +0 -3
- data/config/terrimporter.config.yml +4 -7
- data/lib/{app_logger.rb → terrimporter/app_logger.rb} +0 -0
- data/lib/terrimporter/config_helper.rb +46 -0
- data/lib/{config_validator.rb → terrimporter/config_validator.rb} +0 -0
- data/lib/terrimporter/configuration.rb +72 -0
- data/lib/terrimporter/downloader.rb +38 -0
- data/lib/terrimporter/importer.rb +185 -0
- data/lib/{options.rb → terrimporter/options.rb} +16 -8
- data/lib/terrimporter/version.rb +3 -2
- data/lib/terrimporter.rb +30 -26
- data/tasks/load_tasks.rb +3 -0
- data/tasks/version.rake +2 -0
- data/terrimporter.gemspec +7 -4
- data/test/fixtures/css/base.css +1 -0
- data/test/fixtures/css/ie.css +1 -0
- data/test/fixtures/html/img_backgrounds_dir.html +43 -0
- data/test/fixtures/html/img_dir.html +67 -0
- data/test/fixtures/html/js_dyn_dir.html +44 -0
- data/test/fixtures/img/background.jpg +0 -0
- data/test/fixtures/img/testimage.png +0 -0
- data/test/fixtures/invalid.config.yml +27 -0
- data/test/fixtures/js/base.js +1 -0
- data/test/fixtures/js/dynlib.js +1 -0
- data/test/fixtures/test.config.yml +64 -0
- data/test/helper.rb +0 -19
- data/test/terrimporter.config.yml +68 -0
- data/test/test/tmp/public/javascripts/base.js +1 -0
- data/test/test/tmp/public/javascripts/lib/dynlib.js +1 -0
- data/test/test/tmp/public/stylesheets/base.css +1 -0
- data/test/test/tmp/public/stylesheets/ie.css +1 -0
- data/test/test_helper.rb +47 -0
- data/test/test_terrimporter.rb +66 -4
- data/test/unit/test_app_logger.rb +51 -0
- data/test/unit/test_config_helper.rb +33 -0
- data/test/unit/test_config_validator.rb +20 -0
- data/test/unit/test_configuration.rb +30 -26
- data/test/unit/test_downloader.rb +38 -0
- data/test/unit/test_importer.rb +159 -23
- data/test/unit/test_options.rb +45 -7
- metadata +80 -24
- data/lib/configuration.rb +0 -93
- data/lib/importer.rb +0 -190
- data/public/javascripts/base.js +0 -0
- data/public/javascripts/pngfix.js +0 -0
- data/public/javascripts/warning.js +0 -0
- data/test/unit/test_terrimporter.rb +0 -23
data/.gitignore
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,20 +1,16 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
terrimporter (0.
|
5
|
-
kwalify
|
4
|
+
terrimporter (0.5.3)
|
5
|
+
kwalify (>= 0.7.2)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: http://rubygems.org/
|
9
9
|
specs:
|
10
|
-
|
11
|
-
jeweler (1.6.4)
|
12
|
-
bundler (~> 1.0)
|
13
|
-
git (>= 1.2.5)
|
14
|
-
rake
|
10
|
+
fakeweb (1.3.0)
|
15
11
|
kwalify (0.7.2)
|
16
12
|
rake (0.9.2)
|
17
|
-
rcov (0.9.
|
13
|
+
rcov (0.9.10)
|
18
14
|
shoulda (2.11.3)
|
19
15
|
|
20
16
|
PLATFORMS
|
@@ -22,7 +18,8 @@ PLATFORMS
|
|
22
18
|
|
23
19
|
DEPENDENCIES
|
24
20
|
bundler (~> 1.0.0)
|
25
|
-
|
21
|
+
fakeweb
|
22
|
+
rake
|
26
23
|
rcov
|
27
24
|
shoulda
|
28
25
|
terrimporter!
|
data/Rakefile
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'bundler'
|
2
|
+
require 'rake'
|
2
3
|
Bundler::GemHelper.install_tasks
|
3
4
|
|
4
5
|
require 'rake/testtask'
|
@@ -18,6 +19,7 @@ end
|
|
18
19
|
|
19
20
|
task :default => :test
|
20
21
|
|
22
|
+
#todo this is wrong!
|
21
23
|
require 'rake/rdoctask'
|
22
24
|
Rake::RDocTask.new do |rdoc|
|
23
25
|
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
@@ -27,3 +29,70 @@ Rake::RDocTask.new do |rdoc|
|
|
27
29
|
rdoc.rdoc_files.include('README*')
|
28
30
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
29
31
|
end
|
32
|
+
|
33
|
+
|
34
|
+
namespace :version do
|
35
|
+
|
36
|
+
namespace :bump do
|
37
|
+
desc "Bump major version"
|
38
|
+
task :major do
|
39
|
+
bump_version :major
|
40
|
+
end
|
41
|
+
|
42
|
+
desc "Bump minor version"
|
43
|
+
task :minor do
|
44
|
+
bump_version :minor
|
45
|
+
end
|
46
|
+
|
47
|
+
desc "Bump patch version"
|
48
|
+
task :patch do
|
49
|
+
bump_version :patch
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def bump_version(version_to_bump)
|
54
|
+
puts "Pumping version"
|
55
|
+
version = version?
|
56
|
+
case version_to_bump
|
57
|
+
when :major
|
58
|
+
version[:major] = version[:major].to_i + 1
|
59
|
+
when :minor
|
60
|
+
version[:minor] = version[:minor].to_1 + 1
|
61
|
+
when :patch
|
62
|
+
version[:patch] = version[:patch].to_i + 1
|
63
|
+
end
|
64
|
+
puts "New version; " + version_string(version)
|
65
|
+
write_version(version)
|
66
|
+
end
|
67
|
+
|
68
|
+
def version_file_path
|
69
|
+
File.join(File.dirname(__FILE__), 'lib', 'terrimporter', 'version.rb')
|
70
|
+
end
|
71
|
+
|
72
|
+
def version?
|
73
|
+
pattern = /(\d+).(\d+).(\d+)/
|
74
|
+
version = nil
|
75
|
+
version_file = File.read(version_file_path)
|
76
|
+
version_file.scan(pattern) do |match|
|
77
|
+
version = {:major => match[0], :minor => match[1], :patch => match[2]}
|
78
|
+
end
|
79
|
+
version
|
80
|
+
end
|
81
|
+
|
82
|
+
def version_string(version)
|
83
|
+
"#{version[:major]}.#{version[:minor]}.#{version[:patch]}"
|
84
|
+
end
|
85
|
+
|
86
|
+
def write_version(version={})
|
87
|
+
version_rb = %Q{#Generated by rake task, last bump: #{version.to_s}
|
88
|
+
module TerrImporter
|
89
|
+
VERSION = "#{version_string version}"
|
90
|
+
end
|
91
|
+
}
|
92
|
+
File.open(version_file_path, 'w') { |f| f.write(version_rb) }
|
93
|
+
end
|
94
|
+
|
95
|
+
|
96
|
+
end
|
97
|
+
|
98
|
+
|
data/bin/terrimporter
CHANGED
data/config/schema.yml
CHANGED
@@ -7,7 +7,6 @@
|
|
7
7
|
# export_path You most probably won't have to change this
|
8
8
|
# image_base_path: The Terrific image base path. You most probably won't have to change this
|
9
9
|
# libraries_source_path: The library source path. You most probably won't have to change this
|
10
|
-
# downloader: The downloader to use, supported are 'curl' and 'wget'
|
11
10
|
#
|
12
11
|
# export_settings: The settings below are added as query parameters for base.js and base.css
|
13
12
|
# layout: You most probably won't have to change this
|
@@ -19,7 +18,7 @@
|
|
19
18
|
# styles: Name of the stylesheets, space separated without the .css extension. ex: ie ie6 ie7 ie8
|
20
19
|
# the main style base.css is included by default and MUST NOT BE SPECIFIED
|
21
20
|
# replace: Define path replacements after the stylesheets have been downloaded
|
22
|
-
# you can define multiple replacements by repeating the '-what: with:'
|
21
|
+
# you can define multiple replacements by repeating the '-what: with:' statements
|
23
22
|
# - what: What to replace, default is string. if you want to use regex, use the format r/[regex]/
|
24
23
|
# for help on regular expressions see http://www.rubular.com/ (an online editor/tester)
|
25
24
|
# with: Replace with this (string)
|
@@ -37,12 +36,10 @@
|
|
37
36
|
########################################################################################################################
|
38
37
|
version: 0.5
|
39
38
|
url: http://terrific.url
|
40
|
-
app_path: /
|
39
|
+
app_path: /terrific/webapp/path
|
41
40
|
export_path: /terrific/base/%2$s/public/%1$s/base/base.%1$s.php
|
42
|
-
libraries_source_path: /js/libraries/dynamic
|
43
|
-
#todo remove backslash
|
41
|
+
libraries_source_path: /js/libraries/dynamic
|
44
42
|
image_base_path: /img
|
45
|
-
downloader: curl
|
46
43
|
export_settings:
|
47
44
|
layout: project
|
48
45
|
debug: false
|
@@ -55,7 +52,7 @@
|
|
55
52
|
with: /images/
|
56
53
|
javascripts:
|
57
54
|
dest: public/javascripts/
|
58
|
-
dynamic_libraries:
|
55
|
+
dynamic_libraries: dynlib
|
59
56
|
libraries_dest: /
|
60
57
|
images:
|
61
58
|
- src: /
|
File without changes
|
@@ -0,0 +1,46 @@
|
|
1
|
+
|
2
|
+
module ConfigHelper
|
3
|
+
|
4
|
+
def config_default_name
|
5
|
+
'terrimporter.config.yml'
|
6
|
+
end
|
7
|
+
|
8
|
+
def schema_default_name
|
9
|
+
'schema.yml'
|
10
|
+
end
|
11
|
+
|
12
|
+
def config_working_directory_path
|
13
|
+
File.expand_path config_default_name
|
14
|
+
end
|
15
|
+
|
16
|
+
def config_working_directory_exists?
|
17
|
+
File.exists? config_working_directory_path
|
18
|
+
end
|
19
|
+
|
20
|
+
def config_example_path
|
21
|
+
File.join(base_config_path, config_default_name)
|
22
|
+
end
|
23
|
+
|
24
|
+
def schema_file_path
|
25
|
+
File.join(base_config_path, schema_default_name)
|
26
|
+
end
|
27
|
+
|
28
|
+
def create_config_file(backup_or_replace = nil)
|
29
|
+
puts "Creating configuration file"
|
30
|
+
case backup_or_replace
|
31
|
+
when :backup
|
32
|
+
puts "Backing up old configuration file to #{config_working_directory_path}.bak"
|
33
|
+
FileUtils.mv(config_working_directory_path, config_working_directory_path + '.bak')
|
34
|
+
when :replace
|
35
|
+
puts "Replacing old configuration file"
|
36
|
+
FileUtils.rm_f(config_working_directory_path) if File.exists? config_working_directory_path
|
37
|
+
end
|
38
|
+
FileUtils.cp(config_example_path, config_working_directory_path)
|
39
|
+
end
|
40
|
+
|
41
|
+
private
|
42
|
+
def base_config_path
|
43
|
+
File.join(File.dirname(__FILE__), '..', '..', 'config')
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
File without changes
|
@@ -0,0 +1,72 @@
|
|
1
|
+
require 'etc'
|
2
|
+
require 'kwalify'
|
3
|
+
require 'config_validator'
|
4
|
+
require 'config_helper'
|
5
|
+
require 'configuration'
|
6
|
+
|
7
|
+
module TerrImporter
|
8
|
+
class Application
|
9
|
+
class Configuration < Hash
|
10
|
+
include ConfigHelper
|
11
|
+
|
12
|
+
attr_accessor :validations, :config_file
|
13
|
+
|
14
|
+
def initialize(config_file = nil)
|
15
|
+
self.config_file = config_file unless config_file.nil?
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
def load_configuration
|
20
|
+
config_file_path = determine_config_file_path
|
21
|
+
puts "Configuration file located, load from #{config_file_path}"
|
22
|
+
validate_and_load_config(config_file_path)
|
23
|
+
end
|
24
|
+
|
25
|
+
def determine_config_file_path
|
26
|
+
unless self.config_file.nil?
|
27
|
+
return self.config_file
|
28
|
+
end
|
29
|
+
|
30
|
+
valid_config_paths.each do |path|
|
31
|
+
file_path = File.join path, config_default_name
|
32
|
+
return file_path if File.exists?(file_path) and not file_path.include?(File.join('terrimporter', 'config')) #default config NOT valid
|
33
|
+
end
|
34
|
+
|
35
|
+
raise ConfigurationError, %Q{config file #{config_default_name} not found in search paths. Search paths are:
|
36
|
+
#{valid_config_paths.join "\n"} \n If this is a new project, run with the option --init}
|
37
|
+
end
|
38
|
+
|
39
|
+
def valid_config_paths
|
40
|
+
[
|
41
|
+
Dir.pwd,
|
42
|
+
File.join(Dir.pwd, 'config'),
|
43
|
+
File.join(Dir.pwd, '.config'),
|
44
|
+
Etc.getpwuid.dir
|
45
|
+
]
|
46
|
+
end
|
47
|
+
|
48
|
+
#todo split!
|
49
|
+
def validate_and_load_config(file)
|
50
|
+
puts "Validating configuration..."
|
51
|
+
|
52
|
+
parser = Kwalify::Yaml::Parser.new(load_validator)
|
53
|
+
document = parser.parse_file(file)
|
54
|
+
|
55
|
+
errors = parser.errors()
|
56
|
+
if errors && !errors.empty?
|
57
|
+
error_message = errors.inject("") { |result, e| result << "#{e.linenum}:#{e.column} [#{e.path}] #{e.message}\n" }
|
58
|
+
raise ConfigurationError, error_message
|
59
|
+
end
|
60
|
+
self.merge! document
|
61
|
+
|
62
|
+
end
|
63
|
+
|
64
|
+
def load_validator
|
65
|
+
puts "Loading validator from #{schema_file_path}"
|
66
|
+
schema = Kwalify::Yaml.load_file(schema_file_path)
|
67
|
+
ConfigValidator.new(schema)
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'open-uri'
|
2
|
+
require 'uri'
|
3
|
+
|
4
|
+
module TerrImporter
|
5
|
+
class Application
|
6
|
+
class Downloader
|
7
|
+
|
8
|
+
def initialize(base_uri)
|
9
|
+
@base_uri = base_uri
|
10
|
+
puts "Downloader initialized to uri: #{base_uri}"
|
11
|
+
end
|
12
|
+
|
13
|
+
def download(remote_path, local_path=nil)
|
14
|
+
absolute_uri = absolute_path(remote_path)
|
15
|
+
if local_path.nil? #download to buffer
|
16
|
+
data = StringIO.new
|
17
|
+
|
18
|
+
puts "Downloading #{absolute_uri} to buffer"
|
19
|
+
|
20
|
+
absolute_uri.open { |io| data = io.read }
|
21
|
+
data.to_s
|
22
|
+
else
|
23
|
+
puts "Downloading #{absolute_uri} to local path #{local_path}"
|
24
|
+
|
25
|
+
open(local_path, "wb") { |file|
|
26
|
+
file.write(absolute_uri.open.read)
|
27
|
+
}
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
def absolute_path(relative_path)
|
33
|
+
URI.join(@base_uri, relative_path)
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,185 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'yaml'
|
3
|
+
require 'uri'
|
4
|
+
|
5
|
+
module TerrImporter
|
6
|
+
|
7
|
+
class DefaultError < StandardError
|
8
|
+
end
|
9
|
+
|
10
|
+
class ConfigurationError < StandardError
|
11
|
+
end
|
12
|
+
|
13
|
+
class ConfigurationMissingError < StandardError
|
14
|
+
end
|
15
|
+
|
16
|
+
class Application
|
17
|
+
class Importer
|
18
|
+
include Logging
|
19
|
+
|
20
|
+
attr_accessor :options, :config
|
21
|
+
|
22
|
+
def initialize(options = {})
|
23
|
+
self.options = options
|
24
|
+
self.config = Configuration.new options[:config_file]
|
25
|
+
self.config.load_configuration
|
26
|
+
@downloader = Downloader.new config['url']
|
27
|
+
end
|
28
|
+
|
29
|
+
def run
|
30
|
+
if options[:all] != nil and options[:all] == true
|
31
|
+
puts "Import of everything started"
|
32
|
+
import_js
|
33
|
+
import_css
|
34
|
+
import_images
|
35
|
+
else
|
36
|
+
options.each do |option, value|
|
37
|
+
if option.to_s =~ /^import_/ and value == true
|
38
|
+
puts "Import of #{option.to_s.split('_').last} started"
|
39
|
+
self.send option.to_s
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def import_css
|
46
|
+
unclean_suffix = "_unclean"
|
47
|
+
|
48
|
+
check_and_create_dir config['stylesheets']['dest']
|
49
|
+
|
50
|
+
#create stylesheet array and add base.css
|
51
|
+
styles = config['stylesheets']['styles'].split(" ")
|
52
|
+
styles << "base"
|
53
|
+
|
54
|
+
styles.each do |css|
|
55
|
+
destination_path = File.join(config['stylesheets']['dest'], css + ".css")
|
56
|
+
options = {}
|
57
|
+
options[:suffix] = css if css.include?('ie') #add ie option if in array
|
58
|
+
|
59
|
+
source_url = construct_export_path(:css, options)
|
60
|
+
|
61
|
+
@downloader.download(source_url, destination_path + unclean_suffix)
|
62
|
+
|
63
|
+
#do line replacement
|
64
|
+
puts "Start css line replacements"
|
65
|
+
File.open(destination_path, 'w') do |d|
|
66
|
+
File.open(destination_path + unclean_suffix, 'r') do |s|
|
67
|
+
lines = s.readlines
|
68
|
+
lines.each do |line|
|
69
|
+
d.print stylesheet_replace_strings!(line)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
puts "Deleting unclean css files"
|
74
|
+
FileUtils.remove destination_path + unclean_suffix
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def import_js
|
79
|
+
check_and_create_dir config['javascripts']['dest']
|
80
|
+
destination_path = File.join(config['javascripts']['dest'], "base.js")
|
81
|
+
js_source_url = construct_export_path :js
|
82
|
+
|
83
|
+
puts "Importing base.js from #{js_source_url} to #{destination_path}"
|
84
|
+
|
85
|
+
@downloader.download(js_source_url, destination_path)
|
86
|
+
|
87
|
+
|
88
|
+
libraries_destination_path = File.join(config['javascripts']['dest'], config['javascripts']['libraries_dest'])
|
89
|
+
check_and_create_dir libraries_destination_path
|
90
|
+
js_libraries = config['javascripts']['dynamic_libraries'].split(" ")
|
91
|
+
|
92
|
+
puts "Importing libraries from #{config['libraries_source_path']} to #{libraries_destination_path}"
|
93
|
+
|
94
|
+
js_libraries.each do |lib|
|
95
|
+
@downloader.download(File.join(config['libraries_source_path'], lib+ ".js"), File.join(libraries_destination_path, lib + ".js"))
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
def import_images
|
100
|
+
config['images'].each do |image|
|
101
|
+
check_and_create_dir image['dest']
|
102
|
+
image_source_path = File.join(config['image_base_path'], image['src'])
|
103
|
+
batch_download(image_source_path, image['dest'], image['types'])
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
private
|
108
|
+
|
109
|
+
def batch_download(relative_source_path, relative_dest_path, type_filter = "")
|
110
|
+
source_path = relative_source_path
|
111
|
+
|
112
|
+
puts "Downloading multiple files from #{config['url']}#{source_path} to #{relative_dest_path} #{"allowed extensions: " + type_filter unless type_filter.empty?}"
|
113
|
+
|
114
|
+
files = html_directory_content_list(source_path)
|
115
|
+
|
116
|
+
unless type_filter.empty?
|
117
|
+
puts "Appling type filter: #{type_filter}"
|
118
|
+
files = files.find_all { |file| file =~ Regexp.new(".*" + type_filter.strip.gsub(" ", "|") + "$") }
|
119
|
+
end
|
120
|
+
|
121
|
+
puts "Downloading #{files.size} files..."
|
122
|
+
files.each do |file|
|
123
|
+
destination_path = File.join(relative_dest_path, file)
|
124
|
+
@downloader.download(File.join(source_path,file), destination_path)
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
def html_directory_content_list(source_path)
|
129
|
+
puts "Getting html directory list"
|
130
|
+
output = @downloader.download(source_path)
|
131
|
+
files = []
|
132
|
+
|
133
|
+
output.scan(/<a\shref=\"([^\"]+)\"/) do |res|
|
134
|
+
files << res[0] if not res[0] =~ /^\?/ and not res[0] =~ /.*\/$/ and res[0].size > 1
|
135
|
+
end
|
136
|
+
puts "Found #{files.size} files"
|
137
|
+
files
|
138
|
+
end
|
139
|
+
|
140
|
+
def construct_export_path(for_what = :js, options={})
|
141
|
+
raise DefaultError, "Specify js or css url" unless for_what == :js or for_what == :css
|
142
|
+
export_settings = config['export_settings'].clone
|
143
|
+
|
144
|
+
export_settings['application'] = config['app_path']
|
145
|
+
export_settings.merge!(options)
|
146
|
+
export_settings['appbaseurl'] = "" if for_what == :css
|
147
|
+
|
148
|
+
#glue everything together
|
149
|
+
export_path = config['export_path']
|
150
|
+
export_path.insert(0, "/") unless export_path.match(/^\//)
|
151
|
+
|
152
|
+
export_path = export_path % [for_what.to_s, config['version']] #replace placeholders
|
153
|
+
export_path << '?' << export_settings.map { |k, v| "#{URI.escape(k.to_s)}=#{URI.escape(v.to_s)}" }.join("&")
|
154
|
+
export_path
|
155
|
+
end
|
156
|
+
|
157
|
+
def check_and_create_dir(dir, create = true)
|
158
|
+
created_or_exists = false
|
159
|
+
unless File.directory?(dir)
|
160
|
+
puts "Directory #{dir} does not exists... it will #{"not" unless create} be created"
|
161
|
+
if create
|
162
|
+
FileUtils.mkpath(dir)
|
163
|
+
created_or_exists = true
|
164
|
+
end
|
165
|
+
else
|
166
|
+
created_or_exists = true
|
167
|
+
end
|
168
|
+
created_or_exists
|
169
|
+
end
|
170
|
+
|
171
|
+
def stylesheet_replace_strings!(line)
|
172
|
+
config['stylesheets']['replace'].each do |replace|
|
173
|
+
what = replace['what']
|
174
|
+
with = replace['with']
|
175
|
+
what = Regexp.new "#{$1}" if what.match(/^r\/(.*)\//)
|
176
|
+
|
177
|
+
puts "Replacing #{what.to_s} with #{with}"
|
178
|
+
|
179
|
+
line.gsub! what, with
|
180
|
+
end
|
181
|
+
line
|
182
|
+
end
|
183
|
+
end
|
184
|
+
end
|
185
|
+
end
|
@@ -9,6 +9,7 @@ module TerrImporter
|
|
9
9
|
@orig_args = args.clone
|
10
10
|
|
11
11
|
self[:verbose] = true
|
12
|
+
self[:show_help] = false
|
12
13
|
|
13
14
|
require 'optparse'
|
14
15
|
@opts = OptionParser.new do |o|
|
@@ -24,10 +25,15 @@ module TerrImporter
|
|
24
25
|
end
|
25
26
|
|
26
27
|
o.on('-c', '--css', 'export configured css files') { self[:import_css] = true }
|
28
|
+
|
27
29
|
o.on('-i', '--img', 'export configured image files') { self[:import_images] = true }
|
30
|
+
|
28
31
|
o.on('-j', '--js', 'export configured javascript files') { self[:import_js] = true }
|
29
|
-
|
30
|
-
|
32
|
+
|
33
|
+
o.on('--init [CONFIG_EXISTS]', [:backup, :replace], 'create configuration file in current working directory. use optional argument to force file replacement (backup, replace)') do |init|
|
34
|
+
self[:init] = init || true
|
35
|
+
end
|
36
|
+
|
31
37
|
o.on('-f', '--config CONFIG_FILE', 'use alternative configuration file') do |config_file|
|
32
38
|
self[:config_file] = config_file
|
33
39
|
end
|
@@ -35,14 +41,12 @@ module TerrImporter
|
|
35
41
|
o.separator ''
|
36
42
|
o.separator 'Additional configuration:'
|
37
43
|
|
38
|
-
#o.on('-v', '--verbose [on, off], default [on]', [true, false], 'Verbose mode') do |v|
|
39
44
|
o.on('-v', '--[no-]verbose', 'run verbosely') do |v|
|
40
45
|
self[:verbose] = v
|
41
46
|
end
|
42
47
|
|
43
48
|
o.on('--version', 'Show version') do
|
44
|
-
|
45
|
-
exit
|
49
|
+
self[:show_version] = true
|
46
50
|
end
|
47
51
|
|
48
52
|
o.on_tail('-h', '--help', 'display this help and exit') { self[:show_help] = true }
|
@@ -51,7 +55,7 @@ module TerrImporter
|
|
51
55
|
begin
|
52
56
|
@opts.parse!(args)
|
53
57
|
show_help_on_no_options
|
54
|
-
self[:input_file] = args.shift
|
58
|
+
#self[:input_file] = args.shift #todo remove if really not necessary
|
55
59
|
rescue OptionParser::InvalidOption => e
|
56
60
|
self[:invalid_argument] = e.message
|
57
61
|
end
|
@@ -62,9 +66,13 @@ module TerrImporter
|
|
62
66
|
end
|
63
67
|
|
64
68
|
def show_help_on_no_options
|
65
|
-
|
69
|
+
unless self[:import_css] or self[:import_js] or self[:import_images] or self[:init] or self[:version]
|
70
|
+
puts "None of the default options selected, showing help"
|
71
|
+
self[:show_help] = true
|
72
|
+
else
|
73
|
+
self[:show_help] = false
|
74
|
+
end
|
66
75
|
end
|
67
|
-
|
68
76
|
end
|
69
77
|
end
|
70
78
|
end
|
data/lib/terrimporter/version.rb
CHANGED