CONSTANT_SRCS = [
  'BuckConstant.java',
]
java_library(
  name = 'constants',
  srcs = CONSTANT_SRCS,
  visibility = [ 'PUBLIC' ],
  deps = [
    '//third-party/java/guava:guava',
    '//third-party/java/jsr:jsr305',
  ],
)


EXCEPTION_SRCS = [
  'ExceptionWithHumanReadableMessage.java',
  'HumanReadableException.java',
  'WatchmanWatcherException.java',
]
java_library(
  name = 'exceptions',
  srcs = EXCEPTION_SRCS,
  deps = [
    '//third-party/java/guava:guava',
    '//third-party/java/jsr:jsr305',
  ],
  visibility = [ 'PUBLIC' ],
)


IO_SRCS = [
  'Ansi.java',
  'AnsiEnvironmentChecking.java',
  'Console.java',
  'CapturingPrintStream.java',
  'DirtyPrintStreamDecorator.java',
  'InputStreamConsumer.java',
  'PkillProcessManager.java',
  'ProcessManager.java',
  'ProcessExecutor.java',
  'ProcessExecutorParams.java',
  'Threads.java',
  'Verbosity.java',
]
java_immutables_library(
  name = 'io',
  srcs = IO_SRCS,
  deps = [
    ':constants',
    ':exceptions',
    '//third-party/java/guava:guava',
    '//third-party/java/jsr:jsr305',
    '//src/com/facebook/buck/io:io',
    '//src/com/facebook/buck/log:log',
    '//src/com/facebook/buck/util/environment:platform',
    '//src/com/facebook/buck/zip:stream',
  ],
  visibility = [ 'PUBLIC' ],
)

NETWORK_SRCS = [
  'BlockingHttpEndpoint.java',
  'HttpResponse.java',
  'HttpEndpoint.java',
]
java_library(
  name = 'network',
  srcs = NETWORK_SRCS,
  deps = [
    ':exceptions',
    '//third-party/java/guava:guava',
    '//third-party/java/jsr:jsr305',
    '//src/com/facebook/buck/log:log',
  ],
  visibility = [ 'PUBLIC' ],
)

java_library(
  name = 'util',
  srcs = glob(
    includes = ['*.java'],
    excludes = CONSTANT_SRCS + EXCEPTION_SRCS + IO_SRCS + NETWORK_SRCS),
  deps = [
    ':constants',
    ':exceptions',
    ':io',
    '//src/com/facebook/buck/io:io',  # While we move classes
    '//src/com/facebook/buck/log:log',
    '//src/com/facebook/buck/timing:timing',
    '//src/com/facebook/buck/zip:stream',
    '//third-party/java/aosp:aosp',
    '//third-party/java/guava:guava',
    '//third-party/java/jackson:jackson-core',
    '//third-party/java/jackson:jackson-databind',
    '//third-party/java/jsr:jsr305',
  ],
  visibility = [
    'PUBLIC',
  ],
)

sh_test(
  name = 'one_project_filesystem_test',
  test = 'one_project_filesystem_test.sh',
)
