Subversion Repositories svn.Prod repos

Rev

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

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