Minor cleanup

Minor cleanup

defmodule FarmbotCeleryScript.Compiler.Move do
  alias FarmbotCeleryScript.SysCalls
  @safe_height 0

  def move(%{body: body}, _env) do
    quote location: :keep do
      node_body = unquote(body)
      mod = unquote(__MODULE__)
      mod.perform_movement(node_body, better_params)
    end
  end

  # === "private" API starts here:
  def perform_movement(body, better_params) do
    extract_variables(body, better_params)
    |> calculate_movement_needs()
    |> do_perform_movement()
  end

  def extract_variables(body, better_params) do
    Enum.map(body, fn
      %{args: %{axis_operand: %{args: %{label: label}, kind: :identifier}}} = x ->
        new_operand = Map.fetch!(better_params, label)
        old_args = Map.fetch!(x, :args)
        new_args = Map.put(old_args, :axis_operand, new_operand)
        Map.put(x, :args, new_args)

      x ->
        x
    end)
  end

  def do_perform_movement(%{"safe_z" => true} = needs) do
    needs |> retract_z() |> move_xy() |> extend_z()
  end

  def do_perform_movement(%{"safe_z" => false} = n), do: move_abs(n)

  def retract_z(needs) do
    %{x: x(), y: y(), z: @safe_height} |> Map.merge(needs) |> move_abs()
  end

  def move_xy(needs) do
    %{z: z()} |> Map.merge(needs) |> move_abs()
  end

  def extend_z(needs) do
    %{x: x(), y: y()} |> Map.merge(needs) |> move_abs()
  end

  def calculate_movement_needs(body) do
    mapper = &FarmbotCeleryScript.Compiler.Move.mapper/1
    reducer = &FarmbotCeleryScript.Compiler.Move.reducer/2
    list = initial_state() ++ Enum.map(body, mapper)
    Enum.reduce(list, %{}, reducer)
  end

  def reducer({key, :+, value}, state) do
    Map.put(state, key, state[key] + value)
  end

  def reducer({key, :=, value}, state) do
    Map.put(state, key, value)
  end

  def mapper(%{kind: k, args: a}) do
    # lua, numeric
    speed_setting = a[:speed_setting]

    # identifier lua numeric point random special_value
    axis_operand = a[:axis_operand]

    # STRING: "x"|"y"|"z"|"all"
    axis = a[:axis]

    if axis == "all" do
      raise "Not permitted"
    end

    case k do
      :axis_overwrite ->
        {axis, :=, to_number(axis, axis_operand)}

      :axis_addition ->
        {axis, :+, to_number(axis, axis_operand)}

      :speed_overwrite ->
        {"speed_#{axis}", :=, to_number(axis, speed_setting)}

      :safe_z ->
        {"safe_z", :=, true}
    end
  end

  def initial_state do
    [
      {"x", :=, x()},
      {"y", :=, y()},
      {"z", :=, z()},
      {"speed_x", :=, 100},
      {"speed_y", :=, 100},
      {"speed_z", :=, 100},
      {"safe_z", :=, false}
    ]
  end

  defp to_number(_axis, %{args: %{number: num}, kind: :numeric}), do: num

  defp to_number(_axis, %{args: %{lua: lua}, kind: :lua}) do
    result = SysCalls.raw_lua_eval(lua)

    case result do
      {:ok, data} ->
        if is_number(data) do
          data
        else
          lua_fail(data, lua)
        end

      data ->
        lua_fail(data, lua)
    end
  end

  defp to_number(_axis, %{args: %{variance: v}, kind: :random}) do
    Enum.random((-1 * v)..v)
  end

  defp to_number(axis, %{kind: :coordinate} = coord) do
    get_coord(coord[:args], axis)
  end

  defp to_number(axis, %{resource_id: id, resource_type: t}) do
    point = FarmbotCeleryScript.SysCalls.point(t, id)
    get_coord(point, axis)
  end

  # TODO: Add `safe_height` entry to FBOS Config
  defp to_number(_axis, %{
         args: %{label: "safe_height"},
         kind: :special_value
       }),
       do: @safe_height

  defp to_number(axis, %{
         args: %{label: "current_location"},
         kind: :special_value
       }) do
    get_coord(%{x: x(), y: y(), z: z()}, axis)
  end

  # ???
  defp to_number(axis, %{x: _, y: _, z: _} = coord) do
    get_coord(coord, axis)
  end

  defp to_number(_axis, arg) do
    raise "Can't handle numeric conversion for " <> inspect(arg)
  end

  defp lua_fail(result, lua) do
    raise "Unexpected Lua return: #{inspect(result)} #{lua}"
  end

  defp get_coord(%{x: _, y: _, z: _} = coord, axis) when is_atom(axis) do
    get_coord(coord, axis)
  end

  defp get_coord(%{x: _, y: _, z: _} = coord, axis) do
    get_coord(coord, String.to_atom(axis))
  end

  defp move_abs(%{x: x, y: y, z: z, speed_x: sx, speed_y: sy, speed_z: sz} = k) do
    SysCalls.log("Moving to (#{x},#{y},#{z}) @ speed (#{sx},#{sy},#{sz})")
    SysCalls.move_absolute(x, y, z, sx, sy, sz)
    k
  end

  def x, do: SysCalls.get_current_x()
  def y, do: SysCalls.get_current_y()
  def z, do: SysCalls.get_current_z()
