lib/janky/hubot.rb in janky-0.10.2 vs lib/janky/hubot.rb in janky-0.11.0
- old
+ new
@@ -10,15 +10,16 @@
# Setup a new repository.
post "/setup" do
nwo = params["nwo"]
name = params["name"]
- repo = Repository.setup(nwo, name)
+ tmpl = params["template"]
+ repo = Repository.setup(nwo, name, tmpl)
if repo
url = "#{settings.base_url}#{repo.name}"
- [201, "Setup #{repo.name} at #{repo.uri} | #{url}"]
+ [201, "Setup #{repo.name} at #{repo.uri} with #{repo.job_config_path.basename} | #{url}"]
else
[400, "Couldn't access #{nwo}. Check the permissions."]
end
end
@@ -32,13 +33,14 @@
# Build a repository's branch.
post %r{\/([-_\.0-9a-zA-Z]+)\/([-_\.a-zA-z0-9\/]+)} do |repo_name, branch_name|
repo = find_repo(repo_name)
branch = repo.branch_for(branch_name)
- room_id = (params["room_id"] && Integer(params["room_id"]) rescue nil)
+ room_id = (params["room_id"] rescue nil)
user = params["user"]
build = branch.head_build_for(room_id, user)
+ build ||= repo.build_sha(branch_name, user, room_id)
if build
build.run
[201, "Going ham on #{build.repo_name}/#{build.branch_name}"]
else
@@ -62,10 +64,24 @@
else
[403, "Unknown room: #{room.inspect}"]
end
end
+ # Update a repository's context
+ put %r{\/([-_\.0-9a-zA-Z]+)\/context} do |repo_name|
+ context = params["context"]
+ repo = find_repo(repo_name)
+
+ if repo
+ repo.context = context
+ repo.save
+ [200, "Context #{context} set for #{repo_name}"]
+ else
+ [404, "Unknown Repository #{repo_name}"]
+ end
+ end
+
# Get the status of all projects.
get "/" do
content_type "text/plain"
repos = Repository.all(:include => [:branches, :commits, :builds]).map do |repo|
master = repo.branch_for("master")
@@ -98,10 +114,45 @@
end
builds.to_json
end
+ # Get information about how a project is configured
+ get %r{\/show\/([-_\.0-9a-zA-Z]+)} do |repo_name|
+ repo = find_repo(repo_name)
+ res = {
+ :name => repo.name,
+ :configured_job_template => repo.job_template,
+ :used_job_template => repo.job_config_path.basename.to_s,
+ :repo => repo.uri,
+ :room_id => repo.room_id,
+ :enabled => repo.enabled,
+ :hook_url => repo.hook_url,
+ :context => repo.context
+ }
+ res.to_json
+ end
+
+ delete %r{\/([-_\.0-9a-zA-Z]+)} do |repo_name|
+ repo = find_repo(repo_name)
+ repo.destroy
+ "Janky project #{repo_name} deleted"
+ end
+
+ # Delete a repository's context
+ delete %r{\/([-_\.0-9a-zA-Z]+)\/context} do |repo_name|
+ repo = find_repo(repo_name)
+
+ if repo
+ repo.context = nil
+ repo.save
+ [200, "Context removed for #{repo_name}"]
+ else
+ [404, "Unknown Repository #{repo_name}"]
+ end
+ end
+
# Get the status of a repository's branch.
get %r{\/([-_\.0-9a-zA-Z]+)\/([-_\+\.a-zA-z0-9\/]+)} do |repo_name, branch_name|
limit = params["limit"]
repo = find_repo(repo_name)
@@ -118,16 +169,21 @@
content_type "text/plain"
<<-EOS
ci build janky
ci build janky/fix-everything
ci setup github/janky [name]
+ci setup github/janky name template
ci toggle janky
ci rooms
ci set room janky development
+ci set context janky ci/janky
+ci unset context janky
ci status
ci status janky
ci status janky/master
ci builds limit [building]
+ci show janky
+ci delete janky
EOS
end
get "/boomtown" do
fail "BOOM (janky)"