| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- #!/usr/bin/env python3
- import asyncio
- import os
- from flipper.app import App
- class Main(App):
- def init(self):
- self.parser.add_argument("watch_list", nargs="+", help="Directories to watch")
- self.is_building = False
- def clearConsole(self):
- os.system("cls" if os.name in ("nt", "dos") else "clear")
- async def rebuild(self, line):
- self.clearConsole()
- self.logger.info(f"Triggered by: {line}")
- proc = await asyncio.create_subprocess_exec("./fbt")
- await proc.wait()
- await asyncio.sleep(1)
- self.is_building = False
- async def run(self):
- proc = await asyncio.create_subprocess_exec(
- "fswatch", *self.args.watch_list, stdout=asyncio.subprocess.PIPE
- )
- while True:
- data = await proc.stdout.readline()
- line = data.decode().strip()
- if not self.is_building:
- self.is_building = True
- asyncio.create_task(self.rebuild(line))
- def call(self):
- try:
- asyncio.run(self.run())
- except KeyboardInterrupt:
- pass
- return 0
- if __name__ == "__main__":
- Main()()
|