end

defmodule FarmbotCeleryScript.Compiler.Move do
  alias FarmbotCeleryScript.SysCalls
  @safe_height 0

  def move(%{body: body}, _env) do
    quote location: :keep do
      node_body = unquote(body)
      mod = unquote(__MODULE__)
      mod.perform_movement(node_body, better_params)
    end
  end

  # === "private" API starts here:
  def perform_movement(body, better_params) do
    extract_variables(body, better_params)
    |> calculate_movement_needs()
    |> do_perform_movement()
  end

  def extract_variables(body, better_params) do
    Enum.map(body, fn
      %{args: %{axis_operand: %{args: %{label: label}, kind: :identifier}}} = x ->
        new_operand = Map.fetch!(better_params, label)
        old_args = Map.fetch!(x, :args)
        new_args = Map.put(old_args, :axis_operand, new_operand)
        Map.put(x, :args, new_args)

      x ->
        x
    end)
  end

  def do_perform_movement(%{"safe_z" => true} = needs) do
    needs
    |> retract_z()
    |> move_xy()
    |> extend_z()
  end

  def do_perform_movement(%{"safe_z" => false} = needs) do
    move_xyz(needs)
  end

  def retract_z(needs) do
    SysCalls.move_absolute(
      SysCalls.get_current_x(),
      SysCalls.get_current_y(),
      @safe_height,
      needs["speed_x"],
      needs["speed_y"],
      needs["speed_z"]
    )

    needs
  end

  def move_xy(needs) do
    SysCalls.move_absolute(
      needs["x"],
      needs["y"],
      SysCalls.get_current_z(),
      needs["speed_x"],
      needs["speed_y"],
      needs["speed_z"]
    )

    needs
  end

  def move_xyz(needs) do
    SysCalls.move_absolute(
      needs["x"],
      needs["y"],
      needs["z"],
      needs["speed_x"],
      needs["speed_y"],
      needs["speed_z"]
    )

    needs
  end

  def extend_z(needs) do
    SysCalls.move_absolute(
      SysCalls.get_current_x(),
      SysCalls.get_current_y(),
      needs["z"],
      needs["speed_x"],
      needs["speed_y"],
      needs["speed_z"]
    )

    needs
  end

  def calculate_movement_needs(body) do
    mapper = &FarmbotCeleryScript.Compiler.Move.mapper/1
    reducer = &FarmbotCeleryScript.Compiler.Move.reducer/2
    list = initial_state() ++ Enum.map(body, mapper)
    Enum.reduce(list, %{}, reducer)
  end

  def reducer({key, :+, value}, state) do
    Map.put(state, key, state[key] + value)
  end

  def reducer({key, :=, value}, state) do
    Map.put(state, key, value)
  end

  def mapper(%{kind: k, args: a}) do
    # lua, numeric
    speed_setting = a[:speed_setting]

    # identifier lua numeric point random special_value
    axis_operand = a[:axis_operand]

    # STRING: "x"|"y"|"z"|"all"
    axis = a[:axis]

    if axis == "all" do
      raise "Not permitted"
    end

    case k do
      :axis_overwrite ->
        {axis, :=, to_number(axis, axis_operand)}

      :axis_addition ->
        {axis, :+, to_number(axis, axis_operand)}

      :speed_overwrite ->
        {"speed_#{axis}", :=, to_number(axis, speed_setting)}

      :safe_z ->
        {"safe_z", :=, true}
    end
  end

  def initial_state do
    %{x: x, y: y, z: z} = current_location()

    [
      {"x", :=, x},
      {"y", :=, y},
      {"z", :=, z},
      {"speed_x", :=, 100},
      {"speed_y", :=, 100},
      {"speed_z", :=, 100},
      {"safe_z", :=, false}
    ]
  end

  defp current_location do
    %{
      x: SysCalls.get_current_x(),
      y: SysCalls.get_current_y(),
      z: SysCalls.get_current_z()
    }
  end

  defp to_number(_axis, %{args: %{number: num}, kind: :numeric}), do: num

  defp to_number(_axis, %{args: %{lua: lua}, kind: :lua}) do
    result = SysCalls.raw_lua_eval(lua)

    case result do
      {:ok, data} ->
        if is_number(data) do
          data
        else
          lua_fail(data, lua)
        end

      data ->
        lua_fail(data, lua)
    end
  end

  defp to_number(_axis, %{args: %{variance: v}, kind: :random}) do
    Enum.random((-1 * v)..v)
  end

  defp to_number(axis, %{kind: :coordinate} = coord) do
    get_coord(coord[:args], axis)
  end

  defp to_number(axis, %{resource_id: id, resource_type: t}) do
    point = FarmbotCeleryScript.SysCalls.point(t, id)
    get_coord(point, axis)
  end

  # TODO: Add `safe_height` entry to FBOS Config
  defp to_number(_axis, %{
         args: %{label: "safe_height"},
         kind: :special_value
       }),
       do: @safe_height

  defp to_number(axis, %{
         args: %{label: "current_location"},
         kind: :special_value
       }) do
    get_coord(current_location(), axis)
  end

  # ???
  defp to_number(axis, %{x: _, y: _, z: _} = coord) do
    get_coord(coord, axis)
  end

  defp to_number(_axis, arg) do
    raise "Can't handle numeric conversion for " <> inspect(arg)
  end

  defp lua_fail(result, lua) do
    raise "Unexpected Lua return: #{inspect(result)} #{lua}"
  end

  defp get_coord(%{x: _, y: _, z: _} = coord, axis) when is_atom(axis) do
    get_coord(coord, axis)
  end

  defp get_coord(%{x: _, y: _, z: _} = coord, axis) do
    get_coord(coord, String.to_atom(axis))
  end
