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)"