ftp_paradise 1.4.5 → 1.5.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +155 -28
  3. data/bin/{iftp → ftp_paradise_shell} +1 -1
  4. data/doc/README.gen +97 -15
  5. data/doc/todo/{TODO_FOR_FTP_PARADISE_PROJECT.md → todo_for_the_ftp_paradise_project.md} +11 -1
  6. data/ftp_paradise.gemspec +30 -39
  7. data/lib/ftp_paradise/base/base.rb +375 -0
  8. data/lib/ftp_paradise/colours/colours.rb +27 -27
  9. data/lib/ftp_paradise/colours/use_colours.rb +6 -1
  10. data/lib/ftp_paradise/configuration/configuration.rb +7 -4
  11. data/lib/ftp_paradise/connection/README.md +0 -0
  12. data/lib/ftp_paradise/connection/connection.rb +2782 -15
  13. data/lib/ftp_paradise/constants/constants.rb +91 -5
  14. data/lib/ftp_paradise/entry/entry.rb +42 -5
  15. data/lib/ftp_paradise/{connection → gui/gtk3/ftp_client}/constants.rb +33 -21
  16. data/lib/ftp_paradise/gui/{shared_code/ftp_paradise/ftp_paradise_module.rb → gtk3/ftp_client/ftp_client.rb} +658 -170
  17. data/lib/ftp_paradise/gui/gtk3/ftp_client/misc.rb +27 -0
  18. data/lib/ftp_paradise/project/project.rb +11 -15
  19. data/lib/ftp_paradise/requires/require_class_connection.rb +7 -0
  20. data/lib/ftp_paradise/requires/require_net_ftp.rb +7 -0
  21. data/lib/ftp_paradise/requires/require_the_ftp_paradise_project.rb +4 -3
  22. data/lib/ftp_paradise/requires/require_the_ftp_paradise_project_with_the_GUI_bindings.rb +1 -1
  23. data/lib/ftp_paradise/requires/require_the_toplevel_methods.rb +1 -0
  24. data/lib/ftp_paradise/{interactive_ftp → shell}/menu.rb +564 -449
  25. data/lib/ftp_paradise/shell/shell.rb +2321 -0
  26. data/lib/ftp_paradise/toplevel_methods/connect.rb +3 -0
  27. data/lib/ftp_paradise/toplevel_methods/dataset.rb +111 -0
  28. data/lib/ftp_paradise/toplevel_methods/file_related_actions.rb +4 -3
  29. data/lib/ftp_paradise/toplevel_methods/ftp_object.rb +6 -5
  30. data/lib/ftp_paradise/toplevel_methods/login_name.rb +6 -4
  31. data/lib/ftp_paradise/toplevel_methods/misc.rb +19 -0
  32. data/lib/ftp_paradise/toplevel_methods/opn.rb +1 -1
  33. data/lib/ftp_paradise/toplevel_methods/password.rb +4 -2
  34. data/lib/ftp_paradise/toplevel_methods/port.rb +4 -1
  35. data/lib/ftp_paradise/toplevel_methods/remote_url.rb +11 -5
  36. data/lib/ftp_paradise/toplevel_methods/upload_and_download.rb +1 -0
  37. data/lib/ftp_paradise/version/version.rb +6 -1
  38. data/lib/ftp_paradise/www/web_interface.cgi +1 -1
  39. data/lib/ftp_paradise/yaml/automatically_connect_on_startup_of_the_interactive_ftp_shell.yml +0 -0
  40. data/lib/ftp_paradise/yaml/debug.yml +0 -0
  41. data/lib/ftp_paradise/yaml/open_in_default_editor.yml +0 -0
  42. data/lib/ftp_paradise/yaml/show_full_names.yml +0 -0
  43. data/lib/ftp_paradise/yaml/use_colours.yml +0 -0
  44. data/test/testing_minimal_pure_net_ftp_example_to_connect.rb +13 -3
  45. metadata +52 -126
  46. data/lib/ftp_paradise/base/cliner.rb +0 -23
  47. data/lib/ftp_paradise/base/colours.rb +0 -83
  48. data/lib/ftp_paradise/base/prototype.rb +0 -171
  49. data/lib/ftp_paradise/base/reset.rb +0 -29
  50. data/lib/ftp_paradise/connection/data.rb +0 -164
  51. data/lib/ftp_paradise/connection/debug.rb +0 -78
  52. data/lib/ftp_paradise/connection/directory_handling.rb +0 -271
  53. data/lib/ftp_paradise/connection/do_login.rb +0 -108
  54. data/lib/ftp_paradise/connection/download.rb +0 -86
  55. data/lib/ftp_paradise/connection/file_handling.rb +0 -174
  56. data/lib/ftp_paradise/connection/ftp_object.rb +0 -21
  57. data/lib/ftp_paradise/connection/initialize.rb +0 -88
  58. data/lib/ftp_paradise/connection/initialize_a_new_net_ftp_object_with_this_url.rb +0 -20
  59. data/lib/ftp_paradise/connection/is_connected.rb +0 -46
  60. data/lib/ftp_paradise/connection/misc.rb +0 -474
  61. data/lib/ftp_paradise/connection/notify.rb +0 -71
  62. data/lib/ftp_paradise/connection/password.rb +0 -47
  63. data/lib/ftp_paradise/connection/port.rb +0 -33
  64. data/lib/ftp_paradise/connection/remote_pwd.rb +0 -72
  65. data/lib/ftp_paradise/connection/remote_url.rb +0 -164
  66. data/lib/ftp_paradise/connection/remove.rb +0 -143
  67. data/lib/ftp_paradise/connection/reset.rb +0 -78
  68. data/lib/ftp_paradise/connection/run.rb +0 -18
  69. data/lib/ftp_paradise/connection/set_array_available_hosts.rb +0 -27
  70. data/lib/ftp_paradise/connection/set_input.rb +0 -18
  71. data/lib/ftp_paradise/connection/show.rb +0 -153
  72. data/lib/ftp_paradise/connection/sync_ftp_object_onto_the_main_namespace.rb +0 -24
  73. data/lib/ftp_paradise/connection/transfer_mode.rb +0 -163
  74. data/lib/ftp_paradise/connection/upload.rb +0 -253
  75. data/lib/ftp_paradise/connection/use_default_dataset.rb +0 -40
  76. data/lib/ftp_paradise/connection/username.rb +0 -42
  77. data/lib/ftp_paradise/constants/misc.rb +0 -57
  78. data/lib/ftp_paradise/constants/namespace.rb +0 -14
  79. data/lib/ftp_paradise/constants/newline.rb +0 -14
  80. data/lib/ftp_paradise/constants/roebe.rb +0 -31
  81. data/lib/ftp_paradise/constants/roebe_ftp_constants.rb +0 -233
  82. data/lib/ftp_paradise/gui/gtk2/ftp_paradise.rb +0 -34
  83. data/lib/ftp_paradise/gui/gtk3/ftp_paradise.rb +0 -34
  84. data/lib/ftp_paradise/interactive_ftp/constants.rb +0 -103
  85. data/lib/ftp_paradise/interactive_ftp/directory_handling.rb +0 -216
  86. data/lib/ftp_paradise/interactive_ftp/help.rb +0 -50
  87. data/lib/ftp_paradise/interactive_ftp/initialize.rb +0 -27
  88. data/lib/ftp_paradise/interactive_ftp/interactive_ftp.rb +0 -998
  89. data/lib/ftp_paradise/interactive_ftp/main_loop.rb +0 -51
  90. data/lib/ftp_paradise/interactive_ftp/misc.rb +0 -208
  91. data/lib/ftp_paradise/interactive_ftp/mode.rb +0 -124
  92. data/lib/ftp_paradise/interactive_ftp/readline.rb +0 -113
  93. data/lib/ftp_paradise/interactive_ftp/remove.rb +0 -97
  94. data/lib/ftp_paradise/interactive_ftp/reset.rb +0 -90
  95. data/lib/ftp_paradise/interactive_ftp/run.rb +0 -22
  96. data/lib/ftp_paradise/interactive_ftp/show.rb +0 -184
  97. data/lib/ftp_paradise/interactive_ftp/upload.rb +0 -90
  98. data/lib/ftp_paradise/interactive_ftp/user_input.rb +0 -53
  99. data/lib/ftp_paradise/toplevel_methods/can_connect_to_remote_site.rb +0 -28
  100. data/lib/ftp_paradise/toplevel_methods/clear_user_dataset.rb +0 -28
  101. data/lib/ftp_paradise/toplevel_methods/data.rb +0 -31
  102. data/lib/ftp_paradise/toplevel_methods/determine_user_dataset_from_this_hash.rb +0 -37
