Subversion Repositories svn.Prod repos

Rev

Rev 41 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 41 Rev 42
1
#! /usr/bin/env elixir
1
#! /usr/bin/env elixir
2
# https://rosettacode.org/wiki/Walk_a_directory/Recursively
2
# https://rosettacode.org/wiki/Walk_a_directory/Recursively
3
 
3
 
4
# =============================================================================
4
# =============================================================================
5
# Create
5
# Create
6
# name  : Andre Rikkert de Koe          date:	mar 2018 
6
# name  : Andre Rikkert de Koe          date:	mar 2018 
7
# descr : filefind
7
# descr : filefind
8
#         This is a demo of programming in the elixir language.
8
#         This is a demo of programming in the elixir language.
9
#         Its part of a project to implement a program to create a directory
9
#         Its part of a project to implement a program to create a directory
10
#         tree similar to the output of the Unix find program.
10
#         tree similar to the output of the Unix find program.
11
# EUID  : Any user who has read access to all the files being searched for.
11
# EUID  : Any user who has read access to all the files being searched for.
12
# run   : interactive
12
# run   : interactive
13
#
13
#
14
# Changes
14
# Changes
15
# name  :                               date:
15
# name  :                               date:
16
# descr : short description
16
# descr : short description
17
#
17
#
18
# =============================================================================
18
# =============================================================================
19
 
19
 
20
# =============================================================================
20
# =============================================================================
21
# Functions
21
# Functions
22
# =============================================================================
22
# =============================================================================
23
 
23
 
24
defmodule DezeModule do
24
defmodule DezeModule do
25
 
25
 
26
	def usage(progname, mesg) do
26
	def usage(progname, mesg) do
27
		IO.puts "Usage: " <> progname <> " filefind" 
27
		IO.puts "Usage: " <> progname <> " filefind" 
28
		IO.puts mesg	
28
		IO.puts mesg	
29
	end
29
	end
30
 
30
 
31
	def traverse(directory) do
31
	def traverse(directory) do
-
 
32
		curdir = System.cwd()
32
		File.cd!(directory)
33
		File.cd!(directory)
33
		curdir2 = System.cwd()
34
		curdir2 = System.cwd()
34
		files = File.ls!(directory)
35
		files = File.ls!(directory)
35
		for file <- files do
36
		for file <- files do
36
			pfile = curdir2 <> "/" <> file
37
			pfile = curdir2 <> "/" <> file
37
			IO.puts pfile
38
			IO.puts pfile
38
			if File.dir?(pfile) do
39
			if File.dir?(pfile) do
39
				traverse(pfile)
40
				traverse(pfile)
40
			end
41
			end
41
		end
42
		end
-
 
43
		File.cd!(curdir)
42
	end
44
	end
43
 
45
 
44
	def start_traverse(directory) do
46
	def start_traverse(directory) do
45
		IO.puts directory
47
		IO.puts directory
46
		traverse(directory)
48
		traverse(directory)
47
	end
49
	end
48
end
50
end
49
 
51
 
50
# =============================================================================
52
# =============================================================================
51
# Main
53
# Main
52
# =============================================================================
54
# =============================================================================
53
#
-
 
54
progname = System.cwd()
-
 
55
 
55
 
-
 
56
progname = System.cwd()
56
if length(System.argv) == 1 do
57
if length(System.argv) == 1 do
57
	directory = Enum.at(System.argv(), 0)
58
	directory = Enum.at(System.argv(), 0)
58
	if File.dir?(directory)
59
	if File.dir?(directory)
59
	do
60
	do
60
		DezeModule.start_traverse(directory)
61
		DezeModule.start_traverse(directory)
61
	else
62
	else
62
		DezeModule.usage(progname, "ERROR: Not a directory : " <> directory)
63
		DezeModule.usage(progname, "ERROR: Not a directory : " <> directory)
63
	end
64
	end
64
else
65
else
65
	DezeModule.usage(progname, "ERROR: 1 argument expected")
66
	DezeModule.usage(progname, "ERROR: 1 argument expected")
66
end
67
end