Subversion Repositories svn.Prod repos

Rev

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

Rev 42 Rev 43
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
		curdir = System.cwd()
33
		File.cd!(directory)
33
		File.cd!(directory)
34
		curdir2 = System.cwd()
34
		curdir2 = System.cwd()
35
		files = File.ls!(directory)
35
		files = File.ls!(directory)
36
		for file <- files do
36
		for file <- files do
37
			pfile = curdir2 <> "/" <> file
37
			pfile = curdir2 <> "/" <> file
38
			IO.puts pfile
38
			IO.puts pfile
39
			if File.dir?(pfile) do
39
			if File.dir?(pfile) do
40
				traverse(pfile)
40
				traverse(pfile)
41
			end
41
			end
42
		end
42
		end
43
		File.cd!(curdir)
43
		File.cd!(curdir)
44
	end
44
	end
45
 
45
 
46
	def start_traverse(directory) do
46
	def start_traverse(directory) do
47
		IO.puts directory
47
		IO.puts directory
48
		traverse(directory)
48
		traverse(directory)
49
	end
49
	end
50
end
50
end
51
 
51
 
52
# =============================================================================
52
# =============================================================================
53
# Main
53
# Main
54
# =============================================================================
54
# =============================================================================
55
 
55
 
56
progname = System.cwd()
56
progname = System.cwd()
57
if length(System.argv) == 1 do
57
if length(System.argv) == 1 do
58
	directory = Enum.at(System.argv(), 0)
58
	directory = Enum.at(System.argv(), 0)
59
	if File.dir?(directory)
59
	if File.dir?(directory)
60
	do
60
	do
61
		DezeModule.start_traverse(directory)
61
		DezeModule.start_traverse(directory)
62
	else
62
	else
63
		DezeModule.usage(progname, "ERROR: Not a directory : " <> directory)
63
		DezeModule.usage(progname, "ERROR: Not a directory : " <> directory)
64
	end
64
	end
65
else
65
else
66
	DezeModule.usage(progname, "ERROR: 1 argument expected")
66
	DezeModule.usage(progname, "ERROR: 1 argument expected")
67
end
67
end