@@ -1,233 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # Encoding: UTF-8
3
- # frozen_string_literal: true
4
- # =========================================================================== #
5
- # require 'ftp_paradise/constants/roebe_ftp_constants.rb'
6
- # include FtpParadise::RoebeFtpConstants
7
- # =========================================================================== #
8
- module FtpParadise # === FtpParadise::RoebeFtpConstants
9
-
10
- module RoebeFtpConstants
11
-
12
- require 'ftp_paradise/constants/roebe.rb'
13
- require 'yaml'
14
-
15
- # ========================================================================= #
16
- # === FtpParadise::RoebeFtpConstants::@hash_ftp_dataset
17
- # ========================================================================= #
18
- @hash_ftp_dataset = {}
19
-
20
- # ========================================================================= #
21
- # === FTP_DATASET
22
- #
23
- # Here we will load my custom ftp file, but only if this file exists.
24
- #
25
- # If it does not exist, then we will not load it, and we will not
26
- # make use of it. That way others can ignore this file altogether.
27
- #
28
- # The location for my file is at:
29
- #
30
- # bl $MY_FTP/YAML/roebe_ftp.yml
31
- #
32
- # ========================================================================= #
33
- if File.exist? FILE_ROEBE_FTP
34
- FTP_DATASET = FILE_ROEBE_FTP
35
- else
36
- begin
37
- home_dir = File.expand_path('~')
38
- rescue; end
39
- home_dir = '/root' if home_dir.nil? # A safeguard here if ENV is unavailable.
40
- FTP_DATASET = "#{home_dir}/roebe_ftp.yml"
41
- end
42
-
43
- # ========================================================================= #
44
- # === FtpParadise::RoebeFtpConstants.file?
45
- #
46
- # Feedback where that file is.
47
- # ========================================================================= #
48
- def self.file?
49
- FILE_ROEBE_FTP
50
- end
51
-
52
- # ========================================================================= #
53
- # === FtpParadise::RoebeFtpConstants.hash_ftp_dataset?
54
- # ========================================================================= #
55
- def self.hash_ftp_dataset?
56
- @hash_ftp_dataset
57
- end; self.instance_eval { alias hash? hash_ftp_dataset? } # === FtpParadise::RoebeFtpConstants.hash_ftp_dataset?.hash?
58
-
59
- # ========================================================================= #
60
- # Next check whether the roebe_ftp.yml file exists. If it does then
61
- # we will load it up.
62
- # ========================================================================= #
63
- if File.exist? file?
64
- dataset = YAML.load_file(file?)
65
- @hash_ftp_dataset.update(dataset) # Sync the dataset.
66
- # ======================================================================= #
67
- # The format of the dataset has to be uniform. We start with the
68
- # remote URL, then the user name, the password, and then the port.
69
- # ======================================================================= #
70
-
71
- # ======================================================================= #
72
- # === A1 TAG
73
- # ======================================================================= #
74
- _ = dataset['a1']
75
- A1 = [
76
- _['url'],
77
- _['user_name'],
78
- _['password'],
79
- _['port']
80
- ]
81
-
82
- # ======================================================================= #
83
- # === ZYMIX TAG
84
- # ======================================================================= #
85
- _ = dataset['zymix']
86
- ZYMIX = [
87
- _['url'],
88
- _['user_name'],
89
- _['password'],
90
- _['port']
91
- ]
92
-
93
- # ======================================================================= #
94
- # === Bytehost Tag
95
- #
96
- # bl $MY_FTP/YAML/roebe_ftp.yml
97
- # ======================================================================= #
98
- _ = dataset['bytehost']
99
- BYTEHOST = [
100
- _['url'],
101
- _['user_name'],
102
- _['password'],
103
- _['port']
104
- ]
105
-
106
- # ======================================================================= #
107
- # === UNIVIE
108
- #
109
- # Uni tag, Univie tag
110
- # ======================================================================= #
111
- _ = dataset['univie']
112
- UNIVIE = [
113
- _['url'],
114
- _['user_name'],
115
- _['password'],
116
- _['port']
117
- ]
118
-
119
- # ======================================================================= #
120
- # === Zerofees tag
121
- # ======================================================================= #
122
- _ = dataset['zerofees']
123
- ZEROFEES = [
124
- _['url'],
125
- _['user_name'],
126
- _['password'],
127
- _['port']
128
- ]
129
-
130
- # ======================================================================= #
131
- # === UCOZ tag
132
- # ======================================================================= #
133
- _ = dataset['ucoz']
134
- UCOZ = [
135
- _['url'],
136
- _['user_name'],
137
- _['password'],
138
- _['port']
139
- ]
140
-
141
- # ======================================================================= #
142
- # === UNIWIEN_HOMEPAGE tag
143
- # ======================================================================= #
144
- _ = dataset['uniwien_homepage']
145
- UNIWIEN_HOMEPAGE = [
146
- _['url'],
147
- _['user_name'],
148
- _['password'],
149
- _['port']
150
- ]
151
-
152
- # ======================================================================= #
153
- # === bplaced
154
- # ======================================================================= #
155
- _ = dataset['bplaced']
156
- BPLACED = [
157
- _['url'],
158
- _['user_name'],
159
- _['password'],
160
- _['port']
161
- ]
162
-
163
- # ======================================================================= #
164
- # === podserver
165
- # ======================================================================= #
166
- _ = dataset['podserver']
167
- PODSERVER = [
168
- _['url'],
169
- _['user_name'],
170
- _['password'],
171
- _['port']
172
- ]
173
-
174
- # ======================================================================= #
175
- # === RoebeFtpConstants::ARRAY_AVAILABLE_HOSTS
176
- #
177
- # All available hosts are kept in the following Array.
178
- #
179
- # It is always available when the roebe_ftp.yml file was found.
180
- #
181
- # Append to this Array if you add new entries above.
182
- # ======================================================================= #
183
- ARRAY_AVAILABLE_HOSTS = [
184
- BYTEHOST.first,
185
- A1.first,
186
- ZYMIX.first,
187
- UNIVIE.first,
188
- ZEROFEES.first,
189
- UCOZ.first,
190
- UNIWIEN_HOMEPAGE.first,
191
- PODSERVER.first
192
- ]
193
- end
194
-
195
- # ========================================================================= #
196
- # === RoebeFtpConstants.possible_hosts?
197
- # ========================================================================= #
198
- def self.possible_hosts?
199
- ARRAY_AVAILABLE_HOSTS
200
- end
201
-
202
- # ========================================================================= #
203
- # === RoebeFtpConstants.geas?
204
- # ========================================================================= #
205
- def self.geas?
206
- GEAS
207
- end
208
-
209
- # ========================================================================= #
210
- # === RoebeFtpConstants.return_user_name_based_on_given_host
211
- #
212
- # This method may return the proper user name.
213
- # ========================================================================= #
214
- def self.return_user_name_based_on_given_host(i)
215
- if ARRAY_AVAILABLE_HOSTS.include? i
216
- i = PODSERVER[1] # Hardcoded for now. [1] is the user-name.
217
- end if FtpParadise.const_defined? :RoebeFtpConstants
218
- i
219
- end
220
-
221
- end; end
222
-
223
- if __FILE__ == $PROGRAM_NAME # Testing RoebeFtpConstants next.
224
- require 'cliner'
225
- require 'colours/colours_e_autoinclude.rb'
226
- include RoebeFtpConstants
227
- cliner
228
- e RoebeFtpConstants.file?
229
- cliner
230
- pp RoebeFtpConstants.hash_ftp_dataset?
231
- pp RoebeFtpConstants::GEAS
232
- pp RoebeFtpConstants.geas?
233
- end # $FTP_PARADISE/roebe_ftp_constants.rb
@@ -1,34 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # Encoding: UTF-8
3
- # frozen_string_literal: true
4
- # =========================================================================== #
5
- # === FtpParadise::GUI::Gtk::FtpParadise
6
- # =========================================================================== #
7
- # require 'ftp_paradise/gui/gtk2/ftp_paradise.rb'
8
- # FtpParadise::GUI::Gtk::FtpParadise.run
9
- # =========================================================================== #
10
- require 'gtk_paradise/require_gtk2'
11
-
12
- module FtpParadise
13
-
14
- module GUI
15
-
16
- module Gtk
17
-
18
- class FtpParadise < ::Gtk::Box
19
-
20
- require 'ftp_paradise/gui/shared_code/ftp_paradise/ftp_paradise_module.rb'
21
- include ::FtpParadise::GUI::Gtk::FtpParadiseModule
22
-
23
- # ========================================================================= #
24
- # === FtpParadise::GUI::Gtk::FtpParadise.run
25
- # ========================================================================= #
26
- def self.run
27
- ::FtpParadise::GUI::Gtk::FtpParadiseModule.run
28
- end
29
-
30
- end; end; end; end
31
-
32
- if __FILE__ == $PROGRAM_NAME
33
- FtpParadise::GUI::Gtk::FtpParadise.run
34
- end
@@ -1,34 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # Encoding: UTF-8
3
- # frozen_string_literal: true
4
- # =========================================================================== #
5
- # === FtpParadise::GUI::Gtk::FtpParadise
6
- # =========================================================================== #
7
- # require 'ftp_paradise/gui/gtk3/ftp_paradise.rb'
8
- # FtpParadise::GUI::Gtk::FtpParadise.run
9
- # =========================================================================== #
10
- require 'gtk_paradise/require_gtk3'
11
-
12
- module FtpParadise
13
-
14
- module GUI
15
-
16
- module Gtk
17
-
18
- class FtpParadise < ::Gtk::Box
19
-
20
- require 'ftp_paradise/gui/shared_code/ftp_paradise/ftp_paradise_module.rb'
21
- include ::FtpParadise::GUI::Gtk::FtpParadiseModule
22
-
23
- # ========================================================================= #
24
- # === FtpParadise::GUI::Gtk::FtpParadise.run
25
- # ========================================================================= #
26
- def self.run
27
- ::FtpParadise::GUI::Gtk::FtpParadiseModule.run
28
- end
29
-
30
- end; end; end; end
31
-
32
- if __FILE__ == $PROGRAM_NAME
33
- FtpParadise::GUI::Gtk::FtpParadise.run
34
- end
@@ -1,103 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # Encoding: UTF-8
3
- # frozen_string_literal: true
4
- # =========================================================================== #
5
- # All constants for class Interactive shall be stored in this file here.
6
- # =========================================================================== #
7
- # require 'ftp_paradise/interactive_ftp/constants.rb'
8
- # =========================================================================== #
9
- module FtpParadise
10
-
11
- class InteractiveFtp # === FtpParadise::InteractiveFtp
12
-
13
- require 'ftp_paradise/toplevel_methods/rds.rb'
14
-
15
- # ========================================================================= #
16
- # === NAMESPACE
17
- # ========================================================================= #
18
- NAMESPACE = inspect
19
-
20
- # ========================================================================= #
21
- # === TITLE
22
- # ========================================================================= #
23
- TITLE = 'Interactive FTP'
24
-
25
- # ========================================================================= #
26
- # === SHOW_REMOTE_FILES_UPON_SUCCESSFUL_LOGIN
27
- #
28
- # If this constant is true then we will show the remote file
29
- # listing upon a successful (first) login action.
30
- # ========================================================================= #
31
- SHOW_REMOTE_FILES_UPON_SUCCESSFUL_LOGIN = false
32
-
33
- # ========================================================================= #
34
- # === SHALL_WE_DEBUG
35
- # ========================================================================= #
36
- SHALL_WE_DEBUG = true
37
-
38
- # ========================================================================= #
39
- # === PROMPT_TO_USE
40
- #
41
- # Which Prompt to use by default for the Interactive FTP component.
42
- # ========================================================================= #
43
- PROMPT_TO_USE = '> '
44
-
45
- # ========================================================================= #
46
- # === ARRAY_FORBIDDEN_HISTORY_COMMANDS
47
- # ========================================================================= #
48
- ARRAY_FORBIDDEN_HISTORY_COMMANDS = %w(
49
- last
50
- ) # Dont append last to the history.
51
-
52
- # ========================================================================= #
53
- # === OPEN_IN_DEFAULT_EDITOR
54
- # ========================================================================= #
55
- OPEN_IN_DEFAULT_EDITOR = true
56
-
57
- # ========================================================================= #
58
- # === USE_THIS_EDITOR
59
- # ========================================================================= #
60
- USE_THIS_EDITOR = ENV['EDITOR'].to_s
61
-
62
- # ========================================================================= #
63
- # === DEFAULT_LOCAL_DIRECTORY
64
- # ========================================================================= #
65
- DEFAULT_LOCAL_DIRECTORY = ::FtpParadise.rds("#{Dir.pwd}/") # More flexible that way, I suppose.
66
-
67
- # ========================================================================= #
68
- # === NAME_OF_THIS_FILE
69
- # ========================================================================= #
70
- NAME_OF_THIS_FILE = "#{PROJECT_BASE_DIRECTORY}interactive_ftp.rb"
71
-
72
- # ========================================================================= #
73
- # === ARRAY_PROJECT_FILES
74
- #
75
- # The following files have to be opened when you wish to open the
76
- # project files.
77
- # ========================================================================= #
78
- ARRAY_PROJECT_FILES = %w(
79
- library.rb
80
- interactive.rb
81
- addon/constants/roebe_ftp_constants.rb
82
- doc/TODO
83
- ).map {|entry| PROJECT_BASE_DIRECTORY+entry}
84
-
85
- # ========================================================================= #
86
- # === DEFAULT_REMOTE_DIRECTORY
87
- #
88
- # The default remote directory.
89
- # ========================================================================= #
90
- DEFAULT_REMOTE_DIRECTORY = %q(
91
- htdocs
92
- ).delete("\n").strip # kill newlines and empty spaces.
93
-
94
- # ========================================================================= #
95
- # === DEFAULT_REMOTE_FILE
96
- #
97
- # The default remote file comes next.
98
- # ========================================================================= #
99
- DEFAULT_REMOTE_FILE = %q(
100
- README.md
101
- ).gsub(/\n/,'').strip
102
-
103
- end; end
@@ -1,216 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # Encoding: UTF-8
3
- # frozen_string_literal: true
4
- # =========================================================================== #
5
- # require 'ftp_paradise/interactive_ftp/directory_handling.rb'
6
- # =========================================================================== #
7
- module FtpParadise
8
-
9
- class InteractiveFtp
10
-
11
- # ========================================================================= #
12
- # === ftp_remote_directory?
13
- # ========================================================================= #
14
- def ftp_remote_directory?
15
- ftp?.remote_directory?
16
- end; alias return_remote_pwd ftp_remote_directory? # === return_remote_pwd
17
-
18
- # ========================================================================= #
19
- # === report_remote_directory
20
- #
21
- # This method will report the remote directory.
22
- # ========================================================================= #
23
- def report_remote_directory(
24
- make_newline = true
25
- )
26
- if is_connected?
27
- remote_dir = sdir(ftp_remote_directory?)
28
- if make_newline
29
- e 'The remote directory is: '
30
- e " #{sdir(remote_dir)}"
31
- else
32
- e 'The remote directory is: '+sdir(remote_dir)
33
- end
34
- else
35
- e 'No connection is available. You may have to re-connect again.'
36
- end
37
- end; alias show_remote_directory report_remote_directory # === show_remote_directory
38
-
39
- # ========================================================================= #
40
- # === remote_directory?
41
- # ========================================================================= #
42
- def remote_directory?
43
- @remote_directory
44
- end
45
-
46
- # ========================================================================= #
47
- # === set_remote_directory
48
- # ========================================================================= #
49
- def set_remote_directory(i)
50
- i = File.dirname(i) if ftp?.is_file?(i) # Get the base directory here.
51
- @remote_directory = i
52
- @array_history_remote_directories << @remote_directory
53
- end
54
-
55
- # ========================================================================= #
56
- # === upload_directory
57
- # ========================================================================= #
58
- def upload_directory(i)
59
- ftp?.upload_directory(i)
60
- end
61
-
62
- # ========================================================================= #
63
- # === remote_change_directory
64
- #
65
- # This method can be used to change directory on the remote host.
66
- #
67
- # An argument such as :show_remote_file_listing can be passed as second
68
- # argument to this method, in which case we will list the content of
69
- # the remote directory after the cd-action.
70
- #
71
- # If readline is used, as determined by the instance variable @use_readline,
72
- # then we will attempt to cd-<TAB>.
73
- #
74
- # Invocation example:
75
- #
76
- # rcd htdocs
77
- #
78
- # ========================================================================= #
79
- def remote_change_directory(
80
- i = f?,
81
- optional_instruction = nil,
82
- be_verbose = false
83
- )
84
- i = i.first if i.is_a? Array
85
- i = '..' if i.nil? # <- Tiny "safeguard".
86
- # ======================================================================= #
87
- # We must first check whether we input only numbers,
88
- # and whether such a directory does NOT exist.
89
- # ======================================================================= #
90
- if (i =~ /^\d+$/) and !is_dir?(i)
91
- ftp?.update_file_listing
92
- i = ftp?.array_file_listing[i.to_i - 1]
93
- end
94
- if be_verbose
95
- e "Trying to cd into the remote directory `#{sfancy(i)}`."
96
- end
97
- case i # case tag
98
- when '?' # intercept ?
99
- e 'You went into these remote directories so far:'
100
- @array_history_remote_directories.each { |entry|
101
- e "- #{entry}"
102
- }
103
- else # This is the default.
104
- if i
105
- i.squeeze!('/') if i.include? '//' # Get rid of multiple //.
106
- e "Changing remote directory to `#{sdir(i)}` now."
107
- end
108
- begin
109
- ftp?.chdir(i)
110
- set_remote_directory(i)
111
- if optional_instruction
112
- case optional_instruction
113
- when :show_remote_file_listing
114
- show_remote_files
115
- end
116
- end
117
- rescue Exception => error
118
- pp error
119
- end
120
- end
121
- end; alias remote_cd remote_change_directory # === remote_cd
122
-
123
- # ========================================================================= #
124
- # === change_local_and_remote_directories
125
- #
126
- # We combine local cd and remote cd here.
127
- # ========================================================================= #
128
- def change_local_and_remote_directories(
129
- target = DEFAULT_LOCAL_DIRECTORY
130
- )
131
- change_directory(target, :be_silent) # Mandatory since as of 01.05.2011
132
- if are_we_connected?
133
- remote_change_directory(target) # Since as of August 2011.
134
- end
135
- end
136
-
137
- # ========================================================================= #
138
- # === set_start_directory=
139
- # ========================================================================= #
140
- def set_start_directory=(i) # set_start_directory=(i)
141
- change_directory(i)
142
- end
143
-
144
- # ========================================================================= #
145
- # === change_directory (cd tag)
146
- #
147
- # This only changes for local directories, not remote directories.
148
- # ========================================================================= #
149
- def change_directory(
150
- i = DEFAULT_LOCAL_DIRECTORY,
151
- be_verbose = true
152
- )
153
- i = '..' if i.nil?
154
- be_verbose = false if be_verbose == :be_silent
155
- i = i.to_s
156
- i.gsub!(/; pwd/,'') if i.include? '; pwd'
157
- begin
158
- i = get_env_of(i) if i.include? '$'
159
- if File.exist?(i)
160
- # =================================================================== #
161
- # Next, do the actual "change directory" action.
162
- # =================================================================== #
163
- Dir.chdir(i) # This will cd for local directories.
164
- i = return_pwd if i == '..'
165
- i = rds(return_pwd) unless i.include? '/'
166
- set_local_directory(i) # Set the new pwd here.
167
- report_local_directory if be_verbose
168
- else # else, the directory does not exist.
169
- e swarn('But the directory '+sdir(i)+' does not exist '\
170
- 'locally in '+sdir(return_pwd)+'.')
171
- end
172
- rescue Exception => error
173
- e 'An exception occurred in '+swarn('change_directory()')
174
- e "The directory `#{sdir(i)}` does not exist."
175
- pp error # Should remove this and error perhaps.
176
- end
177
- end; alias cd change_directory # === cd
178
-
179
- # ========================================================================= #
180
- # === report_local_directory
181
- #
182
- # Use only this method when reporting the local directory.
183
- # ========================================================================= #
184
- def report_local_directory
185
- e 'The local directory is: '+N+
186
- @pad+sdir(return_pwd)
187
- end; alias report_local_dir report_local_directory # === report_local_dir
188
-
189
- # ========================================================================= #
190
- # === remote_create_directory
191
- # ========================================================================= #
192
- def remote_create_directory(
193
- i = a?,
194
- be_verbose = true
195
- )
196
- if i.is_a? Array
197
- i.each {|entry| remote_create_directory(entry, be_verbose) }
198
- else
199
- # ===================================================================== #
200
- # Delegate towards the respective module-method next.
201
- # ===================================================================== #
202
- if be_verbose
203
- e "Creating the directory #{sdir(i)} next:"
204
- end
205
- FtpParadise.remote_create_directory(i, @ftp)
206
- end
207
- end
208
-
209
- # ========================================================================= #
210
- # === return_pwd
211
- # ========================================================================= #
212
- def return_pwd
213
- ("#{Dir.pwd}/").squeeze '/'
214
- end
215
-
216
- end; end
@@ -1,50 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # Encoding: UTF-8
3
- # frozen_string_literal: true
4
- # =========================================================================== #
5
- # require 'ftp_paradise/interactive_ftp/help.rb'
6
- # =========================================================================== #
7
- module FtpParadise
8
-
9
- class InteractiveFtp
10
-
11
- # ========================================================================= #
12
- # === show_help (help tag)
13
- # ========================================================================= #
14
- def show_help
15
- cliner
16
- e "Try one of these #{sfancy('help options')} for interactive-ftp:#{N}#{N}"
17
- e parens(:assign)+' '+pound_token+'Assign to the @file variable'
18
- e parens(:help)+' '+pound_token+'To see the help section'
19
- e parens(:history)+' '+pound_token+'To show the history'
20
- e parens(:cd)+' '+pound_token+'Change local directory'
21
- e parens(:config)+' '+pound_token+'Show the configuration'
22
- e parens(:dated)+' '+pound_token+'Display the remote directory '\
23
- 'content in a time-sorted manner'
24
- e parens(:edit)+' '+pound_token+'Edit this file here in your main editor'
25
- e parens(:everything)+' '+pound_token+'Show everything (username, password, host and so on)'
26
- e parens(:login)+' '+pound_token+'Connect to the remote host (alias '\
27
- 'to connect_to exists)'
28
- e parens(:list)+' '+pound_token+'List remote files'
29
- e parens(:last)+' '+pound_token+'Repeat the last action (or show the last action)'
30
- e parens(:rcd)+' '+pound_token+'Change remote directory'
31
- e parens(:remote?)+' '+pound_token+'List where we are connected'
32
- e parens(:stat)+' '+pound_token+'Show information about a file'
33
- e parens(:status?)+' '+pound_token+'See the current status of the connection'
34
- e parens(:file?)+' '+pound_token+'Shows whether we have a '+
35
- 'default file set (which can be used to upload)'
36
- e parens(:info)+' '+pound_token+'Shows some information (debug)'
37
- e parens(:set_port)+' '+pound_token+'Set the port number'
38
- e parens(:q)+' '+pound_token+'To quit/exit'
39
- e parens(:quit)+' '+pound_token+'Quit the session'
40
- if on_roebe? # Display it only for me.
41
- e parens(:shevy)+' '+pound_token+'Connect to shevy'
42
- end
43
- e parens(:lpwd)+' '+pound_token+'Report the current remote directory'
44
- e parens(:pwd)+' '+pound_token+'Report the local directory'+N
45
- e parens(:welcome)+' '+pound_token+'Show the welcome-message of the remote FTP server'+N
46
- e
47
- cliner
48
- end; alias show_help_options show_help # === show_help_options
49
-
50
- end; end