listDockerContainers function

Future<List<DockerContainer>> listDockerContainers([
  1. bool listAll = false
])

List containers

Implementation

Future<List<DockerContainer>> listDockerContainers([bool listAll = false])async{
  List<DockerContainer> containers = [];
  List<String> arguments = [
    'ps',
    '--format=json',
  ];
  if(listAll){
    arguments.add("-a");
  }
  ProcessResult result = await Process.run(
    dockerCommand,
    arguments,
    runInShell: true,
  );
  if(result.exitCode == 0){
    String resultAsString = result.stdout;
    resultAsString = resultAsString.replaceAll("}\n{", "}[split_me]{");
    List<String> jsons = resultAsString.split("[split_me]");
    //print(resultAsString);
    for(String json in jsons){
      try{
        Map<String,dynamic> parsedJSON = jsonDecode(json);
        containers.add(DockerContainer(
          command: parsedJSON["Command"],
          createdAt: parsedJSON["CreatedAt"],
          id: parsedJSON["ID"],
          image: parsedJSON["Image"],
          labels: parsedJSON["Labels"],
          localVolumes: parsedJSON["LocalVolumes"],
          mounts: parsedJSON["Mounts"],
          names: parsedJSON["Names"],
          networks: parsedJSON["Networks"],
          ports: parsedJSON["Ports"],
          runningFor: parsedJSON["RunningFor"],
          size: parsedJSON["Size"],
          state: parsedJSON["State"],
          status: parsedJSON["Status"],
        ));
      }catch(error){
        //Do nothing
      }
    }
  }else{
    throw result.stderr;
  }
  return containers;
}