end


fix(graphql): rename RPC module (#4610)

fix(graphql): rename RPC module (#4610)

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/edenlabllc/ehealth.api.git/'


Changes for deploy.

Changes for deploy.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/evercam/evercam-admin.git/'


Decreased error weight for ehostunreach and enetunreach (#493)

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/evercam/evercam-media.git/'


Add DB constraints (unique indexes)

Add DB constraints (unique indexes)

defmodule Aelita2.Repo.Migrations.Constraints do
  use Ecto.Migration

  def change do
    create index(:batches, [:commit],
      name: :batches_commit_index, unique: true)
    create index(:users, [:user_xref],
      name: :users_user_xref_index, unique: true)
    create index(:installations, [:installation_xref],
      name: :installations_installation_xref_index, unique: true)
    create index(:patches, [:pr_xref],
      name: :patches_pr_xref_index, unique: true)
    create index(:projects, [:repo_xref],
      name: :projects_repo_xref_index, unique: true)
    create index(:statuses, [:identifier, :batch_id],
      name: :statuses_identifier_batch_id_index, unique: true)
    create index(:users, [:login],
      name: :users_login_index, unique: true)
    create index(:link_patch_batch, [:patch_id, :batch_id],
      name: :link_patch_batch_patch_id_batch_id_index, unique: true)
    create index(:link_user_project, [:user_id, :project_id],
      name: :link_user_project_user_id_project_id_index, unique: true)
  end
end

error: pathspec 'priv/repo/migrations/20161228200617_constraints.exs' did not match any file(s) known to git


include only active employees for revoke roles logic (#950)


missed migration

missed migration

defmodule Officetournament.Repo.Migrations.AddProviderAndFullnameToUsersTable do
  use Ecto.Migration

  def change do
    alter table(:users) do
      add :provider, :string
    end
  end
end

error: pathspec 'priv/repo/migrations/20150916044524_add_provider_and_fullname_to_users_table.exs' did not match any file(s) known to git


Gave some padding to watermark.

Gave some padding to watermark.


Change param in export image function

Change param in export image function


err, fixed a branching

err, fixed a branching

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/tchoutri/magnetissimo.git/'


added solution elixir alien-language

added solution elixir alien-language

textr = File.read! "../tests/A-small-practice.in"
lines = String.replace(textr,"(","[") |> String.replace(")","]") |> String.split("\n")

params = Enum.fetch!(lines,0) |> String.split(" ")
l = String.to_integer(Enum.fetch!(params,0))
d = String.to_integer(Enum.fetch!(params,1))
n = String.to_integer(Enum.fetch!(params,2))

words = Enum.slice(lines, 1, d)
cases = Enum.slice(lines,d+1,n) |> Enum.with_index

result = Enum.map(cases, fn({x,i}) ->
	reg = Regex.compile!(x)
	n = Enum.count(words, fn x->
		Regex.match?(reg,x)
	end)
	"Case ##{i+1}: #{n}"
end)
content = Enum.join(result, "\n")
File.write("AlienLanguajeEX.txt", content)

error: pathspec 'solutions/alien-language/elixir/alien-language-elixir.exs' did not match any file(s) known to git


drop addresses from fraud (#2938)

drop addresses from fraud (#2938)


feat(core): created table `program_services` in PRM (#5061)

* feat(core): created table `program_services` in PRM

* feat(core): added references for ProgramService


add admin column to users table

add admin column to users table

defmodule PhMicroblog.Repo.Migrations.AddAdminToUsers do
  use Ecto.Migration

  def change do
    alter table(:users) do
      add :admin, :boolean, default: false
    end
  end
end

error: pathspec 'priv/repo/migrations/20160607145910_add_admin_to_users.exs' did not match any file(s) known to git


Fix sql raw string

Fix sql raw string


Formatting

Formatting


Return token on user confirm

Return token on user confirm


remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/sharkspeed/dororis.git/'


Added SnapshotRepo.

Added SnapshotRepo.


Increment version [ci skip]

Increment version [ci skip]


Bump to 1.0.1

Bump to 1.0.1

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/Remesh/ex_orient.git/'


Removed unnecessary dependency (#4015)

Removed unnecessary dependency (#4015)


Fixed typo

Fixed typo


get only active participants for qualify medication request


add authorization protocol to make compile

defprotocol ExAdmin.Authentication do
  @fallback_to_any true
  def use_authentication?(conn)
  def current_user(conn)
  def current_user_name(conn)
  def session_path(conn, action)
end

defimpl ExAdmin.Authentication, for: Any do
  def use_authentication?(_), do: false
  def current_user(_), do: nil
  def current_user_name(_), do: nil
  def session_path(_, _), do: ""
end

defprotocol ExAdmin.Authorization do
  @fallback_to_any true
  def authorize_query(resource, conn, query, action, id)
  def authorize_action(resource, conn, action)
end

defimpl ExAdmin.Authorization, for: Any do
  def authorize_query(_, _, query, _, _), do: query
  def authorize_action(_, _, _), do: true
end

error: pathspec 'lib/ex_admin/authentication.ex' did not match any file(s) known to git


[minor] fix tax_id regex

[minor] fix tax_id regex


(45.1%) set io mode tests

(45.1%) set io mode tests

defmodule FarmbotOS.SysCalls.SetPinIOModeTest do
  use ExUnit.Case, async: true
  use Mimic

  setup :verify_on_exit!

  alias FarmbotOS.SysCalls.SetPinIOMode

  test "set_pin_io_mode" do
    modes = %{
      1 => 0x2,
      2 => 0x0,
      3 => 0x1,
      4 => 0x0,
      5 => 0x1,
      6 => 0x2
    }

    expect(FarmbotFirmware, :command, 6, fn
      {:pin_mode_write, [p: pin_number, m: actual_mode]} ->
        expected_mode = Map.fetch!(modes, pin_number)
        assert expected_mode == actual_mode
        :ok
    end)

    SetPinIOMode.set_pin_io_mode(1, "input_pullup")
    SetPinIOMode.set_pin_io_mode(2, "input")
    SetPinIOMode.set_pin_io_mode(3, "output")
    SetPinIOMode.set_pin_io_mode(4, 0x0)
    SetPinIOMode.set_pin_io_mode(5, 0x1)
    SetPinIOMode.set_pin_io_mode(6, 0x2)
  end
end

error: pathspec 'farmbot_os/test/farmbot_os/syscalls/set_pin_io_mode_test.exs' did not match any file(s) known to git


Reduced max connection and timeout for seaweedfs hackney_pool.


Remove conflict keys from address in ContractRequestPrintoutForm (#3637)


Streams for intelligent collection manipulation.

[1,2,3,4]
|> Stream.map(&(&1*&1))
|> Stream.map(&(&1+1))
|> Stream.filter(fn x -> rem(x,2) == 1 end)
|> Enum.to_list
|> IO.inspect

error: pathspec 'programming_elixir/chapter10/stream1.exs' did not match any file(s) known to git


Aliasing RealWorld.Repo in RealWorldWeb.ArticleController.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/BrainMaestro/elixir-phoenix-realworld.git/'


(auto message)

(auto message)

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/ziazek/deploy_phoenix.git/'


Shorten dependency declaration

Shorten dependency declaration

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/BananaLtd/gru.git/'


Add current user plug

Add current user plug

defmodule ElixirJobsWeb.Plugs.CurrentUser do
  import Plug.Conn

  alias ElixirJobs.Users.Admin

  def init(_), do: []

  def call(conn, _) do
    case ElixirJobsWeb.Guardian.Plug.current_resource(conn) do
      %Admin{} = user -> assign(conn, :current_user, user)
      _ -> conn
    end
  end

  def current_user(conn) do
    Map.get(conn.assigns, :current_user)
  end

  def user_logged_in?(conn), do: !is_nil(Map.get(conn.assigns, :current_user))
end

error: pathspec 'lib/elixir_jobs_web/plugs/current_user.ex' did not match any file(s) known to git


Add new multi_tenant_company_test file

Add new multi_tenant_company_test file

defmodule MultiTenantCompanyTest do
  use ExUnit.Case
  import Ecto.Query

  setup_all do
    MultiTenantHelper.setup_tenant(Repo)
    :ok
  end

  test "[multi tenant] creating a company creates a company version with correct attributes" do
    {:ok, result} =
      %{name: "Acme LLC", is_active: true, city: "Greenwich", people: []}
      |> ChangesetHelper.new_company(:multitenant)
      |> PaperTrail.insert(origin: "test", prefix: MultiTenantHelper.tenant())

    company_count = QueryHelper.company_count(:multitenant) |> Repo.all()
    version_count = QueryHelper.version_count(:multitenant) |> Repo.all()
    first_company = QueryHelper.first_company(:multitenant) |> Repo.one()

    company = result[:model] |> Map.drop([:__meta__, :__struct__, :inserted_at, :updated_at, :id])
    version = result[:version] |> Map.drop([:__meta__, :__struct__, :inserted_at])

    assert company_count == [1]
    assert version_count == [1]

    assert company == %{
      name: "Acme LLC",
      is_active: true,
      city: "Greenwich",
      website: nil,
      address: nil,
      facebook: nil,
      twitter: nil,
      founded_in: nil,
      people: []
    }

    assert Map.drop(version, [:id]) == %{
      event: "insert",
      item_type: "Company",
      item_id: first_company.id,
      item_changes: Map.drop(result[:model], [:__meta__, :__struct__, :people]),
      origin: "test",
      originator_id: nil,
      meta: nil
    }
  end

  test "[multi tenant] updating a company creates a company version with correct item_changes" do
    first_company = QueryHelper.first_company(:multitenant) |> Repo.one()

    {:ok, result} =
      ChangesetHelper.update_company(first_company, %{
        city: "Hong Kong",
        website: "http://www.acme.com",
        facebook: "acme.llc"
      }, :multitenant) |> PaperTrail.update(prefix: MultiTenantHelper.tenant())

    company_count = QueryHelper.company_count(:multitenant) |> Repo.all()
    version_count = QueryHelper.version_count(:multitenant) |> Repo.all()

    company = result[:model] |> Map.drop([:__meta__, :__struct__, :inserted_at, :updated_at, :id])
    version = result[:version] |> Map.drop([:__meta__, :__struct__, :inserted_at])

    assert company_count == [1]
    assert version_count == [2]

    assert company == %{
      name: "Acme LLC",
      is_active: true,
      city: "Hong Kong",
      website: "http://www.acme.com",
      address: nil,
      facebook: "acme.llc",
      twitter: nil,
      founded_in: nil,
      people: []
    }

    assert Map.drop(version, [:id]) == %{
      event: "update",
      item_type: "Company",
      item_id: first_company.id,
      item_changes: %{city: "Hong Kong", website: "http://www.acme.com", facebook: "acme.llc"},
      origin: nil,
      originator_id: nil,
      meta: nil
    }
  end

  test "[multi tenant] deleting a company creates a company version with correct attributes" do
    company = QueryHelper.first_company(:multitenant) |> Repo.one()

    {:ok, result} =
      company
      |> PaperTrail.delete(prefix: MultiTenantHelper.tenant())

    company_count = QueryHelper.company_count(:multitenant) |> Repo.all()
    version_count = QueryHelper.version_count(:multitenant) |> Repo.all()

    company_ref = result[:model] |> Map.drop([:__meta__, :__struct__, :inserted_at, :updated_at, :id])
    version = result[:version] |> Map.drop([:__meta__, :__struct__, :inserted_at])

    assert company_count == [0]
    assert version_count == [3]

    assert company_ref == %{
      name: "Acme LLC",
      is_active: true,
      city: "Hong Kong",
      website: "http://www.acme.com",
      address: nil,
      facebook: "acme.llc",
      twitter: nil,
      founded_in: nil,
      people: []
    }

    assert Map.drop(version, [:id]) == %{
      event: "delete",
      item_type: "Company",
      item_id: company.id,
      item_changes: %{
        id: company.id,
        inserted_at: company.inserted_at,
        updated_at: company.updated_at,
        name: "Acme LLC",
        is_active: true,
        website: "http://www.acme.com",
        city: "Hong Kong",
        address: nil,
        facebook: "acme.llc",
        twitter: nil,
        founded_in: nil
      },
      origin: nil,
      originator_id: nil,
      meta: nil
    }
  end
end

error: pathspec 'example/test/multi_tenant_company_test.exs' did not match any file(s) known to git


Add config/config.exs to avoid warnings

Add config/config.exs to avoid warnings

import Config

config :phoenix, :json_library, Jason

error: pathspec 'integration_test/config/config.exs' did not match any file(s) known to git


Added user to zoho when signup from share-request

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/evercam/evercam-media.git/'


[minor] Hotfix man interaction

[minor] Hotfix man interaction

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/edenlabllc/ehealth.api.git/'


Extended timer

Extended timer

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/koenighotze/elixir-lang-exercises.git/'


get picture

get picture

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/sschneider1207/Geosnap.git/'


chore: rm unused params (#4672)

chore: rm unused params (#4672)


[patch] EHealth-1730: improve test for termination declaration (#1850)


added examples of factorial with and without tail-call optimization

defmodule FactorialWithoutTCORecursion do
  def of(0), do: 1
  def of(n) when n > 0 do
    n * of(n - 1)
  end
end

defmodule FactorialWithTCORecursion do
  def of(n), do: of(1, n)
  def of(fact, 0), do: fact
  def of(fact, n) when n > 0 do
    of(fact * n, n-1)
  end
end

error: pathspec 'factorial.exs' did not match any file(s) known to git


increase coverage for player_session.ex

increase coverage for player_session.ex

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/mononym/exmud.git/'


fixes elixir 1.4.0 warnings

fixes elixir 1.4.0 warnings

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/elixytics/monolith.git/'


Increment version [ci skip]

Increment version [ci skip]


Updated mix.exs project def to include package

defmodule Joken.Mixfile do
  use Mix.Project

  def project do
    [app: :joken,
     version: "0.1.0",
     elixir: "~> 1.0.0",
     description: description,
     package: package,
     deps: deps]
  end

  def application do
    [applications: [:logger, :crypto]]
  end

  defp deps do
    [
      {:jsex, github: "talentdeficit/jsex"}
    ]
  end

  defp description do
    """
    JWT Library for Elixir
    """
  end

  defp package do
    [
     files: ["lib", "priv", "mix.exs", "README*", "readme*", "LICENSE*", "license*"],
     contributors: ["Bryan Joseph"],
     licenses: ["Apache 2.0"],
     links: %{"GitHub" => "https://github.com/bryanjos/joken",
              "Docs" => "https://github.com/bryanjos/joken"}
    ]
  end
end

defmodule Joken.Mixfile do
  use Mix.Project

  def project do
    [app: :joken,
     version: "0.1.0",
     elixir: "~> 1.0.0",
     description: description,
     deps: deps]
  end

  def application do
    [applications: [:logger, :crypto]]
  end

  defp deps do
    [
      {:jsex, github: "talentdeficit/jsex"}
    ]
  end

  defp description do
    """
    JWT Library for Elixir
    """
  end

  defp package do
    [
     files: ["lib", "priv", "mix.exs", "README*", "readme*", "LICENSE*", "license*"],
     contributors: ["Bryan Joseph"],
     licenses: ["Apache 2.0"],
     links: %{"GitHub" => "https://github.com/bryanjos/joken",
              "Docs" => "https://github.com/bryanjos/joken"}
    ]
  end
end


cleans up application config

cleans up application config

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/elixytics/web.git/'


chore: elixir

chore: elixir

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/rockdragon/julia-programming.git/'


Fix digest header parsing

Fix digest header parsing


Add and initialize Kitto.Runner

Add and initialize Kitto.Runner

defmodule Kitto.Runner do
  def start_jobs do
    job_files |> Enum.each(&Code.eval_file/1)
  end

  defp job_files do
    Path.wildcard Path.join(System.cwd, "jobs/**/*.{ex,exs}")
  end
end

error: pathspec 'lib/runner.ex' did not match any file(s) known to git


[patch] fix tests

[patch] fix tests


Im dumb

Im dumb

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/wwselleck/Rekrewtor.git/'


Refactor update_camera/2 and create_camera/2


Add end-to-end test for voting stage

Add end-to-end test for voting stage

defmodule VotingTest do
  use RemoteRetro.IntegrationCase, async: false
  alias RemoteRetro.Idea

  import ShorterMaps

  describe "voting for an idea" do
    setup [:persist_idea_for_retro]

    @tag [
      retro_stage: "voting",
      idea: %Idea{category: "happy", body: "pacing well"},
    ]

    test "increments the idea's vote count across sessions", ~M{retro, session: session_one} do
      session_two = new_authenticated_browser_session()

      retro_path = "/retros/" <> retro.id
      session_one = visit(session_one, retro_path)
      session_two = visit(session_two, retro_path)

      # session one submits a vote for a particular idea
      # assert that the idea's vote count increments
      session_one |> find(Query.css("button.ui.green.button")) |> Element.click

      session_one_ideas_list_text = session_one |> find(Query.css(".happy.column")) |> Element.text()
      assert session_one_ideas_list_text =~ ~r/Vote\n1/ui

      session_two_ideas_list_text = session_two |> find(Query.css(".happy.column")) |> Element.text()
      assert session_two_ideas_list_text =~ ~r/Vote\n1/ui
    end
  end
end

error: pathspec 'test/features/voting_test.exs' did not match any file(s) known to git


Add tweeted to posts

Add tweeted to posts

https://github.com/hashrocket/tilex/projects/1#card-1266821

defmodule Tilex.Repo.Migrations.AddTweetedToPosts do
  use Ecto.Migration

  def change do
    alter table(:posts) do
      add :tweeted, :boolean, null: false, default: false
    end
  end
end

error: pathspec 'priv/repo/migrations/20170317210552_add_tweeted_to_posts.exs' did not match any file(s) known to git


Don't shut down worker on ehostunreach error


Remove unused query

Remove unused query