]> git.ipfire.org Git - people/jschlag/pbs.git/blame - src/scripts/pakfire-build-service
cli: Parse tornado options as well
[people/jschlag/pbs.git] / src / scripts / pakfire-build-service
CommitLineData
43025dca
MT
1#!/usr/bin/python
2
3import sys
4
5# Use tornado's logging options
6import tornado.options
7tornado.options.parse_command_line()
8
9import pakfire.buildservice
10
11class Cli(object):
12 def __init__(self, *args, **kwargs):
13 # Initialise backend
14 self.backend = pakfire.buildservice.Backend(*args, **kwargs)
15
c06ce6d1 16 self._commands = {
13b9276e
MT
17 # Check build dependencies
18 "check-build-dependencies" : self.backend.jobqueue.check_build_dependencies,
19
c660ff59 20 # Run mirror check
cda268cc 21 "check-mirrors" : self.backend.mirrors.check,
c660ff59 22
0f302058
MT
23 # Cleanup files
24 "cleanup-files" : self.backend.cleanup_files,
25
ca4f2d92
MT
26 # Cleanup sessions
27 "cleanup-sessions" : self.backend.sessions.cleanup,
28
be8d5956
MT
29 # Cleanup uploads
30 "cleanup-uploads" : self.backend.uploads.cleanup,
31
ac10fd43
MT
32 # Create test jobs
33 "create-test-jobs" : self.backend.jobqueue.create_test_jobs,
34
13b9276e
MT
35 # Dist
36 "dist" : self.backend.sources.dist,
37
764b87d2
MT
38 # List repository
39 "list-repository" : self._list_repository,
40
c06ce6d1
MT
41 # Sends all queued messages
42 "process-message-queue" : self.backend.messages.process_queue,
76353712 43
6cd8afe7
MT
44 # Pull sources
45 "pull-sources" : self.backend.sources.pull,
46
9729c5b3 47 # Remaster Repositories
58697386 48 "remaster-repositories" : self.backend.repos.remaster,
9729c5b3 49
709118bc
MT
50 # Restart failed jobs
51 "restart-failed-jobs" : self.backend.jobs.restart_failed,
52
76353712
MT
53 # Send bug updates to Bugzilla
54 "send-bug-updates" : self.backend.bugzilla.send_all,
c06ce6d1 55 }
43025dca
MT
56
57 def __call__(self, *args):
c1271bd0
MT
58 # Parse tornado settings
59 args = tornado.options.parse_command_line(args)
60
61 if not len(args) >= 1:
43025dca
MT
62 print >>sys.stderr, "Insufficient number of arguments"
63 return 2
64
65 args = list(args)
43025dca
MT
66 command = args.pop(0)
67
68 # Get called command
69 try:
70 command = self._commands[command]
71 except KeyError:
72 print >>sys.stderr, "Command not found: %s" % command
73 return 2
74
75 # Execute command
76 r = command(*args)
77
78 # Exit with error code
79 sys.exit(r or 0)
80
764b87d2
MT
81 def _list_repository(self, distro_name, repo_name, arch):
82 # Get distribution
83 distro = self.backend.distros.get_by_name(distro_name)
84 if not distro:
85 print >>sys.stderr, "Could not find distribution: %s" % distro_name
86 return 2
87
88 # Get repository
89 repo = distro.get_repo(repo_name)
90 if not repo:
91 print >>sys.stderr, "Could not find repository: %s" % repo_name
92 return 2
93
94 # Iterate through all of it
95 for build in repo:
96 for job in build:
4f90cf84
MT
97 # Skip all test jobs
98 if job.test:
764b87d2
MT
99 continue
100
101 if not job.arch in (arch, "noarch"):
102 continue
103
104 for pkg in job:
105 print pkg
106
43025dca
MT
107# main
108
109cli = Cli()
110cli(*sys.argv)