summary refs log tree commit diff stats
path: root/Makefile
blob: feef0bf0cc28c500909cd327f6ee24d6e1d9a125 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
NAME = ranger
VERSION = 1.0.3
PYTHON = python
DOCDIR = doc/pydoc
CWD = $(shell pwd)
EDITOR = vim

.PHONY: all clean doc cleandoc edit push test commit install info snapshot minimal_snapshot

info:
	@echo 'This makefile provides shortcuts for common tasks.'
	@echo 'make clean: Remove all unnecessary files (.pyc, .pyo)'
	@echo 'make cleandoc: Remove the pydoc documentation'
	@echo 'make doc: Create the pydoc documentation'
	@echo 'make install: Install ranger'
	@echo 'make snapshot: Create a tar.gz of the current git revision'
	@echo
	@echo 'For developers:'
	@echo 'make commit: Test and commit the changes'
	@echo 'make test: Run all unittests.'
	@echo 'make push: push the changes via git'
	@echo 'make edit: open all relevant files in your editor'

all: test

doc: cleandoc
	mkdir -p $(DOCDIR)
	cd $(DOCDIR); \
		$(PYTHON) -c 'import pydoc, sys; \
		sys.path[0] = "$(CWD)"; \
		pydoc.writedocs("$(CWD)")'

install:
	@less -XF INSTALL

cleandoc:
	test -d $(DOCDIR) && rm -f -- $(DOCDIR)/*.html

clean:
	find . -regex .\*.py[co]$ | xargs rm -f --

test: clean
	./all_tests.py

edit:
	@$(EDITOR) ranger.py Makefile README COPYING HACKING INSTALL $(shell find ranger test -regex .\*py$ )

push:
	@for repo in $(shell git remote); do \
		echo "Pushing to $$repo..."; \
		git push $$repo master; \
		git push $$repo -f hut; \
	done

commit: test
	@git citool

snapshot:
	git archive HEAD | gzip > $(NAME)-$(VERSION)-$(shell git rev-list HEAD | head -n 1 | cut -b 1-8).tar.gz

minimal_snapshot:
	@echo 'This is not quite working well. I will abort now' && false
	git checkout -b no_help
	git rm -rf doc
	git rm -rf test
	git rm all_tests.py
	git rm TODO
	git commit -a -m'removed documentation'
	git archive HEAD | gzip > $(NAME)-$(VERSION)-$(shell git rev-list HEAD | head -n 1 | cut -b 1-8).tar.gz
	git reset --hard no_help^
	git branch -D no_help
'.': continue if isinstance(self.filter, str) and self.filter in fname: continue filenames.append(join(self.path, fname)) self.scroll_offset = 0 self.filenames = filenames self.infostring = ' %d' % len(self.filenames) # update the infostring files = [] for name in self.filenames: if isdir(name): f = Directory(name) else: f = File(name) f.load() files.append(f) self.files = files self.old_directories_first = None # self.sort() if len(self.files) > 0: if self.pointed_file is not None: self.move_pointer_to_file_path(self.pointed_file) # if self.pointed_file is None: # self.correct_pointer() else: self.filenames = None self.files = None self.infostring = superclass.BAD_INFO def sort(self): old_pointed_file = self.pointed_file self.files.sort(key = sort_by_basename) if self.directories_first: self.files.sort(key = sort_by_directory) if self.pointed_index is not None: self.move_pointer_to_file_path(old_pointed_file) else: self.correct_pointer() self.old_directories_first = self.directories_first def sort_if_outdated(self): if self.old_directories_first != self.directories_first: self.sort() # Notice: fm.env.cf should always point to the current file. If you # modify the current directory with this function, make sure # to update fm.env.cf aswell. def move_pointer(self, relative=0, absolute=None): if self.empty(): return i = self.pointed_index if isinstance(absolute, int): if absolute < 0: absolute = len(self.files) + absolute i = absolute if isinstance(relative, int): i += relative self.pointed_index = i self.correct_pointer() return self.pointed_file def move_pointer_to_file_path(self, path): if path is None: return try: path = path.path except AttributeError: pass self.load_content_once() if self.empty(): return i = 0 for f in self.files: if f.path == path: self.move_pointer(absolute = i) return True i += 1 return False def correct_pointer(self): """make sure the pointer is in the valid range of 0 : len(self.files)-1 (or None if directory is empty.)""" if self.files is None or len(self.files) == 0: self.pointed_index = None self.pointed_file = None else: i = self.pointed_index if i is None: i = 0 if i >= len(self.files): i = len(self.files) - 1 if i < 0: i = 0 self.pointed_index = i self.pointed_file = self[i] def load_content_once(self): if not self.content_loaded: self.load_content() return True return False def load_content_if_outdated(self): if self.load_content_once(): return True if self.old_show_hidden != self.show_hidden: self.old_show_hidden = self.show_hidden self.load_content() return True import os real_mtime = os.stat(self.path).st_mtime cached_mtime = self.stat.st_mtime if real_mtime != cached_mtime: self.load_content() return True return False def empty(self): return self.files is None or len(self.files) == 0 def __len__(self): if not self.accessible: raise ranger.fsobject.NotLoadedYet() return len(self.files) def __getitem__(self, key): if not self.accessible: raise ranger.fsobject.NotLoadedYet() return self.files[key]